
縁側をご利用いただく際のルール&マナー集を用意いたしました
ユーザーの皆様に楽しくご参加いただけるよう、主に投稿時の注意点などをまとめています。
ご投稿の前には必ずご一読をお願いいたします。詳しくはこちら⇒「縁側 ルール&マナー」
紹介文
MPEG-1/2とH.264に関連する知識は多少ありますが、まだ完全というわけではありません。
技術交流できる場として設置いたしました。
このページのスレッド一覧

番号![]() |
タイトル | 返信数 | 最終投稿日時![]() |
---|---|---|---|
[1219-6] | H.264 の仕様書 | 0 | 2013年5月15日 00:32 |
[1219-5] | スキップマクロブロックとビットレートとレート制御 | 0 | 2013年3月21日 00:02 |
[1219-4] | AACの種類 | 0 | 2013年2月10日 18:18 |
[1219-3] | ストリームとコンテナ | 0 | 2013年1月20日 23:38 |
[1219-2] | 豆知識:H.264のプロファイル | 0 | 2013年1月12日 11:30 |
[1219-1] | 豆知識:H.264のレベル | 0 | 2013年1月10日 22:41 |

前のページへ|次のページへ

http://www.itu.int/rec/T-REC-H.264/en
ここにあります。
クセのある英語ですが、慣れればさくさくと読めます。
一読すると、なるほどなぁ、といろいろなことがストンと落ちてきます。お勧めです。
2013/5/15 00:32 [1219-6]



H.264にはスキップマクロブロックという素敵な機能があります。
このスキップマクロブロックというのは「このマクロブロックは前のフレームと同じなのでエンコードしません」というマーカーです。
実際にはまとめてn個同じ、というように書きます。
さてここで、スライドショーを考えてみましょう。
例えば、表示2.5秒、トランジション0.5秒のスライドショーを作った場合、2秒同じ絵が表示されます。
この2秒のビット消費ですが、先頭のフレームだけドカンと消費し残りのフレームは全部スキップマクロブロックで記述するためほぼ0になります。
ここで、CBR を考えてみましょう。
この場合、1秒の使用ビットが同じでなければ *ならない* ため、最初のフレームでドカンと消費、1秒近くレート0、次のフレームもほぼ0なんですがパディングがドカンと出力され秒間ビット消費量を均します。
つまり、ただパディングがドカンと出力されるだけなのでスライドショーでは CBR は画質向上 *しません*
VBR でサイズが合わない理由なのですが、1-Pass VBR の場合、最初のフレームにビットを大量に与えてしまうと、以降のフレームで必要なビットが足りなくなるかもしれないということを考慮して、極端に大きなビットを割り当てないようにできています。人間はデータを見ていますから知っていますが、エンコーダーはデータを見ていないため順当な処理です。
これをどうにかするには 2-Pass VBR でエンコーダーに一度データを *見せて* レートの割り振りを適正化してやる必要があります。
また 2-Pass VBR でも予想サイズに届かないケースがあります。
この場合は VBV の制限から瞬間ビット消費量の上限が制約されるため使用ビットが吹き上がらないためです。
この瞬間使用ビットの上限が何故あるのかといえば、例えば光学メディアの物理読み取り速度を超えないように制限し、読めないデータになるのを防ぐ、というような目的があります。
よって 2-Pass でもサイズが届かない場合は、すでに最高画質でエンコードしてあるけれどもハードウェアの制約上どうにもなりませんでした、という意味だと思っていればだいたいあっています。
2013/3/21 00:02 [1219-5]



なんかいっぱいありますね。
MPEG-2 Main Profile
MPEG-2 Low Complexity
MPEG-2 High-Efficiency v1
MPEG-2 High-Efficiency v2
MPEG-4 Main Profile
MPEG-4 Low Complexity
MPEG-4 High-Efficiency v1
MPEG-4 High-Efficiency v2
ざっとこんなところですかね?
MPEG-2 と MPEG-4 の違いはツールの使用可能範囲が多少異なります。MPEG-4 のほうが少ないツールに制限されます。
Main / Low Complexity は使えるツールの制限が違います。Mainのほうがツールの範囲が多く、より高音質ということになりますが、計算が複雑になるため一般には使われていないですね。
High-Efficiency v1 は、サンプリングレートを半分にしてエンコードし、高音成分をパラメーターで表記してエンコード、デコード時に合成して高音質化を目指すフォーマットです。
High-Efficiency v1 をサポートしないプレーヤーでもサンプリングレートが半分になったデータはデコードできますが、当然音質は悪くなります。
High-Efficiency v2 は更にモノラルデータとしてエンコードし、ステレオ化するためのパラメーターを別にエンコードする方式です。
High-Efficiency v1 をサポートするプレーヤーではモノラルとして再生され、High-Efficiency v1 をサポートしないプレイヤーでは更に音質が下がって再生されます。
特性上High-Efficiency v2 はステレオデータにのみ適用できます。
High-Efficiency v1 はマルチチャンネルもサポートします。
さすがに High-Efficiency v2 までやるとかなり違和感のあるデータになります。
で、どれを使えばいいのかというと MPEG-4 AAC Low Complexity です。一般的なプレイヤーでサポートされていますので、これを使っていれば再生問題はほぼ発生しません。
(そもそも AAC がデコードできない機器は除きます)
ちなみに MPEG-2 / 4 AAC LC はヘッダーのビットが違うだけなのでビットを書き換えれば大丈夫などという情報がありますが、厳密には正しくありません。
ほとんどの場合は問題がありませんが、前述の通り一部互換性の無いツールがあります。その場合、デコーダーがハングアップしたりしますので「再エンコードしたくないのでヘッダ書き換えてMP4にマルチプレクスしちゃえ」などという危険なことはやらないようにしてください。
2013/2/10 18:18 [1219-4]



ストリームは映像、もしくは音声のデータの塊です。
映像なら映像だけ、音声なら音声だけが入っています。
しかも複数の映像が入っているわけではないです。
例外はH.264のMVC/SVCプロファイル。マルチビュー・ステレオビュー用のプロファイルです。
動画として楽しむには映像と音声が揃っていないとなかなか難しいですよね?
ですので、揃えるためにコンテナと言われるものに詰め込みます。
コンテナはMP4や、MPEG-2 Transport などがあります。
コンテナは複数の映像・音声を詰め込んで同期をとるためにあります。
2013/1/20 23:38 [1219-3]



プロファイルは、使える機能をグルーピングしたものになります。
一般的には
Baseline
Main
High
があります。
Baseline→Main→Highと使える機能が増えます。
例外はBaselineのFMO/ASOのみです。これについては私のブログでちょっとだけ書きました。
これも無意味にHighにしている人がいたりしますが、対応機器にあわせておかないとあとで泣きを見ます。
ただ、Highのほうが使える機能が多い分、画質に良い影響を与えます。その分エンコードやデコードの負荷が上がるようになっています。
だからこそ難しいわけですが……
2013/1/12 11:30 [1219-2]


