gorogoronyan FC2

H.264動画への変換

動画ファイルを H.264 に変換する話です。 動画ファイルを H.264動画に変換するソフトはいろいろあるのだけど、 部分的にうまく動作しなかったり、 別のツールを拾って来いなどたらいまわしに会いやすい。

(追記2015/03) 結局、ffmpeg.exe でコマンドライン処理するのが 一番楽だという結論に落ち着いた・・・。

先に H.264 のプロファイルの話

資料:wikipedia:H.264

H.264 には圧縮の仕方の違いによってベースラインプロファイル (baseline profile), メインプロファイル(main profile), ハイプロファイル(high profile)という3つのプロファイルがあります。 機器によって対応できるプロファイルが異なるので、 H.264 エンコードを行う場合は転送先の機器に応じたプロファイルを 指定することが必要です。

baseline profile

2010年ころのウォークマン(S754/S755/S756など) で動画を見る場合は、baseline profile であることが必要です。 720x480 10Mbps までの H.264ファイルを再生できます。

main profile

iPod や iPad は main profile にも対応すると書いてある。 ウォークマンは baseline と明示してあるものは main profile の H.264 ファイルは再生できない(未対応の形式と表示される)の注意。 2011年秋に発売された Android ウォークマン NW-Z1000シリーズは main profile(720*480 2Mbpsまで)対応とある。 PSP も main profile に対応する。

high profile

同じビットレートであれば high profile が一番きれいです。 ただし、他のプロファイルよりやや後に出てきた規格なので、 昔のソフトやプレーヤーだと対応しないものもそれなりにあるという話。 PS Vitaは high profile に対応とある。

パナソニックの HDD/BDレコーダーは H.264 high profile の MP4ファイルを SDカード経由で再生できる。
DIGA BRT210で遊ぶ

Media Player ClassicVLCメディアプレーヤー や Windows7 の Windows Media Player は H.264 high profile を再生できる。 変わったところでは、Webブラウザの Chrome も H.264 high profile のMP4 ファイルを再生できる。

Chrome15 で H.264 high profile のMP4 ファイルを再生
Chrome15 で H.264 high profile のMP4 ファイルを再生
アスペクト比(縦横比)などで少々難点あり(上の映像も変, 720*480 16:9 映像が 3:2 表示になっている)。また、H.264 でもFLVファイルは再生できない。

VLC プレーヤー 1.1.11Avidemux のH.264 変換機能は、 初期設定では high profile になっている。

VLCメディアプレーヤーの変換機能で変換

VLC 2.x の場合 (2013)

MPEG-2(映像MPEG-2, 音声 AC-3)から MP4(映像H.264, 音声AAC) への変換がうまくできていません(フリーズ状態になるか、 エラーで音声なしの MP4 ファイルができます)。 ということで個人的は VLC2.x は使わず、VLC 1.1.11 を使っています。

VLC 1.1.xの場合 (2012)

設定項目はいろいろあるけど、 他のツールに比べれば一番シンプルでわかりやすい方です。 VLC1.1.11 (2011年秋頃)では H.264 high profile という低レートでも映像がきれいになる方式で圧縮できます。
VLCメディアプレーヤー

VLCプレーヤー1.1.8 の変換ダイアログ
VLCプレーヤー1.1.8 の変換ダイアログ
メディア→変換/保存で出てくるダイアログ

変換したいファイルを追加して変換/保存ボタンを押すと 次のダイアログに移る。

変換ダイアログ
変換ダイアログ

プロファイルで変換先のファイルのフォーマットなど 細かい設定を行います。 デインターレースも必要であればチェックします。 出力ファイル名も指定します。 何も指定せず開始ボタンを押してしまうと、 何もしないままダイアログを終了してしまうので戸惑います。

変換設定のダイアログ
変換設定のダイアログ

プロファイルの横のツールボタンのダイアログ、 ビデオコーデックのタブで表示されます。 映像のビットレートやフレーム数、画面サイズを設定します。

注意:初期設定はハイプロファイルになっている

VLCメディアプレーヤーの H.264 変換機能は初期設定では ハイプロファイル(high profile)になっています。 2010年頃のウォークマンは H.264 ベースラインプロファイル (baseline profile), iPod も古い機種では H.264 メインプロファイル (main profile)にまでしか対応しないため、 そのままでは H.264 high profileを再生できません。

