foltiaのトラコン

リクエストがありましたので晒してみます。

5.5G iPod で視聴可能な H264+AAC.MP4 へトラコンするように作成し、現在は iPod touch で視聴しています。iPod touch 向けの調整は行っていません。

音声エンコード

mplayer $inputmpeg2 -vc null -vo null -ao pcm:file=$mp4file.wav:fast
wine neroAacEnc.exe -br 128000 -if $mp4file.wav -of $mp4file.aac
  • libfaac がイマイチらしいので、わざわざ wine 経由で neroAacEnc を利用

mencoder パス1/2共通オプション

if ($aspect == 16) {
        $cropopt = "704:360:6:60";
        $scale = "640:352";
        $frameref = "3";
} else {
        $cropopt = "704:480:6:0";
        $scale = "640:480";
        $frameref = "2";
}

$mencoder_opts = "\
$inputmpeg2 -o $mp4file.264 -passlogfile $mp4file.log \
-of rawvideo -oac copy -ofps 24000/1001 -sws 9 \
-vf pullup,softskip,crop=$cropopt,scale=$scale,hqdn3d=4:3:6,pp=l5,harddup";
  • フィルタは3:2プルダウンされたアニメ専用(CM部分はメタメタになるけど、どうでもいい)
  • $frameref は x264 用の値。5.5G のデコーダーバッファの制限か、640x480 の場合は 2 が限界。iPod touch でどうなのかは未調査。

x264 パス1/2共通オプション

$x264opts = "\
level_idc=30:nocabac:vbv_maxrate=1400:vbv_bufsize=1024:nofast_pskip:bitrate=800:\
keyint=240:keyint_min=1:scenecut=65:qp_step=4:ratetol=1:ssim:\
bframes=0:deblock=0,0:frameref=$frameref:mixed_refs:partitions=all"
  • partitions は all より p4x4 以外全てのほうが良いらしい

ビデオエンコード パス1

mencoder $mencoder_opts -ovc x264 \
  -x264encopts pass=1:turbo=1:$x264opts 2>&1 | grep info >$mp4file.txt
  • SSIM 値をログに残してる(結局ほとんど見てないけど)

ビデオエンコード パス2

mencoder $mencoder_opts -ovc x264 \
  -x264encopts pass=2:me=umh:me_range=32:subq=7:$x264opts 2>&1 | grep info >>$mp4file.txt
  • モーション検索系はパス2でのみ強化

多重化

MP4Box -ipod -fps 23.976025 -add $mp4file.264 -add $mp4file.aac -lang jpn -new $mp4file.orig
  • "-ipod" が 5.5G 向けの UUID ハックをやってくれるはずだが上手く動いてくれなかったので、次の AtomicParsley でも同じことをやってる。最新の MP4Box なら大丈夫かも。

タグ付け

AtomicParsley $mp4file.orig --DeepScan --iPod-uuid 1200 --output $mp4file --stik \"TV Show\" \
  $movietitle $tvshowname $tvepisode $tvepisodenum
  • PodCast を経由せず直接 iTunes に放り込んだときのためにタグ付け。
  • "--DeepScan --iPod-uuid 1200" は 5.5G で VGAH.264 動画を認識させるために必要だった。現行 iPod では必要ないはず。
    • 素の AtomicParsley には iPod 対応の機能はないはず(1年前の話ですが)。よって、doom9 のフォーラム(うろ覚え)に投稿されていた改造版を使っていますが、もう詳細は覚えていません。

ipodtranscode.pl

長々と書きましたが、実際に利用している ipodtranscode.plを置いておきます。こっちを見たほうが確実です。


こんな感じで、30分で200MB弱になり、iPod touch で見る分には相当綺麗です。TV出力すると結構粗が目立ちますが、エンコードの問題というより録画ソースの品質が悪いからでしょう。

単体の ffmpeg は逆テレシネとかのフィルタ回りが弱いので使ってないです。ちなみに、MPEG-2 TS トラコンを考えていたときに見つけた avidemuxmencoder 以上に強力なフィルタを持っているっぽいので、移行を考えています。Windows なら avisynth がいいんでしょうなぁ。

そういえば tsniff 作ってから、まだ1番組も録画してないや……。