アニメをH.264エンコードするフォーマットは何がいいか考える。

アニメをH.264エンコードするフォーマットは何がいいか考える。

TV番組(主にアニメ)を長期間保管するとき、tsファイルのままでは大きすぎるのでエンコードを行います。その設定は様々ありますが、どのフォーマットに統一するのがいいのか見直しました。

いきなり結論

ぐだぐだ書く前に手っ取り早く結論を書きます。

  • 1280×720ドット
  • 23.98fps
  • 1400kbps
  • Video:x264コーデック
  • Audio:AACコーデック

をこれからの自分フォーマットに決めました。

決定理由

まず大前提として自分はそれほど映像についての画質、音質にコダワリがありません。手をかけずにエンコードでき、なおかつ気にならない品質で見れる事が一番重要です。

元映像フォーマット

TV放送をそのまま(TSファイル)で録画すると、おおよそ

  • 1440×1080ドット
  • 30fps
  • 約15Mbps

というフォーマットのファイルができます。30分番組だとサイズにして約3.5GB。ただし、これは通常の実写番組の値であり、テレビ放映アニメに関しては約24fpsというのが通説の様です。

アニメは24fpsでエンコードすべきですか?それとも23.98fpsでエンコードすべきです… – Yahoo!知恵袋

これを見ると「23.98fps」が良いみたい?

思い切ってサイズを切り詰める

これを今までの方法(iPhone用動画に使うFFmpegにはキマリがある | 徒労日記)にあるH.264高画質プロファイルでエンコードすると上記ファイルは約700~800MBになります。あまり小さくなっていない上に、動きの激しい場面で何かインタレースの様な横すじが入る様な気もする。

そこでどんなファイルフォーマットがネットに流通(笑)しているかググってみた。すると多くのファイルは「1280×720、1500kbps」である事が判明。これにすれば大体30分番組で200MB~300MBほどに収まるみたい。

BonTsDemuxへ設定する

「みんなが使っているから」というなんら根拠のない値に決まりましたが、使ってみるとフル画面拡大時の悪化も気にならず好感触。これをTVRockのバッチ処理で実行するため、BonTsDemuxを変更します。

■ファイル”cap_sts-sea”

anime_X264_HIGH_HD720  =-s 1280x720 -aspect 16:9 -threads 0 -r 23.98 -vcodec libx264 -flags +ilme+ildct -top -1 -deinterlace -vpre "c:\bon\BonTsDemux\libx264-hq.ffpreset" -b 1400k -acodec libfaac -ab 128k -ar 48000 -f mp4 -y
anime_X264_HIGH_HD720_EXT    =mp4

2012/08/25 追記
インターレース対応の為、” -flags +ilme+ildct -top -1 -deinterlace”を追加して運用中

■ファイル”libx264-hq.ffpreset”

coder=1
flags=+loop+ilme
cmp=+chroma
partitions=+parti8x8+parti4x4+partp8x8+partb8x8
me_method=umh
subq=8
me_range=16
g=150
keyint_min=25
sc_threshold=40
i_qfactor=0.71
b_strategy=2
qcomp=0.6
qmin=10
qmax=28
qdiff=4
bf=4
refs=4
directpred=3
trellis=1
flags2=+bpyramid+wpred+mixed_refs+dct8x8+fastpskip

BonTsDemuxフォルダにあるcap_sts_sea.iniファイルに”anime_X264_HIGH_HD720″プロファイルを追加しました。冒頭の通り解像度を1280×720へ、ビットレートを無指定から23.98fps固定へ、ビットレートを1400kbpsへ。又、x264の高画質パラメータは複雑なので別ファイル”libx264-hq.ffpreset”に入れて同じフォルダに置きます。

アニメのフレームレートは?

冒頭の「アニメは23.98fps」は本当なのか迷ったので無指定と23.98fps固定の両方でエンコードしてみました。テストファイルはBS-TBSのアニメ「アイドルマスター」をTssplitterで本編のみに分離したもの。

これは無指定。ffmpegの自動判別では30fpsと判定されるようです。

これは-r 23.98で指定したもの。

CM抜いてエンコードしても30fpsになるならアニメも30fpsなんじゃないの??と疑問が沸きます。それともアイマスが30fpsなだけ??ただ実際の映像を見比べても30fpsと24fpsの差はわかりませんでした。また、ファイルサイズが同じなので23.98fpsの方が総コマ数が4/5=1.2倍綺麗なハズ!その点も注意してみましたが、同じく差はわかりませんでした。

つまるところ大した差は出ないので、みんなが使ってるフォーマットにあわせてるのが一番無難だよね!なんという日和った結論。

2 thoughts on “0

  1. はじめまして、こんにちは。
    こちらの設定を使わせてもらったのですが
    動きの激しい場面でインターレースの縞々がでてしまいます。
    もしかしたらcmカットしてないことが原因かもしれません。
    ぶっちーさんがエンコードした動画は問題ないでしょうか?

  2. ▽ぷっちょさん
     自分は普段CMカットなしでそのままエンコードしていますが、
    明らかに縞模様と分かるようなノイズは出ていませんね。
    激しい場面限定という事であれば、データよりも表示の問題な気もします。
    デコーダとプレーヤを換えてみて、変化がでるかで切り分けてみては
    いかがでしょうか。スマフォなどの別プレーヤで判断するのも有りかと。

コメントを残す