將目前目錄頰下的所有mp4檔案進行縮小轉檔,以下為MATLAB程式碼
1: mkdir('out');
2: files = dir('*.mp4');
3: bitrate = 2000;
4: outputFolder = ['out' filesep];
5: c1 = 'ffmpeg -i ';
6: c2 = [' -vf scale=640:480 -threads 0 '];
7: c3 = outputFolder;
8: fid = fopen('batchrun.bat','w');
9: for k=1:length(files)
10: cmd = [c1 files(k).name c2 c3 files(k).name];
11: fprintf(fid, '%s\n', cmd);
12: end
13: fclose(fid);
執行完會產一個批次執行檔案batrun.bat, 內容類似下面這樣:
ffmpeg -i V_20140109_143438.mp4 -vf scale=640:480 -threads 0 out\V_20140109_143438.mp4
ffmpeg -i V_20140109_143552.mp4 -vf scale=640:480 -threads 0 out\V_20140109_143552.mp4
ffmpeg -i V_20140109_143744.mp4 -vf scale=640:480 -threads 0 out\V_20140109_143744.mp4
ffmpeg -i V_20140109_144144.mp4 -vf scale=640:480 -threads 0 out\V_20140109_144144.mp4
執行batchrun.bat開始進行縮小640x480
資料來源:
Scaling (resizing) with ffmpeg
如果單純想要縮放至特定大小(例如320x240), 你可以利用縮放濾波器語法如下:
ffmpeg -i input.avi -vf scale=320:240 output.avi
影像也一樣可以縮放
ffmpeg -i input.jpg -vf scale=320:240 output_320x240.png
結果如下:
如上所示, 顯示比例和原始圖不一樣且似乎被拉伸. 如果我們想要保持顯示比例,
我們只需要寬度或高度宣告其中一個就可以, 而另一個未宣告的定義為-1即可
例如, 這指令可以下:
ffmpeg -i input.jpg -vf scale=320:-1 output_320.png
下圖解析度為320x207, 也就是寬度固定320, 程式會計算以該比例換算對應的高度
兩個實用的參數iw(input width constant)和ih(input height constant)
例如寬度為高度的兩倍, 指令如下:
ffmpeg -i input.jpg -vf scale=iw*2:ih input_double_width.png
處理後結果如下:
有時需要根據實際輸入影像的大小來決定轉出影像的大小
例如, 假設想要將輸入影像固定轉成320x240
ffmpeg -i input.jpg -vf scale="'if(gt(a,4/3),320,-1)':'if(gt(a,4/3),-1,240)'" output_320x240_boxed.png
處理後結果如下:
留言列表