2012-08-28

LINUX - 使用 ffmpeg 在影片加上 padding

要解決「LINUX - 使用 ffmpeg 合併(連接)影片」裡的直/横影片問題
參考 youtube 的做法, 把直的影 scale 成横式的影片, 再利用 padding 的方式補上黑色的底

使用 pad 參數, 將影片置中
語法 : Use -vf pad=width:height:x:y:color instead
ffmpeg -i dunk_src.mov -s 320x180 -vf pad=640:360:0:0:FF0000 -y -acodec libfaac -ab 128k -ar 44100 -vcodec libx264 -vpre medium -vpre main -crf 23 -threads 0 -r 30 -f mp4 dunk_5.mp4
ffmpeg -i dunk.mp4 -s 202x360 -vf pad=640:360:0:0:black -y dunk_9.mp4

執行結果(影片擷圖)

但碰到一個問題
x 的部份只要不是設 0 轉檔時就會發生 Segmentation fault, 但 y 的部份就沒問題
也就是可以把影片上下移, 但無法左右移; 這樣轉出來的結果都會置左
用了官網(http://ffmpeg.org/ffmpeg.html#pad)提供的參數也一樣會 Segmentation fault
pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
花了好多時間試都不行, 這應該是 ffmpeg 的問題吧, 未來有換 ffmpeg 的版本再試了

現在用的 ffmpeg 版本
vweb-11: # ffmpeg -version
ffmpeg version N-34027-g61b1805, Copyright (c) 2000-2011 the FFmpeg developers
  built on Dec  1 2011 14:10:01 with gcc 4.3.2 [gcc-4_3-branch revision 141291]
  configuration: --prefix=/usr/local --libdir=/usr/local/lib64 --shlibdir=/usr/local/lib64 --enable-gpl --enable-shared --enable-libmp3lame --enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libxvid --enable-libx264 --enable-libfaac --enable-postproc --enable-pthreads --disable-ffserver --disable-ffplay --enable-nonfree --enable-version3 --extra-ldflags=-ldl --enable-libvpx --disable-decoder=amrnb
  libavutil    51. 22. 0 / 51. 22. 0
  libavcodec   53. 23. 0 / 53. 23. 0
  libavformat  53. 17. 0 / 53. 17. 0
  libavdevice  53.  4. 0 / 53.  4. 0
  libavfilter   2. 45. 0 /  2. 45. 0
  libswscale    2.  1. 0 /  2.  1. 0
  libpostproc  51.  2. 0 / 51.  2. 0
ffmpeg N-34027-g61b1805
libavutil    51. 22. 0 / 51. 22. 0
libavcodec   53. 23. 0 / 53. 23. 0
libavformat  53. 17. 0 / 53. 17. 0
libavdevice  53.  4. 0 / 53.  4. 0
libavfilter   2. 45. 0 /  2. 45. 0
libswscale    2.  1. 0 /  2.  1. 0
libpostproc  51.  2. 0 / 51.  2. 0


1 則留言:

  1. ffmpeg -i input_320x240.avi -vf pad=:::: output_340x260.avi
    w = Output width
    h = Output height
    x = X co-ordinate of input image in the output image
    y = Y co-ordinate of input image in the output image
    c = Padding color in format. FF0000 = RED, 0000FF = BLUE, etc...

    回覆刪除