Play-yan acceptable format


之前有研究過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

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: