最近因為買了部iPod touch,所以也開始關心透過早前提及的泛用型ffmpeg來轉換可以讓iPhone或iPod touch播放的影片的方法。最初米奇只單純參考壓製PSP HAVC格式影片的方式來設定壓製iPod影片的參數,但結果不是無法播放,就是無法透過iTunes傳到iPod去。查了一下網頁,才知道ffmpeg 在壓製iPod影片時有兩點要注意的:
1) 如果你沒有指定仔細參數的話,ffmpeg是仰賴各codec 函式庫各自的預設值來壓片。很不巧,libx264的預設值其實設得不太好,所以在壓製iPod影片時,就必須加入大量參數來設定。以下是用來壓製可以讓iPod touch播放的最高畫質影片所用的參數:
/usr/bin/ffmpeg -y -i INPUT -vcodec libx264 -s 640x360 -b 2M -flags +loop -cmp +chroma -partitions +parti4x4+partp8x8+partb8x8 -me umh -subq 5 -trellis 1 -refs 1 -coder 0 -me_range 16 -g 300 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 2M -maxrate 2M -bufsize 2.5M -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 16:9 -acodec libfaac -ab 128k "OUTPUT.mp4"
2) 跟壓製flv檔時的情況差不多,ffmpeg 在壓製Low Complexity Version H.264 Baseline Profile 影片時,並沒有按照Apple的標準來加入UUID atom的,這會引致影片無法sync到iPod上去。也跟flv的情況一樣,你可以裝一個名為Atomicparsley的軟件來修正UUIDatom的問題,並且可以用來加插ID3的標籤資料。
安裝Atomicparsley
安裝Atomicparsley好簡單,只要用svn取得Atomicparsley的源碼,按照一般方法來compile就成。
#cd /usr/local/src
#svn co https://atomicparsley.svn.sourceforge.net/svnroot/atomicparsley atomicparsley
#cd atomicparsley/trunk/atomicparsley
#autoconf && autoheader
#./configure
#make
#cp AtomicParsley /usr/bin/
安裝好之後,只要輸入下面的指令就能解決UUIDatom的問題,和加插影片標題:
AtomicParsley "OUTPUT.mp4" --DeepScan --iPod-uuid 1200 --overWrite --title "The title"







