ALL-IとIPBがわかる
今回の目標はタイトルの2単語が分かるようになることです。この単語はCanon、SONY、Panasonicなどの一眼レフでの比較的に見て、高画質・高圧縮される録画形式においてよく出てくる言葉です。最新のGH5にも使われています。
日本最大級!映像クリエイターの祭典🎊 「VIDEOGRAPHERS TOKYO 2024」 開催&受付開始!
PR:VIDEOGRAPHERS TOKYO 2024
はじめに
今回のALL-IやIPBは、H264でエンコーディングする話に関わってきます。
Adobe Premiere CCやDaVinci Resolve 12.5で動画を書き出す際に、頻繁に使われる可能性が高い圧縮フォーマットは、 H264/Mpeg4 AVC(AVC = Advanced Video Coding)だと思います。これは「.mp4」の拡張子を使って、H264フォーマットでエンコードする、という意味です。4KでH264を使って動画を書き出す際は、別記事を読んで頂ければ幸いです。
4KとH264- 書き出しについて振り返る
参照元:a2e Technology
余談ですが、AVCの中でも、XAVCはSONYが開発したAVC規格で、5.2レベルまで対応した4Kに対応出来るフォーマットです。これまでのSONYはAVCHDというHDフォーマットのものを使っていましたが、4Kに対応出来るようにするためにXAVCを開発しました。
以下の圧縮方式で書き出して、レベルを5.2に設定するとXAVCになります。レベルとはデコーダー(映像プレイヤー)に求められるスペックを制限するものです。5.2レベルは5.1レベルと違い、4K60fpsでのデコーディングが出来るスペックです(GH5対応)。XAVCは業務用(プロ)、民生用(アマ)はXAVC-Sです。
![]()
参照元:ソニー ニュースリリース
キーフレーム間隔
Adobe PremiereでH264(AVC)やH265(HEVC)を使って書き出す際、「キーフレーム間隔」を設定する必要があります。これはDaVinci Resolveでも同じです。「.MOV」フォーマットのH264で書き出す場合、以下のような設定をすることがあります。”キーフレーム”を理解するためには、このALL-IやIPBを理解する必要があります。
![]()
参照元:Adobe Premiere CC
参照元:DaVinci Resolve 12.5
まず、Adobeには写真(下)のように書かれています。
参照元:Adobe
つまり、動画を書き出す際に、どれほど頻繁にキーフレームを入れるかを設定することですね。
また、キーフレームについては、以下のように書かれています。
参照元:Adobe
”キーフレーム = 完全なフレーム”
ということが分かりました。では完全なフレームとは何でしょうか?
本題:GH5で検証する「完全なフレーム」
ALL-IやIPBを理解するために、まずGH5に登場してもらいます。その話の中で完全なフレームに関してもお話しします。
参照元:Luminary Lounge 録画形式スクリーン
写真(下)は、PanasonicのGH5の公式サイトに掲載されているスペックです。見てみると、圧縮(エンコーディング)にはALL-Intra(ALL-I)、Long GOP (IP)、Long GOP(IPB)の3種類があるのがわかります。Long GOPと呼ばれるものは、IPBとIPの2種類。どれも先ほどの"完全なフレーム"が関係しています。
参照元:DC-GH5 特徴
なお、GH5はフォーマットに関しては何も公式には出ていませんが、多分MOV、MP4どちらもH264(AVC)かH265(HEVC)を使っていると思います。つまり撮影時にも決められる圧縮形式には、キーフレーム間隔が関わっているという意味です。
IPB圧縮とは?
まず最初にIPB圧縮形式を話します。IPBとはそれぞれ違うフレームタイプのことで、Iフレーム、Pフレーム、Bフレームというものに分けられます。IPB圧縮は、このすべてのフレームタイプを使った圧縮のことです。IPBの語源は以下の通り。
- Iフレーム = Intra Coded Frame = Key Frame (キーフレーム、またはIntra-Frame Codingと言います)
- Pフレーム = Predicted Frame
- Bフレーム = Bi-directional Predicted Frame
- PBフレーム = Inter-Frame Coding(インターフレーム = 「フレーム間」予測する、という意味です)
圧縮とは、非圧縮の大きなデータを出来るだけ小さなファイルに画質を落とさず変換することです。そのために、この3種類のフレームタイプを使って圧縮していきます。GH5を非圧縮で記録しようとすると、どれほど伝送データがかかるかについては以下の記事からご確認ください。
[GH5の動画はどれくらい圧縮されているか?]
参照元:Panasonic
Mpeg形式やH264タイプの圧縮にはフレームタイプの概念があり、それらがそれぞれ違う役割で圧縮の割合を変えていきます。先ほどのIPBフレームタイプを別の方法で言うと、以下のようになります。
- Iフレーム = フレーム間予測をしないフレーム
- PBフレーム = フレーム間予測をするフレーム(PとBは予測方式が違う)
以下のリンクも参考になりますので、お手隙の際にご確認ください。
外部リンク参照
キーフレームとは?
Iフレーム(アイフレーム) = キーフレーム
Iフレーム = 完全なフレーム
まずIフレームとは完結した1枚の画像だと思ってください。デコーダーが動画をデコーディングする際に、一番最初に探すフレームがこのIフレームです。動画をデコードする際に、キーになるフレームなのでキーフレームと呼ばれるのですね。書き出しの際に決めなければならないキーフレーム間隔とは、この「Iフレームが何フレームに一度生成されるか」を決める設定のことです。
ALL-I = 全てがIフレームということ
ALL-I(オール アイ)圧縮というのは、十分なビットレートが与えられていれば3種類の中では最高品質の圧縮です。そして全フレームが、Iフレーム(キーフレーム)、つまり"完全なフレーム"で出来ています。そのために予測フレームが無く、デコードにかかる時間が少ないために編集に向いています。中間コーデックと呼ばれる編集用のコーデックは、ALL-Iを現状使用しています。
Apple Proresシリーズ、DNxHD(MXF、MOV両方)などは全てALL-Iの記録方式です。
つまりフレーム間予測をしません。
ただALL-Iファイルは、伝送ビットレートが高くなってしまいます。なぜ高いかはPBフレームの説明を聞くと分かりやすいですので、少しお待ちください。ビットレートが高ければ、ストリーミングに影響が出てしまいます。そのため放送用の圧縮方式としてはまだ余り向いていません。中間コーデックと呼ばれる理由は、そこにあります。
Pフレーム = Iフレームに依存したフレーム
Pフレームとは、Iフレームの画像から変化のあった部分(差異)だけを記録したフレームのことです。そのリファレンスとなるIフレームは、エンコードする動画のタイムライン軸上の過去、つまりPフレームよりも以前に存在するIフレームを元に生成されます。(H264フォーマットでは、複数のIフレームを参照にしてPフレームを作ることが可能)
Pフレームは1枚の画像としては成立せず、「動き補償(Motion Compensation)」という技術を使ってデータを間引きます(圧縮します)。これはIフレームと比べてどれほど画像に変化があったかを分析し、その動いた情報だけを記録するというもの。動きの量と動きの方角だけを記録するので、他の部分の情報は欠落しています。イメージ化すると、こうなるそうです。
参照元:Wikipedia
色がついている画像が動きベクトル探索(VE)、矢印が「動きベクトル」(動いた方角 - Motion Vector - MV)
随分と情報が抜け落ちていますが、それが間引く、ということです。こういう風にして記録する情報をIフレームよりも減らしたものがフレーム間予測されたInter-Frameです。そしてIフレームだけをベースにすることで初めて、完全な画像として見ることが出来るフレームタイプがPフレームです。
Pフレームのビットレート < Iフレームのビットレート
Bフレーム = IフレームとPフレームの間に存在しているフレームのこと
H264が得意とするのがWeb動画ですが、You-Tubeなどで4K動画を早くストリーミングするためには、さらに情報を圧縮しなければなりません。そのために必要なのがBフレームです。そのためBフレームでは、過去ー過去、過去ー未来、未来ー未来のうちどれかのIPフレームを動き補償のベースとしてフレーム間予測されたフレームです。つまりPフレームよりも更に間引かれた差異だけを記録したフレームがBフレームです。
- Bフレームのビットレート < Pフレームのビットレート < Iフレームのビットレート
まとめとして
IPB圧縮は、ファイルのサイズを出来るだけ小さくしたままで、画質を出来る限り高くキープするために作られたものです。ただし予測フレーム(PBフレーム)が多いために、どうしてもデコードに時間がかかるために編集には向いていません。最終的なデコードに少し時間がかかりますが、ビットレートが小さいためにストリーミングしやすい圧縮形式になっています。
完全な余談
このPBフレームの「動き補償」の精度の歴史がMPEGの歴史です。ちなみに精度はマクロブロックという特定の画素数で仕切られた範囲(ブロック単位)をベースとして「動き補償(MC)」しますが、そのブロック単位が小さくなっていくことで、精度が高くなります。MPEG2は16X16、MPEG4では8X8、H264タイプ(AVC)では4X4ブロック単位を含む7種類のブロック単位で動き補償する精度が向上したそうです。つまり予測する精度と符号化するアルゴリズムが効率的になっていっているということみたいです。(参照:H264 動画像符号化標準)
GOPとLong GOPとは?
ではGH5の設定に出てくるLong GOP(IP)とLong GOP(IPB)のGOPとは何でしょうか?GOPとは英語で「Group of Pictures」の略で、”ピクチャーの集まり”という意味です。この場合のピクチャーというのはIフレーム、つまりキーフレームを言います。キーフレーム(ピクチャー)を含む複数のフレーム(I・P・Bのいずれか)のグループをGOPと言います。
一つのGOPには一つのIフレームが存在しています。H264やH265では、エンコーディングの際にGOP内で効率的な順番でフレームを並べ替えて書き出すことが出来るために、更にデコードする際の効率が良くなったそうです。
Long GOP = キーフレーム間隔が15フレーム以上のGOP
30fpsで撮影した場合は、0.5秒以上間隔でキーフレームを設定するとLong GOPということです。そしてI・Pフレームだけを含むものをLong GOP(IP)と言い、Bフレームも含むものをLong GOP(IPB)と言います。
Long GOPが編集に向いてないと言いましたが、IPB予測のものが向いてない理由は、Bフレームを含むGOPをエンコーディングする際に、ordering/reorderingという作業があるために、デコードがさらにややこしくなるからだそうです。そしてBフレームが増えるとエラーが増えるそうです。
詳しくは、下記の資料をご覧ください。マニアック過ぎて途中で諦めました(笑)
外部リンク参照:情報源符号化部 H.264 | MPEG-4 AVC 規格の概要
まとめ
以上、ALL-IとIPBの説明についてでした。
まとめると、
- ALL-Iは、十分なビットレートが与えられていればGH5の圧縮形式では最高品質ということ
- ALL-Iは普段使っている中間コーデックに使われている低圧縮形式であること(ProresやDNxHDを含む)
- PBフレームを使った書き出しは、最終的な放送に向いていること
- 編集時の軽さを重視する場合はALL-Iで、ファイルサイズを抑えたい場合はIPB/IP
- キーフレーム間隔(Iフレーム間隔)は狭くなるほど、GOP単位が小さくなり、高画質になること
- キーフレーム間隔が15を超えると、Long GOPと呼ばれること
です。
ただ、あくまでこれは公開されている情報のみに基づいての考察なので、理論上は正しいけれど、実際の撮影では改めて撮影テストをしてみなければいけません。GH4では、理論に反してIPBのほうが良い結果が出たとの情報も頂いております。GH5撮影時に、圧縮形式以外の設定値が違う場合には、影響が出ることがあるかと思います。もしかしたらALL-Iの撮影に必要なビットレート速度で記録出来ないために、画質劣化がIPBと比べても明らかになるほど、各I-Frameのビットレートを落として圧縮されている可能性もあります。その場合、圧縮効率の高いIPBのほうが同じビットレート状況では高画質、という場合もあるかもしれません。ご指摘いただいたニュージーランド在住のカメラマンの佐々木さんに感謝いたします。- 修正 4/8/2017
また新しく以下の様な情報も頂いております。Ota様、有難うございました。「IPBと同レベルの画質を得るには約3倍のビットレートが必要とされているようです。GH3ではIPB 50MbpsでALL-I 72Mbpsであったため、画質がIPBの方が高いという現象が起きていました。」- 修正 4/9/2017
おまけ
ニコ生ブログがGOPについてまとめた記事があるので、時間がある方はそちらも読んでみると良いと思います。割と分かりやすいです!
HIROKI KAMADA|鎌田 啓生@kohfilms
ブランドショートフィルム事業 https://drive.google.com/file/d/1-32dwC7Ota4OeLPAwSijlkJVP-LQ4y5z/view?usp=drive_link 企業の海外展開に特化した映像制作を手がけております...
コメントする