之前有研究過Game Boy Advance上的Play-yan 播放格式是如何?
怎麼轉成他可以支援的MP4檔?
那時候用的是mencoder 的lavc +lavf,這兩個codecs在mencoder上
不知道為什麼會因為mencoder 版本不同而有不穩定的現象
所以我就乾脆換成mencoder 的xvid + faac
整個步驟類似之前的lavc + lavf ,不過video ,audio的global headers是靠MP4Box
廢話就不多說了,先給我現在用的profile (我這個方式是走two pass的)
[play1] vf-pre=scale=-2:160,crop=240:160 ovc=xvid=1 xvidencopts=bitrate=175:turbo=1:max_bframes=0:pass=1 nosound=1 font="Droid Sans Fallback" utf8=1 [play2] vf-pre=scale=-2:160,crop=240:160 vf-add=harddup ovc=xvid=1 xvidencopts=bitrate=175:max_bframes=0:pass=2 oac=faac=1 faacopts=br=128:mpeg=4:object=2 font="Droid Sans Fallback" utf8=1 nosound=1
紅色是等比例縮放以高度為準計算寬度多少,之後再crop成play-yan最佳解析度
藍色是xvid的流量,以play-yan最佳解析度來說 流量超過256沒有太大意義
因為這種解析度影片流量23X就已經是最大了,再下去畫質也不會變好
我是推薦175 ,這仔細看的畫才可看的出來小暇疵
綠色是代表使用faac 的lc (aac相容性最高的格式)
把上面給的profile 的內容存到 ~/.mplayer/mencoder.conf 裡
然後執行下面兩個步驟
mencoder -profile play1 1.avi -o /dev/null
mencoder -profile play2 1.avi -o 01.avi
藍色是上面給的profile 名稱
綠色是1st pass 由於不需要輸出檔案,所以就用這個方式
紅色是2nd pass 輸出的檔案,可以注意到輸出的還是avi 需要靠MP4Box mux成mp4
MP4Box -aviraw audio 01.avi
MP4Box -aviraw video 01.avi
上面這兩個步驟是分別把01.avi的video,audio分離,準備mux成mp4
分離出的檔案有時候MP4Box可能認不出來檔案類別
譬如:aac的audio 分離出來的變成01.raw,這時候必須把它改名成01.aac
然後再進行下面步驟
MP4Box -add 01.m2v:fps=29.976 -add 01.aac 01.mp4
紅色是剛剛分離出來的video
綠色是剛剛分離出來的audio
藍色是影片的FPS,由於MP4Box不能抓影片的FPS是多少 所以要手動給
(可以用影片frames+秒數 手動算,也可以用gnome-mplayer來看)
紅紫色當然就是最終目的mp4
這樣是有點複雜一些,不過這是目前最通用的辦法(各種支援MP4的機器都可以用)
而且這篇提到的軟體都是跨平台的,要用也比較方便
這個需要編譯裡有加 xvid,faac 的mencoder 請透過mediauntu來安裝
(faac由於一些關係,ubuntu裏面的mencoder不會包進來)
MP4Box 則是ubuntu裏面就有了,安裝gpac就可以使用MP4Box
延伸閱讀:http://bbs.wissky.com/t21986-p1-1.html
近期迴響