H.264動画ファイルの作成<b>とその再生

H.264動画ファイルの作成とその再生
 
一般ユーザーが利用可能となった次世代DVD規格の映像圧縮技術
(2005.02.06作成 05.09.16更新)
 H.264/AVC について 
 H.264は、H.264/AVC、MPEG-4 part10やMPEG4 AVCなどと呼ばれている動画コーデックで、
 MPEG2よりも圧縮率が高く、画質の劣化も少なくDivX/XviDよりも優れていると注目されている。
 H.264は、MPEG系圧縮の最新技術で、通信技術の標準化を担うITU -TとISOが共同で標準化
 を進めている。その特徴は、新しい方式による「データ量の低減」と「ブロックノイズの低減」に
 ある。
 データ圧縮率は、MPEG2の2倍以上、MPEG4の1.5倍以上とされ、理論上は現行のDVDディス
 クの画質を保ちつつ、同じ容量で2倍以上の時間の映像を保存出来るとされている。
 映画やコンサートなどの動画コンテンツやブロードバンド上での本格的な高品質動画配信・放
 送や携帯機器向けのコーデックとして幅広い普及が期待されている。
 * ISO(International Organization for Standardization:国際標準化機構)
 * ITU(International TelecommunicationUnion:国際電気通信連合)
 * MPEG-AVC(Moving Picture Experts Group - Advanced Video Coding)

  Windows環境でH.264/AVC動画ファイルの作成
H.264エンコーダはフリーで開発が行われており、そのインターフェイスは2005年1月の Revision89
頃から Radek Czyz によるVFW(Video for Windows)インターフェイスになり、Windowsユーザーが
手軽に利用出来るようになった。

非常にエンコードしやすく、動作が速い。結果のクオリティもなかなかだ、とのことだが・・・
そこで今回は、
  1)H.264_MP3.avi ファイルは、フロントエンコーダにVirtualDubMod又はTMPGEncPlus
   用いて、
   x264 H.264/AVC VideoCodec(build050204→050224) 又はffdshow(build050122)
   エンコーダーで作成した。
  2)H.264__Vorbis.ogmファイル及びH.264__Vorbis.mkvファイルは、フロントエンコーダに
   VirtualDubModここを参照)を用いて、
   ffdshow(build050122)エンコーダーで作成した。
  <要点1>VirtualDubModをフロントエンコーダとして利用する為には、ffdshowのインストール
    時に、VirtualDubのApplication pluginも追加選択してインストールする必要がある。
   <要点2>出力ファイルのサイズ(解像度)が16の整数倍でないと、エラーとなってしまう。
     例えば、600X400(ピクセル)はエンコード出来ない!

<重要注意>H.264.mpgの作成に、MainConcept社のH.264 Encoder beta2a(デモ版)を試用した
   が、
エンコーダが未インストールの場合はMoonlight H.264Playerが必要。
        http://www.moonlight.co.il/cons_h264player.php(リンク切れ)
   このH.264PlayerはWindowsMediaPlayerの再生不良を起こす。このEncoderはTMPGEnc Plus
   と不具合がある。また、MediaStudioProで作成したMPEG2宣伝メッセージが入る!しかも、
   このEncoderをアンインストールしても残ってしまう!という後遺症がある。

  x264 H.264/AVC Video Codec (Windows用)
1.入手先はここから 本体と日本語化キットをダウンロード。
追記(05.09.16) build050224を使用したが、 build050915(Revision293)はこちらを参照
2.設定:詳細は、ここを参照
Single Pass Bitrate:
  1パスVBR
Single Pass-Quantizer:
 DivXのQB(品質)と同じ。
 数値が大きい程高圧縮。
 20±5 が基準
Multipass:
 FirstPassが1パス目、
 Nth.passで1パス目の
  結果を元にビットレート
  を最適化して配分。
 Upgrade statsfileのチェ
  ックで2パス目の情報
  を元にさらに最適化し
  た3パス目のエンコー
  ドも可能。
<Advancedボタン>
CABAC: Context-based
 Adaptive Binary
 Arithmetic Coding
 の略。普通はON
Deblocking filter:
 +方向にするほど画像
  がノッペリし、ー方向に
  入れると細部を潰さな
  いように圧縮。
 Strengthは強さ、
 Thresholdは閾値。
  通常は0 で良い。
Max B-frames:
 増やすと容量対画質が
 良くなるが、増やし過ぎ
 ると画質低下及び容量
 増になってしまう。
  1〜3迄。通常は 1
B-frames prediction
mode:
 デフォルトでTemporalだ
 が、暗い画面でフェード
 が破綻し易い。
 Spatialが無難か
More Encord Settings:
 I フレームを入れる間隔。
 Maxはデフォルトの250。
 Minはビットレートを十分
 に使って画質を良くする
 目的なら 1〜5に設定

