仿射濾波器是一種很好的方法。
下面是一個例子:
echo "
description=Square
frame_rate_num=24
frame_rate_den=1
width=640
height=640
progressive=1
sample_aspect_num=1
sample_aspect_den=1
display_aspect_num=1
display_aspect_den=1
colorspace=708
" > square_profile.txt
melt -profile ./square_profile.txt clip.mp4 -filter affine transition.geometry="0=0,0:1138x640; 720=-498,0:1138x640"
該示例假定:
- clip.mp4是一個16×9源(1920×1080將工作)
- 剪輯是720幀長(例如30秒在24 fps)
讓我爲你分解的例子。
第一部分指定一個640x640的自定義配置文件,它具有正方形的寬高比。您不需要每次創建文件。您可以根據您的規格進行定製。
-profile ./square_profile.txt
這告訴融化使用您的自定義配置文件。
transition.geometry= ...
這就是你如何告訴仿射過渡(仿射過濾器在內部使用)你想要它做什麼。每個幾何條目的第一個數字是它適用的幀號。過濾器將在幀之間插值。幾何條目的語法是:「K = X,Y:WxH」,其中「K」是幾何圖形適用的關鍵幀。
0=0,0:1138x640
第一幾何條目告訴仿射濾波器到圖像縮放到1138x640和所述圖像(0,0)處的位置。
640是輸出高度 - 告訴仿射將原始圖像縮放到640的高度以填充輸出幀。 1138是640像素高的16x9圖像的寬度。 1138比輸出圖像寬。而且由於我們將圖像指定爲0,0,圖像的右側部分將被仿射過濾器剪切掉。
720=-498,0:1138x640
第二幾何條目告訴仿射濾波器,以保持相同的縮放,但是到圖像的-498的x位置進行定位。 489 = 1138 - 640.也就是說,在第一幀中從圖像中裁剪出的像素數量。否定信息表示將圖像定位在輸出框的左側,以便將圖像的左側部分裁剪掉。 「720 =」指定這是第720幀的幾何圖形。
0到720之間的所有幀的x位置將由仿射濾波器自動插值。所以你會看到圖像從左到右滾動。
您可以將更多關鍵幀添加到幾何圖形,以使其在特定位置暫停或使其前後移動。仿射過渡(仿射過濾器使用)也有其他有趣的操作,如鏡像和循環。你可以在這裏看到完整的文檔: http://www.mltframework.org/bin/view/MLT/TransitionAffine#scale
謝謝。我確實閱讀了「完整」文檔。在「幾何」一個只發現: 標題:矩形 類型:幾何 只讀:沒有 要求:沒有 像你這樣的解釋,以什麼參數做。我確實注意到(0,0)將縮放剪輯的左上角放置在左上角(而不是右下角)。 –
好點。我編輯了答案以減少混淆。 – Brian
沒有很多志願者加強文檔。所以有時候需要一些發現。我發現理解這些參數的最簡單方法之一是安裝使用MLT(即KDENLIVE或Shotcut或Flowblade)的開放源代碼視頻編輯器,使用GUI製作您正在查找的效果,然後檢查保存的項目文件。 MLT項目文件是XML,易於閱讀,並可幫助發現參數(如幾何)的工作方式。 – Brian