150413 hb_h264 v2.45 / 音声ビットレートと音質の関係 [ソフトウェア]
HandBrake引数の構文が正しくなかったため修正しました。というか、このバッチを作ってからずっとほったらかしになっていた問題で、なぜ直さなかったのか。まあ、修正後もログを見るにパラメータは変わっていないようなので、今までたまたま意図していた通りに動作していたのでしょう。
hb_h264.batはこれ以上改良の余地がないので、このまま設定が気に入ればこれで打ち止め。Cap2Ass_C4は64ビットコンパイラでビルドしたら動作が多少速くなりそうだけど、現在手元に64ビット環境がないので先送り。
変更点
- hb_h264.bat v2.44to2.45:HandBrake引数の構文の誤りを修正.x264エンコーダで無意味なパラメータを削除.
- RepFName.exe:ReplaceFnameChar.exeをC言語で書き直してVisual C++でビルド。
- RepFName.cpp:そのソースコード
ファイル
使用方法・改版履歴
『H.264自動エンコード・字幕埋め込み実行バッチ』および過去の記事を参照。
音声ビットレートと音質の関係
地デジ放送の音声ビットレートはだいたいAAC 192Kbpsなのに対してHandBrakeは標準設定だと160Kbpsにエンコードされます。192Kbpsと160Kbpsで音声を聞き比べてみました。192Kbpsのほうがいいに決まっているだろうと思いきや、場面によっては192Kbpsでは明らかに不自然な響きで160Kbpsのほうがきれいに聞こえることがありました。エンコードの相性の問題だと思いますが、今まで気にしたことがなかったので新たな発見でした。
結局のところ、音声エンコードの設定は以前と同様で、HandBrakeの標準設定(160Kbps)に任せています。音声ビットレートは-Bスイッチ(注意:英大文字・小文字の区別あり)で指定可能です。
エンコードオプションについての説明
バッチファイルで指定しているエンコードオプションについて簡単に説明。詳細はHandBrakeCLIのドキュメントを参照。
- -e x264
- 動画エンコーダーをH.264ソフトウェアエンコーダーに指定。
- -q 24
- 動画ストリームの品質レベルを24に指定。
- -r 23.976
- 動画フレームレートを23.976フレーム毎秒に指定。
- –cfr
- 動画を固定ビットレートに指定。
- –h264-level=4.0
- H.264プロファイルレベルを4.0に指定。再生機器側が自身の性能で再生可能かどうかの判断に使用。ワークエリアの制限値を宣言するわけなので、動画品質に多少影響しているのかもしれません。
- –h264-profile=high
- H.264エンコードアルゴリズムのセットを指定。
- -a 1
- 1番目の音声ストリームを指定。音声多重放送で副音声を取りたければ、ここで2を設定すればいいのかも(未確認) MediaInfoなどで事前確認すべし。
- -E faac
- 音声エンコーダーをAACに指定。
- -6 stereo
- 音声をステレオチャンネルにミックスダウン
- -D 0 –gain 0
- 音量の増幅を指定。ここでは0に設定しているので特に意味なし。
- -Y 720
- 縦解像度を最大720ピクセルに指定。
- – crop 0:0:0:0
- 上下や左右に出てくる黒帯を入れるかどうかなどに関係すると思いますが、正確なことは忘れました。
- –modulus 8
- 動画解像度を8で割り切れる数に調整、という意味だと思う。
- –loose-anamorphic
- 見た目上の画質を落とさずに画素数を減らして圧縮率を高める「Anamorphic Encoding」を指定。詳しくは過去の記事を参照。