參考 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
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...