baseline profile や main profile でエンコードする場合は、 一応、ツール(T)→設定(P)のダイアログで x264 の設定を変更できるのだけど、 このあたりはビデオコーデックの仕組みをよく知っている人でないと 理解しにくい複雑なメニューになっています。

設定の表示を「すべて」にして「入力/コーデック」→ 「ビデオコーデック」→「x.264」の項目を開きます。 下の方に H.264 プロファイルの項目があります。

VLCプレーヤー 1.1.8、H.264(x264)の設定画面
VLCプレーヤー 1.1.8、H.264(x264)の設定画面

注意:AACへの変換で音声にボコボコ音が混じる

VLC1.1.8 では AAC 圧縮でときどきに ボコボコしたノイズ音が入るバグがあった。 VLC1.1.11では大分改善している (ヘッドフォンで聴くとまだ微妙に変だけど、 実用上目立たない)。

以下は VLC 1.1.8 の頃の話 (2011)

VLC1.1.8 の 音声変換(MPEG-2 の AC3 → H.264 の AAC) には何か問題があるようで、ときどきボコボコした音声が入ることがある。 レベル調整が変でクリップしているのかね?。 スピーカーだと目立たないのだけどイヤホンだととても目立つ。 面倒だけど一応、音声だけ他のツールで AAC に変換して、 H.264 の MP4 ファイルの音声だけ入れ替えることもできる。

● ffmpeg を使った例
・MPEG-2ファイル src.mpg の音声を 128kbps の AAC に変換して t.m4a で出力

  ffmpeg -i src.mpg -f aac -vn -acodec libaac -ab 128k t.m4a

・H.264ファイル src.mp4 の音声を t.m4a に置き換えて out.mp4 で出力

  ffmpeg -i src.mp4 -i t.m4a -vcodec copy -acodec copy out.mp4 -map 0;1 -map 1

  -map で出力するチャンネルを指定するのがポイント。適当なページで使い方を見て。

Avidemux で変換

動画の簡易編集ソフト Avidemux

こちらも H.264 など他のフォーマットへの変換機能がある。 心臓部のライブラリは VLC や ffmpeg などと同じか?。

このソフトは、iPod や iPhone への変換は あからじめ初期設定が入っているので簡単に行えるけど、 初期設定のない機器向けの変換になるとわかりにくいです。 H.264のプロファイルを明示しておらず、 画面サイズやビットレートなど主要な設定項目が分かりづらいです。 その代わり、ビデオコーデック屋さんがうなるような細かい設定がいっぱいある・・・。

ffmpeg で変換

Wikipedia:ffmpeg

ffmpeg はコマンドラインで処理するツールです。 パラメータが膨大で扱い方がややこしく、慣れが必要です。 また、バージョンの違いによって、 微妙に指定方法や機能動作が変わっていたりするのでややこしい。 AAC のエンコードについてはバージョンの違いで注意が必要です。 ffmpeg.exe を利用した GUI アプリケーションも多く出ている。

どこでも!WALKMAN動画

ベクター:どこでも!WALKMAN動画。
ffmpeg を利用した GUIソフトです。 ウォークマン用に baseline でエンコードします。

携帯電話動画君

窓の杜:携帯動画変換君
こちらも ffmpeg を利用しているツール。

参考リンク

https://www.xucker.jpn.org/keyword/ffmpeg.html
細かい説明がいろいろ。

追記 2015/03

使い方に慣れればコマンドラインで処理できる ffmpeg が 一番便利です。私も最近はすべてこれで間に合わせています。 ffmpeg はバージョンによって音声エンコーダの品質が違うので注意。 特許も絡むため新しいバージョンの方がよくないという話も・・・。 私は 18xxx番台ぐらいのバージョンを使用しています。

m2ts など元のファイルのまま再生できるプレーヤーも増えたので エンコード自体あまりやらなくなった。 PC でエンコードの話も昔話になりつつある・・・。 ffmpeg は動画エンコードよりはコンテナのフォーマット変換で多用している。

inserted by FC2 system