Ratecontrol :動画全体のビットレート配分を設定。 
 Keyframeboost:キーフレームの割り振り。
 B-flames reduction:Bフレームでの圧縮強度。
 Bitrate variability:最大/最小ビットレートの振幅
 通常はデフォルトの設定で問題ないが・・・触りだしたらきりがない!
Macroblock Partitions:検索精度とビットレートの配分を設定。
 十分なビットレートを配分して高画質を狙うなら全部チェック。  

  ffdshow (Windows用)
1.入手先はここから unofficial versionの本体と日本語化キットをダウンロード。
  バージョンはbuild050122を使用したが、現在のところ更新は早い。
<参考>ffdshow使用目的の多くは、CPUへの負担軽減やH.264、AC3などの代替コーデック
  として用いられているが(ここを参照)、エンコーダーとしても利用可能だ!
2.設定:VFW(Video for Windows) Configuration
   現在のところ、2パスでエンコード出来ない。
  モード:1パスー固定ビットレートでレートを指定するか、1パスー量子化で
20±5 を設定。
  ffdshowのエンコーダーについて
    XviDプロジェクトのVFWコードに基づき、そしてffmpegプロジェクトのlibavcodecライブラ
    リーを使用する、圧縮のためのVFW(Video for Windows)とDirectShowコーデック。
  <特徴
- 多様な圧縮方法:
 libavcodecやXviDを使用することによるMPEG-4との互換性(XviD、DivX 4、DivX 5)
 DivX 3、MSMPEG4v2、MSMPEG4v1との互換性
 WMV1/7、WMV2/8、H263、H263+、YV12色空間のHuffYUV、MJPEG、MPEG-1、
 Theora(不安定)、MPEG-2(mpeg2encコード)、Windows Media Video 9
- 全てに共通のエンコードモード:固定ビットレート、固定量子化、固定品質、2パスエンコ
  ーディング(コンプレッサーの特徴に依存します)
- libavcodecやXviDへの動き予測手法の詳細な選択
- Iフレームの最小と最大の間隔
- libavcodecへの、量子化の最小と最大の範囲、量子化のタイプと格子状量子化選択
- libavcodecとXviDへの順応的量子化(マスキング)、単一係数消去法
- 開始と終了のクレジットの選択可能な圧縮
- 2パスエンコーディングの2次パスへの二曲線圧縮アルゴリズム
- 2次パスシミュレーション
- libavcodecの内部2パスコード
- ffdshowイメージフィルターによるイメージの前処理
- エンコーディング中のグラフ :エンコードプログラムがグラフを持っていない場合

- Bフレームのサポート : 1から8までの連続したBフレーム
- MPEG-4のクオーターピクセルと全体的動き補正のサポート
- 選択可能なインターレース化エンコーディング
- 圧縮展開


  Macintosh環境でH.264/AVC動画ファイルの作成
2005年4月30日アップルは、H.264コーデックを搭載したMac用QuickTime7の配布を開始
した。再生のみならフリー版でよいが、エンコードするなら料金(3,400円)を払ってPro版に
する必要がある。
一方、ffmpegXはシェアウェアだが、DVDなどの作成を必要とせずにトランスエンコード目的
のみなら、フリーウェアとして利用可能だ。
そこで今回は、
  1) QuickTime7Proを用いて、H.264_AAC.movないしH.264_AAC.mp4ファイルを作
   成した。
  2) ffmpegX(0.0.9s)のmencoderのH.264コーデックを用いて、H.264_MP3.avi ファイル
   を作成した。
追記:2005/8/27リリーズのffmpegX 0.0.9tでは、H.264.avi形式の出力は廃止された。

  QuickTime7 Pro (Macintosh用
 →QuickTime7に内蔵のH.264コーデックでエンコードする。概略はここを参照
 例えば、500Kbpsの場合は、H.264のデータレート420Kbps, サイズ504x336。AAC32KHz, 64Kbps。
 

  ffmpegX (Macintosh用
 →mencoderのH.264コーデックでトランスエンコードする。概略はここを参照


 H.264/AVC動画ファイルのPCでの再生テスト 
サンプルムービーファイルは、Boxサービス 「H264TestMovies」 から入手。
Windows:Windowsの動画再生ソフト」を参照
  1)H.264のAVI/OGM/MKVファイルは、最近のffdshowやフィルター類を利用すれば多くのプレイヤ
   ーで再生可能となって来た。
  2)H.264_MP3.aviファイルの再生について検討したところ、
   x264 H.264/AVC VideoCodec(build050204及び050224)でエンコードした場合は、下表の如く低ス
   ペックマシーンでは正常に再生出来るプレイヤーが制限される(△印)。Windows2000の低スペック
   マシーンでは、ffdshow(build050122)でエンコードした場合にも制限される(○
印)。

プレイヤー
(バージョン)
 
