使用先前的 rip2pmp 版本時,利用 libavcodec 來轉檔時,會出現:
videocodec: libavcodec (480x272 fourcc=34363268 [h264]) [libx264 @ 0x957eaf0]broken ffmpeg default settings detected [libx264 @ 0x957eaf0]use an encoding preset (vpre) Could not open codec.這樣子的錯誤訊息,如果直接用 libx264+mencoder 的話,卻不會出錯,可以在PC上撥放,但是放到 PSP 上時,卻顯示不支援的格式。所以這邊出現了兩個問題:
- mencode+lavc+libx264 的搭配
- libx264 轉成 PSP format 的問題
既然問題 1. 是木已成舟,那就轉由問題 2. 來查。
查了 libx264 的 Mailing List 後,才知道 libx264-67 和之後的版本,預設的 encode 參數有不一樣,而先前使用的 script 剛剛好符合 PSP 的 encode 模式,所以算瞎貓碰到死耗子。既然改寫了,就好好把每個參數設定好。
PSP的 x264encopt:
PS3 的 x264encopt:-ovc x264 -x264encopts bitrate=800: global_header: frameref=2: bframes=3: b_adapt: b_pyramid=none: weight_b: me_range=24: subq=7: psy-rd=0.8,0.2: me=umh: level_idc=30: threads=0: partitions=p8x8,b8x8,i4x4: trellis=1: cabac: aq_mode=1: 8x8dct=no: chroma_me: nofast_pskip: nodct_decimate: vbv_maxrate=4000: vbv_bufsize=2500
IPOD 的 x264encopt:-ovc x264 -x264encopts bitrate=1500: global_header: frameref=3: mixed_refs: bframes=3: b_adapt: b_pyramid=none: weight_b: me_range=24: subq=7: psy-rd=0.8,0.2: me=umh: level_idc=41: threads=0: partitions=p8x8,b8x8,i8x8,i4x4: trellis=1: cabac: aq_mode=1: 8x8dct: chroma_me: nofast_pskip: nodct_decimate: vbv_maxrate=2000: vbv_bufsize=2000
最後再放一個新 update 後的 script:rip2pmp-0.5.1-ovc x264 -x264encopts bitrate=800: global_header: frameref=1: mixed_refs: bframes=0: nob_adapt: b_pyramid=none: noweight_b: me_range=16: subq=8: psy-rd=0.8,0.0: me=umh: level_idc=30: threads=0: partitions=p8x8,i4x4: trellis=0: nocabac: aq_mode=1: no8x8dct: chroma_me: nofast_pskip: dct_decimate感謝看官們堅持到最後,我自已也是 ffmpeg, mencoder, x264 交叉看到吐血,至少有弄出來最重要。
2 則留言:
最近剛好在想辦法轉psp上的影片,看到這篇真的節省很多時間。感謝。
感謝你的文章
很久沒有轉檔給 PSP 用了,最近用新版的 libx264 + mencoder 搭配自己以前寫的 script 去轉竟然無法在PSP上播放,用你的設定果真解決了問題。 >"<
張貼留言