エンコード設定の決定版がなかなかない
今はQSVを使ってh264にエンコードし、地デジやBS・CSの解像度に違いがあるため1920x1080に変換し、音声はコピーしてmp4に格納しており、エンコードの設定は以下のようになっていた。
ffmpeg -hwaccel qsv -c:v mpeg2_qsv -i "$RECPATH" -c:v h264_qsv -preset 1 -look_ahead 0 -look_ahead_depth 100 -q:v 21 -c:a copy -map v:0 -map a:0 -vf scale_qsv=w=1920:h=1080
これで7倍速でエンコード出来るし、画質、容量、互換性も申し分ない。本当はHEVCでエンコードしたいが、なぜかWindowsで再生できないためH264に変換している。
しかしながら、放送規格が局によって大きく変わったり、同じ放送局でも番組によって変化するため、非常に難儀している。
まず問題となるのが、AT-Xだ。AT-Xは有料のアニメ専門チャンネルでそれなりの料金を支払って契約しているが、当局の番組のエンコード中、それも特定の限られた番組にのみある問題が起きた。途中でエンコードが終了しているのだ。問題となった番組を再び同じ設定でエンコードしたところ、『Error parsing ADTS frame header!』と表示され、エンコードが途中で強制終了した。そのためGoogle先生の力を借りて解決策を模索したところ、-bsf:a aac_adtstoascと入力すれば問題は解決した。
…かのように思えたが、別の問題が発生した。東名阪以外の田舎に住んでいるアニオタにとっての救世主であるBS11イレブンをエンコードしたところ、音声は格納されているのになぜか音声が再生されない。つまり音無しの動画になってしまったのだ。
私は大阪に住んでいるが、BS11イレブンは画質が良く、アニメのラインナップも充実しているので貴重な存在であることには代わりはなく、対策をする必要が出てきた。
ffmpeg内臓のAACエンコーダーは品質が悪いので、できれば使いたくないが、コピーしてしまうと放送局の放送規格の違いが原因で何かしらの問題が出てきてしまうようなので、仕方なくエンコードすることにした。
『-c:a aac -profile:a aac_low -strict experimental』に書き換えた。これ以上問題が起きないことを祈る。
そういえば、mp4にはopusも格納されるらしい。opusは音質の評判もいいらしいのでこちらに変換しようかとも考えたが、互換性が悪化するためやめておいた。現代においてはh264とaacを超える互換性はおそらくないだろう。MP3にしか対応していない旧時代の遺物を使う気がしないしね。
最終的な設定は
ffmpeg -hwaccel qsv -c:v mpeg2_qsv -i "$RECPATH" -c:v h264_qsv -preset 1 -maxrate 4000k -look_ahead 0 -look_ahead_depth 100 -q:v 21 -c:a aac -profile:a aac_low -strict experimental -b:a 320k -map v:0 -map a:0 -vf scale_qsv=w=1920:h=1080
となった。これで問題が解決してくれれば助かる。あと放送局は本当に放送規格を統一してほしい。
コメント
コメントを投稿