close

將目前目錄頰下的所有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

image

資料來源:

Scaling (resizing) with ffmpeg

  • Up-vote

如果單純想要縮放至特定大小(例如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

處理後結果如下:

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 me1237guy 的頭像
    me1237guy

    天天向上

    me1237guy 發表在 痞客邦 留言(0) 人氣()