- MacOSX で即効あるものではありません。Win向け。
- 原文に従ってI/P/B"フレーム"と記述しますが、規格上はフ レームではなく"ピクチャ"です。また、I/P/Bの区分は"スライス"単位です。詳細はこの記事を参照してください。
ISO 14496-10 (ビデオ) - Advanced Video Coding (AVC)
- ISO 14496-10 (ビデオ) - Advanced Video Coding (AVC)
- 概 要
- AVC/H.264 プロファイル
- 符 号化ツール
- CAVLC/CABAC:
- ループ/デブロックフィルタ
- 可変ブロックサイズ/可変マクロブロックパーティション
- 複数参照フレーム
- 適応重み補間予測
- レート歪み最適化(RDO)
- AVC/H.264 とその他のポピュラーなビデオ符号化フォーマットの比較
- 入 手可能な AVC/H.264 コデック
- エンコーダ
- デコーダ(比較)
- Sample content
- AVC/H.264 の問題点
- 相 互運用性の問題
- 速 度の問題
- ハー ドウェアにおけるMPEG-4 AVC/H.264 - HD-DVD/Blu-ray
- そ の他の情報
概 要
MPEG-4規格はAVC/H.264で最新で、技術的にも素晴らしく、state-of-the-artのビデオ符号化フォーマットです。
AVC/H.264 ビデオ符号化規格は2003年に二つの団体で策定されました。ISOのMPEGとITUのVCEG です。ITUは国連の下部組織で、H.263フォー マット(主にビデオ会議のソフトに使われてい ます)を策定した機関です。
AVC/H.264 規格そのものの開発はJVTが 開発にあたりました。これにはMPEG とVCEGの専門家が参加しています。
MPEGサイドから見ればこの規格は MPEG-4 Part 10 (ISO 14496-10)、ITU サイドから見ればH.264 (ITU の文書番号)。 AVC(Advanced Video Coding)という "正式な" タイトルはMPEG側がAACと 並べた時のバランスを考えてつけたものです。
Moving Picture Experts Group(略称MPEG)デジタル動画全般を扱う団体。MPEG1/2/4など。
ITU-Tは 通信関係を扱う団体。H.262/H.263/H.263+など。
両者はタマに共同する。例えばMPEG2 = H.262、MPEG4-AVC = H.264。規格書の中身は同じ、名前だけ違う。
AVC/H.264 プロファイル
AVC/H.264規格は4種類のプロファイルを定義しています。Baseline、Main、 Extendedお よびHigh Profile。この下にさらにレベル(*参考)による分類があります。
- Baseline Profile :I/P-Framesを使っても良い。サポートするのはプログレッシブとCAVLCのみ。
- Extended Profile :I/P/B/SP/SI-Framesを使っても良い。サポートするのはプログレッシブとCAVLCのみ。
- Main Profile :I/P/B-Framesを使っても良い。サポートするのはプログレッシブとインターレースド。CAVLCかCABACが使える。
- High Profile (別名 FRExt) :Main Profileに加えて、8x8イントラ予測、カスタム量子化マトリクス、ロスレスビデオ符号化、yuv formatの拡張 (4:4:4など)
DVD バックアップには、High Profileを次項の符号化ツール(* 要素技術*)と一緒に使うのが一番向いているようです。
MPEG-4 ASP (*試訳)の符号化ツールも読んで下さい。GMC以外はAVCでも使えます。
符 号化ツール
CAVLC/CABAC:
AVC/H.264では、ビットストリームの記述方式(マクロブロック・タイプ、モーションベクトル+参照インデックス、、、)に、 MPEG-4 ASPより先進的なエントロピー符号化ツールを使います。二種類のエントロピー符号化が 定義されています。
- CAVLC(Context-Adaptive Variable Length Coding、コンテクスト適応型可変長符号化方式)
- CABAC (Context-Adaptive Binary Arithmetic Coding 、コンテクスト適応型2値算術符号化方式)
CABACは、AVC/H.264デフォル トのCAVLC (別名UVLC)よりも強力な圧縮方式で、ビットレートを約10~15%節約できると言われています(特に高ビットレート時)。CABACもCAVLCも ロスレスで画質低下が一切ありません。し かしエンコードとデコード速度は低下します。
※ここでロスレスとは、映像情報を間引かずにより手短 かに記述する方法という意味。通常は、量子化などで映像情報を間引く手法も合わせて使うので最終的にはロスレスで はない。
ループ/デブロックフィルタ
Loop/Deblocking Filter:(他に、インライン フィルタ、インラインデブロック、などとも)
プレフィルタ(例えばavisynthが行う エンコード前のフィルタリング)や、ポストプロセス/フィルタ (デコーダが最終出力前に行うもの)に対して、ループフィルタはエンコード工程の中で、各フレー ムがエンコードされた後にかけるものです。
厳密にはエンコードの 後、但し、後続フレームの為の参照フレームとして使われる前 の時点です。これは特に低ビットレート時のブロックノイズ減少に効果があります。しかし、エンコードとデコードは遅くなります。
※MPEG 系は原理的に ブロックノイズが不可避。AVC/H.264ではデブロック機能をエンコードの過程でビデオストリームに埋め込んでしまう手法を選択した。この結果、ビッ トレート不足の症状としてブロックノイズを目にする事はあまり無く、薄い水膜が張ったような映像になる。さらに不足なら画面を水を含ませた刷毛で叩いたよ うに滲む。なお、再生時にデブロックフィルタをかけると(程度はともかく)画質が破綻するとされる。マクロブロックをオーバーラップさせる事で原理的にブ ロックノイズを根絶する手法はH.263+で既に採用実績があるが、AVC/H.264では定義していない。
可変ブロッ クサイズ/可変マクロブロックパーティション
Variable Block Sizes/Macroblock Partitions:
MPEG-4 ASPでは、イ ンター4V、またはインター4MVを使うと、16x16~8x8ピクセルの間でブロックサイズを変える事ができました。
AVC/H.264 では、モーションサーチの精度を決めるマクロブロックの大きさを、4x4ピクセルまで下げる事を提案していま す。これは、8x4のように段階的に下げて行く事もできます。ブロックサイズは映像内容に応じて可変です。
各マクロブロックにどの 程度のブロックサイズを与えれば最も効果的か、その判断 が賢いものが良いエンコーダと呼ばれるでしょ う。
※16x16、 16x8、8x16、8x8、8x4、4x8、4x4の7種。大きさの他にもI, P, B、dct, mv,direct, skipなどの種類がある。i4x4やらb8x8mvやら、、、といった具合。
複数参照フ レーム
Multiple Reference Frames:
MPEG-4 ASPでは、参照フレームにできるのは直前のフレームのみでした。
AVC/H.264のインター・モーション・サーチでは、複数の 候補から参照フレームを選べるようになりました。
つまり、ビデオコデックはASPのようにシンプルに直前フレームを参照するか、そ れとももっと前のフレームを参照するか自分で 決められると言う事です。 例えば、Pフレームは直前のIフレームよりももっと前のフレームを参照できます。
このため、新しいタイプのIフレームが必要になり ました。IDRフレームです。これはIフ レームの一種ですが、後続のフレームに自分よりも前を参照する事を禁止します。複数参照フレームを使うとエンコード、デコード速度は低下し、カットも IDR フレーム単位でしかできなくなります。
※勝手な造語だが、不定距離参照、自由距離参照などと呼ぶ方がしっくりくる。
※MEncoderでは最大15フレームまで指定できるが (frameref)、デコーダによってはあまり大きな値には非対応らしい。MEncoderの文書ではリミテッドアニメに効果有り、実写はそうでもない としている。
※I/IDRの詳細は、「
I/IDRフレームとは」も参照されたい。
適 応重み補間予測
Weighted Prediction:
Weigthed Predictionを使うと参照フレームに「重要性」を付ける事が出来ます。例えば、直前の映像を(ブライトネス方向に) スケーリングできます。
これは特にフェードのある場面、後続の映像が直前の映像によく似ている場合に効果的で す。
明転で明るさが増す場合は除きます。また、フェードを使った場面転 換のような、クロスフェードには効果がありません。
※ 規格上はフレームタイプを限定していないようだが、x264ではBにしか使えない(weight_b)。さ らに今のところb_adaptを使うとBの使用を抑止するため、weght_bの実用性には疑問が残る。
レー ト歪み最適化(RDO)
Rate Distortion Optimisation (RDO):
RDO を使うと、エンコーダは2種類の選択肢があるような場合に、それがいかなる局面であれ、最も効率の良い符号化方式を選べるようになり ます(例えば インター符号化とイントラ符号化のどちらを選ぶか、モーションサーチ方式の選択、などなど)。
RDO はAVC/H.264 仕様書の定義にありません。しかし、この新しいアプローチを最初に導入したのはH.264レファレンスソフトウェア(JM)です。他のコデックもRDOを 組み込む事が出来ます。例えば、既にRDOを装備しているXviDのVHQモードのように。
※JM:AVC/H.264規格のテストベッドとなるソフト。マイクロソフト作成。例えば、weighted predictionなどの自社技術(というかアイデア?)を規格に盛り込みたい場合、JMに実装して効果を証明する。レファレンスソフトがRDO実装と いう事は、多くのコデックが、RDO非搭載で来るとは考えにくく、x264でもbrdoやsubqなど随所に実装されている。
AVC/H.264 とその他のポピュラーなビデオ符号化フォーマットの比較
(by akupenguin(x264開発者の 一人))
- SNOW: ffmpeg プロジェクトが開発している libavcodecファミリーの一つ。原理的にブロック ノイズが発生しない。詳細は「snowとはなんぞや」を参照。
- B-frames:AVC/H.264 のBは双予測。参照は前2枚や後ろ2枚でも良い。x264は前後各1枚のみの双 方向予測の模様。
- Slices Error Resilience:エラー耐性。通信やストリーミングで重要になる。IPB は フレームではなくて「スライス」単位。1枚のピクチャ(フレーム)の中にIスライス、Pスライス、Bスライスが混在している。参考。
- Interlace:06/10月上旬にx264 はインターレース・エンコードに着手した。
- Motion Blick Size:細 かいほ ど細密な動き補償ができる。粉雪や桜吹雪など。もちろん中間サイズが最適なケースもある。Mainの欠点は16x16と4x4だけで、8x8が無い事。
- Motion Search presision:動 き予測 精度。1/4や1/2ピクセル(ペルも同じ)は複数ピクセルの動きを加算して算出する。
- OBMC:マ クロブ ロックを分割する際に、隣接ブロックと端っこが1ピクセル重なる形で分割する。SNOWが使う。詳細は「snowとはなんぞや」を参照。
- Bit Exact Coding:不 明。 ffmpegのヘルプではデバッグ専用となっているが、携帯動画変換君では「うまくいくためのおまじないのようなもの」としている。
- YUV Colour Formats:現 行のTV、DVDのカラーフォーマットはyuv4:2:0。x264はこれしか受け付けない。
入 手可能な AVC/H.264 コデック
現 在入手可能なAVC/H.264の実装は以下の通りです。
x264、Nero、Apple、Sorenson、Elecard、Moonlight、VSS、mpegable、Envivio、Hdot264 (binary)、DSPR、JM (レファレンスソフト) (binary)、ffmpeg、Philips、FastVDO、Skal、Sony、その他いろいろ。
※Mac OSXでエンコードに使えるのはApple-H.264(QuickTime Player Proなど)、x264(GUI)はesperance。x264 (CUI)はMEncoder、x264cli、ffmpeg(他はこれらのGUIラッパー)。
エ ンコーダ
x264:
公 に公開されたものとしては初のHigh Profileエンコーダ。opensource (GPL) (
Source)。
GUI:
VFW:
x264vfw,
ffdshow (output .avi)
(*x264の公式 なvfwサポートは06/10/05のrev581で停止*)MeGUI:Doom9製。AviSynth、MEncoder、 x264cli、Besweet、MP4Boxなどの統合エンコードツール、GUI
(*要.NET*)。
コ マンドライン:
x264は以下の符号化ツール(要素技術)をサポートする。2pass、CABAC、ループフィルタ、複数のB-Frame、Bフレームの参照化、複数参 照、4x4 P-Frame、8x8 B-Frameブロックサイズ、アナモルフィック信号(SAR)、High Profile(8x8サイズのdctとイントラ予測、ロスレス、カスタム量子化マトリクス)。
NeroDigital AVC:
Nero Recode2 出力形式 .mp4
2pass、CABAC、(適応型)ループフィルタ、複 数のB-Frame、複数参照、weighted prediction、8x8 P-Frameブロックサイズ、16x16 B-Frameブロックサイズ、適応量子化。(Psy High
* 意味不明*)
Sorenson:
Apple:
Quicktime 7, 出力形式 .mp4, .3gp and .mov, すっごく遅い。
2pass、最 大1 B-frame、ループフィルタ(0,0)、P8x8,B8x8,I4x4、適応量子化、5スライス。
CABAC無し、 Weighted Pred無し、複数参照無し。
※2pass はできない。5程度のマルチパスになる。マルチCPUの利用効率は良好で、各パス自体はそれなりに早い。ただしCABACや複数参照抜きである事を考える と、すっごく遅い。詳細はtag:QuickTimeおよびthreads=<1-16>参照。
JM:
AVCのレファレンスソフトは v9.3で Main/High Profileに対応した。
B/SP-Frame、CABAC、ループフィルタ、4x4ブロックサ イズ、複数参照、適応量子化、エラー耐性、RDO、ロスレス符号化、カスタム量子化マトリクス、レートコントロール、などなど。
Hdot264:
opensource (GPL) 、レファレンスソフトのVFW版。作 成はdoom9メンバーのcharact3r。非常に古いJM 4.0cベース。
VSS:
VFW Encoderのプレビュー版(使用期限5日間)、JMベース。
Elecard:
公開を停止したもの:
Moonlight:
MainConcept:
v1 encoderで使えた(ウォーターマークが入る)。出力形式は.264、.mpg PS/TS。
1pass (CBR/VBR/固定量子化)、P-Frameの並べ替え、CABAC、ループフィルタ、複数B-Vops、複数参照、4x4 P-Frameサイズ、PAR、RDO。
mpegable:
一時期フリーの VFW Encoderを公開していた(非JMベース)。YV12を扱えない。
1pass (固定量子化)、P-Framesのみ、8x8 P-Frameブロックサイズ、CAVLCのみ、ループフィルタ。
Envivio:
デコーダ(比較)
- ffmpeg: オープンソース(LGPL) ffdshow(VFWやDirectShowデコーダ)、mplayer、VideoLANが 使う。
- サ ポートする機能:Bフレーム、B参照、 CABAC、Loop、Weighted Prediction、High Profile(8x8 dct、8x8イントラ予測、ロスレス
- CoreAVC:
- Apple: QuickTime7内蔵のAVCデコー ダ。.mp4/.movを再生。極めて遅い。
- サ ポートする機能:B-フレーム(1枚のみ)、 CABAC、Loop。
- サポートしない機能:mixed references(複合参照)、 複数Bフレーム、イン ターレース。
- ※手許では素のままでも複数B入りのx264+aac.mp4を再生できた。た だし、b_pyramidやHigh profile非対応なので意味は無い。
- NeroDigital AVC: DierctShowデコーダおよび.mp4パーサ。Recode2に内蔵。
- サ ポートする機能:Main および High Profile
- VSS:VFW デコーダ(5日限定)とDShow Decoder(30日限定)のプレビュー版。
- サ ポートする機能: .avi(fourccはVSSH と H264 )、CABAC、ループフィルタ、B-Frame。
- Elecard:Elecard's MPEG Player と MainConcept's v2 encoderに内蔵。
- Envivio: EnvivioTVに含まれるAVC DirectShowデコーダ。商品。バ−ジョン2.0以降、.mp4コンテナ中のAVCを扱える(最新versionは2-1- 181)
- Philips: DirectShow AVCデコーダ。フリー。AVC Alliance playerに同梱(raw AVC しか扱えない)。
- FastVDO:High Profile DirectShowデコーダ。時間制限あり(1ファイルにつき5分)。
- 公開を停止したもの:(*略*)
Sample content
AVC/H.264 の問題点
相 互運用性の問題
現 時点では、多くの実行環境が異なるコンテナをサポートし ています。
- .mp4
- MPEG-4 規格 (ISO 14496-15) で定義されたAVCのコンテナ。
- 現時点でサポートしているのは Apple、Nero、Sorenson、Envivio、Elecard/Moonlight、x264。
- .mpg PS/TS
- MPEG-2 規格 (ISO 13818-1, AMD3) で定義されたAVCのコンテナ。
- 現時点でサポートしているのは Mainconcept と Elecard/Moonlight。
- .avi
- AVC -in-AVIは誰も規格化していないため、既に相 互運用性の問題がおきています。AVIとVFWの制限(*試訳*)、例えば Bフレームや 自由なフレーム符号化順番の扱いなどは、これら二つのフォーマットに対するハッキングを不可欠なものにしており、その結果、AVCの要素技術を全て実装す るのは困難です。これは再生品質悪 化の可能性があり、少なくとも開発の速度を鈍らせ、相互運用性の問題と競争力低 下の原因となっています。
- 現在AVI は VSS、x264 (mencoder と vfw) でサポートされています(*x264 の公式なvfwサポートは06/10/05のrev581で停止*)。
- .264/.h264
- コ ンテナに入っていないraw bitstream。JM、x264cli、mencoder、mainconceptなどが出力する。
- ※.264、.h264はQuickTime7では開け ない。視聴は MPlayer(要fps指定)、MPlayerOSXなどでできる。mp4boxで.mp4コンテナに入れる事ができる。
速 度の問題
現 在の実装の中には非常に低速なものがあります。
現在、x264とNeroDigitalの AVCエンコーダは良い速度と画質を実現しているように見えますが、AVCが非常に先進的なビデオ符号化形式である事に変わりはなく、古いCPUでの エンコード・デコードは非常に時間のかかるものになるでしょう。
ハー ドウェアにおけるMPEG-4 AVC/H.264 - HD-DVD/Blu-ray
DVD フォーラムとBlu-rayディスクアソシエーションが現在一般的なDVD フォーマットの後継を目指して活動しています。これはいわゆる High Definition コンテンツ (現行DVDより大きな映像サイズ)と呼ばれる物で、名称をHD-DVD と BD-ROMと言います。
HD-DVDでは、 MPEG-4 AVC/H.264は対応必須のビデオコデックです(こ こに書かれている通り)。
Blu-rayも、MPEG-4 AVC/H.264をビデオコデックに含めました(こ こ(pdf直リン)にあるように)。
以上の事から、AVC/H.264 は、現在DVDの中で使われているMPEG-2 のように、広くサポートされる次世代ビデオフォーマットになるものと思われます。
そ の他の情報
MPEG-4 AVC/H.264に関するその他の情報。
__________________
弱者と強者の間にあっては、自由は抑圧の源であり、それを解放するものが法である(ジャン・ジャック・ルソー)
私が自分が何も知ってはいない事を知っている(ソクラテス)
最終更新日:07/01/27, bond
スポンサーサイト