エンコーダ
WM
Player
(9)
ffds
Real
Player
(10)
ffds
Winamp
(5.05)
ffds
DV
(0.74)
ffds
BS
Player
(1.02)
ffds
Media
unite
(2.101)
ffds
Zoom
Player
(4.03)
ffds
GOM
Player
(1.81)
ffds
MPlayer
Classic
(6.482)
ffds
VLCM
Player
( 0.81)
x264Codec
×
ffdshow
(○)
mencoder
 WMPlayer: Windows Media Player、 Zoom Player: Zoom Player Standard、
 
MPlayerClassic: Media Player Classic、VLCMPlayer: VLC media player for Windows
ffds:再生にはffdshowのH.264デコーダを利用。
◎印:問題なく再生可能。            
△印:低スペックでは映像の一時停止が起こる。
○印:WindowsXPでは問題ないが、Windows2000の低スペックでは映像の一時停止が起こる。
(○)印:コマ落ち再生でガクガク。 
×印:映像の完全停止。
    一方、VLC media playerは自前で再生可能。
    なお、x264 H.264/AVC VideoCodec及びffdshowは頻繁に更新されているので、上記の
     結果は変わっているかも知れない
  3)H.264_AAC.mov/mp4ファイルの再生環境は進展過程にあり、RealPlayer, ZoomPlayerとMedia
     Player Classicは、QuickTime7降がインストールされていれば再生可能。
    VLC media playerv0.82とMPlayerは、自前で再生可能となった。
Macintosh:Macで動画再生」を参照。
  1)H.264_MP3.aviファイルは、VLC media player0.81以降とffmpegX0.0.9s内臓コンポーネントの
   mplayerでのみ再生可能。
   QuickTime7, WindowsMediaPlayer9.0やRealPlayer10では再生出来ず、MPlayerOSX2.0(2b8)
   でも再生不可。
  2)H.264_Vorbis.ogm及びH.264_Vorbis.mkvファイルは、VLC media player0.81以降, MPlayer
   OSX2.02b8で再生可能となった。
  3)H.264_AAC.movファイルは、QuickTimePlayer7ffmpegX0.0.9s内臓コンポーネントのmplayer
   及びVLC media player0.82で再生可能。
   一方、H.264_AAC.mp3QuickTimePlayer7とVLC media player0.82で再生可能となっている。
H.264_AAC.mov圧縮法の比較 → ここから (スッペクに自身あれば、同時比較
 <コメント>高速エンコードは小サイズの場合は目立たないが、少し大きめのサイズになると
    極端に画質が悪くなってしまう。Sorenson Video3圧縮と比べても見劣りする。
    最高品質(複数回実行)は、高速エンコードの約3倍時間はかかるが、確かに画質は保
    たれる。


 H.264/AVCの今後の進展 
1)記録メディア:DVDフォーラムの推奨する「HD DVD」とDVDアライアンスの提唱する「Blu-ray」の両
  陣営がともに、ROM規格としてH.246の採用を予定している。
2)通信メディア:NHKと民放5社は、携帯端末向けの地上デジタル放送のフォーマットに採用し、2005
  年度中にサービスを開始する予定(ここを参照)。株式会社サンストリーミングは、ブロードバンド・ス
  トリーミング放送のフォーマットに採用して試験配信している(ここを参照)。
3)携帯型ゲーム機:ソニーは、次世代携帯型ゲーム機「PSP」にH.264/AVCデコーダを内蔵させる予
  定としている。
4) QuickTime:TigerのiChatAVのみならず、ストリーミング配信での発展も期待されるのだが・・・
  筆者の375〜2,000kbpsの配信検討では、他のストリーミング動画よりも優れているとはいえず、
  Multi-passエンコードが必要で、圧縮に時間がかかり過ぎる 。
5)H.264は、さまざまな音声と組み合わされ色々な動画コンテナに収まり再生されるものだが、現在
 は各社が好き勝手に開発しており再生互換・再生環境が整っていない。しかし、その基本はAAC
 音声と組み合わせてのMP4コンテナのようなのだが・・・?

 H.264/AVCに関する疑問点 
1)x264 H.264/AVC VideoCodec:現時点(build050224)では、Windows Media PlayerやMedia
  Player Classicなどで再生する際に、映像の一時停止が起こってしまった。
  高画質のH.264ファイルを再生するには、それなりのマシンスペックが必要か。
2)圧縮方法:不勉強もあって圧縮設定詳細が不明の為、ビットレートの変更以外は初期設定を使用
  したが、設定値よりもかなり高いビットレートで出力されてしまう(特にffmpegXはかけ離れる)。
3)サンストリーミング社が試験配信しているH.264動画はいかなるフォーマットか?
  同社が提供するS2MPlayer ActiveX Control Moduleがあれば、Explorer上で視聴出来る!
4)ストリーミング配信:今後暫くは、一般ユーザーがWebブラウザ上でストリーミング配信目的で利
  用可能なのは、QuickTime7以降ということになるのだろうか?

| Kenのムービー計画へ |