PLAYSTATION3はHDTVサイズのH.264/AVCを再生でき、
ムービープレイヤーとして最適です。
そこで、PV3でキャプチャしたデータをPS3で再生できるH.264/AVCのエンコード方法を記します。
使うツールはAviSynth、x264、mp4box、avs2wav、waveflt2、neroAacEncです。
ただし、私が個人的に調べたことなので、間違い等があるかもしれませんので、あらかじめご了承ください。
基本的に2010年4月10日現在の情報で、x264 rev.1523を基本にしています。
まず始めに、Aviutilを使って、aupファイルを作成します。 24fps化、1440x1080への縮小(Lanczos3フィルタ)、編集などの事前処理をaviutl上で行います。
エンコードを行うバッチファイルです。
@echo off rem ############# rem # File Name # rem ############# set AUP=E:\DATA\Intensity\sample.aup set OUT=OUT\BSD - sample - 第01話 - 1920x1080-24p - 12Mbps.mp4 set LOG="%OUT%.log" set STAT="%OUT%.status" set OUT="%OUT%" set IN=tmp\tmp.avs set AVIUTLVFP=D:\PROGRAMS\AviUtl\aviutl.vfp set X264=x264.exe rem ################# rem # BITRATE(kbps) # rem ################# set BITRATE=12000 rem ################################################### rem # MAX BITRATE(20000=for PS3 , 15000= for Xbox360) # rem ################################################### set MAX_BITRATE=15000 rem ###################### rem # SOUND BITRATE(bps) # rem ###################### set SOUND_BITRATE=256000 rem ############################## rem # FPS=59.94 , 29.97 , 23.976 # rem ############################## set FPS=23.976 rem #################################### rem # SPEED=NORMAL , FAST , MID , SLOW # rem #################################### set SPEED=SLOW rem ####################################### rem # LEVEL=4 , 4.2 (4.2 = only 1080/60p) # rem ####################################### set LEVEL=4 rem ############################ rem # INTERLACE=0(off) , 1(on) # rem ############################ set INTERLACE=0 rem ####################################################### rem # ASPECT=1280x720 , 1280x1080 , 1440x1080 , 1920x1080 # rem ####################################################### set ASPECT=1920x1080 rem ################################################### rem # PROFILE=HIGH(High Profile) , MAIN(Main Profile) # rem ################################################### set PROFILE=NORMAL rem ############################################### rem # VOLUME_ADJUST=0(no adjust) , 1(-2dB adjust) # rem ############################################### set VOLUME_ADJUST=0 rem ##################### rem # Encode Pass=1 , 2 # rem ##################### set PASS=2 rem ############################## rem # Thread Number=1 , 2 , .... # rem ############################## set THREAD=4 rem ############### rem # DISPLAY_OPT # rem ############### set DISPLAY_OPT=--quiet rem ################## SPEED option ########################### set SPEED_OPT=--threads %THREAD% --ref 2 --trellis 2 if "%SPEED%" == "FAST" set SPEED_OPT=--threads %THREAD% --me dia --ref 1 --subme 0 --no-cabac --no-chroma-me --b-adapt 0 if "%SPEED%" == "MID" set SPEED_OPT=--threads %THREAD% --me umh --ref 3 --subme 7 --no-fast-pskip --no-dct-decimate --weightb --trellis 2 --b-adapt 1 if "%SPEED%" == "SLOW" set SPEED_OPT=--threads %THREAD% --me umh --ref 3 --subme 9 --no-fast-pskip --no-dct-decimate --weightb --trellis 2 --b-adapt 2 rem ################## LEVEL option ########################### set LEVEL_OPT=-v -B %BITRATE% --vbv-maxrate %MAX_BITRATE% --vbv-bufsize=25000 --fps %FPS% --level 4 --bframes 3 --b-pyramid strict --mixed-refs --keyint 300 --min-keyint 30 %ENCODE_OPT% if "%LEVEL%" == "4.2" set LEVEL_OPT=-v -B %BITRATE% --vbv-maxrate %MAX_BITRATE% --vbv-bufsize=25000 --fps %FPS% --level 4.2 --bframes 1 --b-pyramid strict --mixed-refs --keyint 300 --min-keyint 30 %ENCODE_OPT% rem ################## INTERLACE option ####################### set INT_OPT= if "%INTERLACE%" == "1" set INT_OPT=--tff --nal-hrd vbr rem ################## VOLUME option ########################## set VOLUME_OPT= if "%VOLUME_ADJUST%" == "1" set VOLUME_OPT=-normal -2.0 rem ################## PROFILE option ########################## set PROFILE_OPT= if "%PROFILE%" == "HIGH" set PROFILE_OPT=--8x8dct --partitions p8x8,b8x8,i8x8,i4x4 rem ################## x264 option ############################ set OPTION=%INT_OPT% %ENCODE_OPT% %SPEED_OPT% %PROFILE_OPT% %LEVEL_OPT% %DISPLAY_OPT% rem ################## Aspect ################################# set PAR=1:1 if "%ASPECT%" == "1280x1080" set PAR=3:2 if "%ASPECT%" == "1440x1080" set PAR=4:3 rem ################## start ################################## echo ====================== start of %OUT% ====================== >> %LOG% echo ==== x264 option ==== >> %LOG% echo %OPTION% >> %LOG% rem ################## make avs file ##################### mkdir tmp mkdir out echo LoadVFAPIPlugin( "%AVIUTLVFP%", "AUPSource" )>%IN% echo AUPSource( "%AUP%" )>>%IN% echo FlipVertical()>>%IN% echo ConvertToYV12()>>%IN% if "%PASS%" == "2" goto PASS2 rem ################## x264(1pass) ##################### echo ==== 1pass start ==== >> %LOG% time /t >> %LOG% %X264% %OPTION% -o tmp\tmp.264 %IN% echo ==== 1pass end ==== >> %LOG% time /t >> %LOG% goto PASS_END :PASS2 rem ################## x264(2pass) ##################### echo ==== 1pass start ==== >> %LOG% time /t >> %LOG% %X264% -p 1 --stats %STAT% %OPTION% -o NUL %IN% echo ==== 2pass start ==== >> %LOG% time /t >> %LOG% %X264% -p 2 --stats %STAT% %OPTION% -o tmp\tmp.264 %IN% echo ==== 2pass end ==== >> %LOG% time /t >> %LOG% :PASS_END rem ################## sound ############################# avs2wav %IN% tmp\tmp.wav waveflt2.exe %VOLUME_OPT% tmp\tmp.wav tmp\tmp2.wav neroAacEnc.exe -br %SOUND_BITRATE% -2pass -if tmp\tmp2.wav -of tmp\tmp.m4a rem ################## make mp4 file ##################### mp4box -fps %FPS% -new %OUT% -add tmp\tmp.264 -add tmp\tmp.m4a mp4box -par 1=%PAR% %OUT% mp4box -info %OUT% mp4box -info 1 %OUT% mp4box -info 2 %OUT% rem #### LOG #### echo ==== info ==== >> %LOG% mp4box -info %OUT% >> %LOG% mp4box -info 1 %OUT% >> %LOG% mp4box -info 2 %OUT% >> %LOG% echo ==== all end ==== >> %LOG% time /t >> %LOG% rem ################## end ############################### echo ====================== end of %OUT% ====================== >> %LOG%先頭部分を修正するだけで使い回しが出来ます。 なお、事前に「tmp」、「out」のディレクトリを作ってください。
連続でエンコードを行うためのバッチファイルです。
@echo off rem ############################################## call bat\test_01.bat call bat\test_02.bat call bat\test_03.bat rem ############################################## echo ============= shutdown ============= shutdown -s -t 60 -c "x264エンコードが完了したのでshutdownします" rem ##############################################
エンコード用バッチファイルを連続で実行した後、マシンの電源を落とします。
PLAYSTATION3はver 1.80でHigh Profileに対応したようです。
Levelに関しては基本的にLevel 4です。
ただし、MPEG4/AVCの規格として、1080/60pはLevel4では実現できなくて、Level4.2になります。
そこで、1080/60pの時だけ、Level4.2を指定するようにしています。
これでも再生してくれます。
昔のPLAYSTATION3では
「--no-b-adapt」を付けないと、ほぼ途中で止まりましたが、いまは大丈夫のようです。
そのため、いまは「--b-adapt 2 --bframes 3」でも問題ないようです。
なお、PLAYSTATION3では、処理が間に合わなくなった時のビットレート表示はあてになりません。
コマ落ち時のビットレート表示は考慮されていないようで、デタラメな値が表示されるようです。
あと、上限は20Mbpsにするのが無難です。
昔のx264でエンコードしたインタレースデータは、デコードは出来ましたが、正しくでインタレース処理が出来ませんでした。
しかし、x264 rev.2510から「--tff --nal-hrd vbr」で正しくデインターレースできるデータを出力できるようになりました。
mp4ファイルをBlu-rayのBDMV形式にする場合は以下の手順でBDMVに出来ます。
neroAacDec -if foo.mp4 -of foo.wavとLPCMのWAVに変換し、 EncWAVtoAC3で、DOLBY DIGITALに変換して、その音声を使ってmkvファイルにします。 (BDMVではAACは使えません)
このページで使っているプログラムのダウンロードサイト一覧です。
このページを作成する上で参考にしたものは以下のページ、書籍です。