KLVメタデータ
Key-Length-Value / ケーエルブイメタデータ
鍵と長さと値の3つ組でデータを並べる符号化の決まりです。SMPTE ST 336として規格化されており、MXFの内部構造や、映像に位置情報などを添えて運ぶメタデータの入れ物として使われます。
- 正式名称
- Key-Length-Value
- 規格
- SMPTE ST 336(Data Encoding Protocol using Key-Length-Value)。2007年版と2017年版がある
- 構造
- 鍵(Key)、長さ(Length)、値(Value)を順に並べる
- 鍵の長さ
- 1、2、4、16バイト。16バイトの鍵はSMPTEのUniversal Labelとして一意に割り当てられる
- 長さの表し方
- 1、2、4バイトの固定長のほか、BER(Basic Encoding Rules)方式
- 値の中身
- 任意のデータ。中にKLVを入れ子にできる
- 採用している団体
- MISB(Motion Imagery Standards Board)がKLVを採用し、映像に付ける情報の項目を定めている
- 主な運び方
- MXFの内部構造そのものがKLV。MPEG-2 TSではSMPTE ST 2038や専用のPIDで運ぶ
MXFの仕様書を読むと、いきなり16バイトの鍵の表が出てきて戸惑います。あの表はKLVという並べ方の決まりに沿ったもので、放送のファイルやストリームの中では、データの意味を鍵で示し、長さを添えて中身を置く形が繰り返し使われています。
KLVが使われる場面
いちばん身近なのはMXFです。MXFファイルは全体がKLVの並びでできており、ヘッダーのメタデータも映像の中身も、鍵と長さと値の組として並んでいます。MediaInfoのようなツールがMXFの中身を読めるのは、この鍵をたどって構造を追えるからです。
映像に情報を添えて運ぶ用途でも使われます。MISB(Motion Imagery Standards Board)はKLVを採用しており、カメラを載せた機体の位置や姿勢、撮影している方向といった情報を、映像のフレームに合わせて流す形を定めています。監視や測量の映像を扱う分野では、映像だけを見ても後から役に立たないため、こうした情報を同じストリームに同期させて残します。
放送・配信の伝送路でも登場します。SDIのVANCにKLVを載せ、エンコーダーがSMPTE ST 2038としてTSに移し、配信側で取り出すという流れです。AWS Elemental MediaLiveはST 2038からKLVを取り出し、出力のTSでは指定したPIDへ通す設定を持っています。MediaPackageへの出力では既定でPID 501に入ります。
KLVの仕組み
並べ方は名前の通りです。先頭に鍵を置いてそのデータが何かを示し、続く長さでその後ろに何バイト続くかを示し、最後に値そのものを置きます。読む側は鍵を見て「知らない鍵だ」と判断したら、長さの分だけ読み飛ばして次へ進めます。理解できない項目が混じっていても壊れないのはこの性質によるものです。
鍵の長さは1、2、4、16バイトのいずれかで、16バイトのものはSMPTEが管理するUniversal Labelとして世界で一意に割り当てられます。どの団体のどの規格の、どの項目かまでが鍵の中に畳み込まれているので、別々の組織が定めた項目が同じストリームに混ざっても衝突しません。
長さの表し方には固定長のほかBERという方式があります。先頭のバイトの最上位ビットが立っていなければ、その1バイトが0から127までの長さを表します。ビットが立っていれば、残りの7ビットが「長さを表すバイトが何バイト続くか」を示します。短いデータは1バイトで済ませ、長いデータも同じ仕組みで扱えるようにした形です。値の中にさらにKLVを入れ子にできるため、項目のまとまりを作れます。
KLVで間違えやすい点
- 鍵の一覧を持っていないと中身を読めない。鍵はバイト列でしかないので、どの規格の項目かを示す登録簿と突き合わせる必要がある
- 汎用の変換ソフトでは残らない。TSからMP4へ詰め替えるような処理では、映像と音声だけが移ってKLVは落ちる
- ST 2038のストリームとKLVを混同する。2038は運び方、KLVは中身の並べ方で、層が違う
- タイムコードとの対応を残していない。フレームに同期した情報なので、後から使うには時刻の基準もあわせて保管する
よくある質問
KLVとは何の略ですか
Key-Length-Valueの頭文字です。鍵、長さ、値の順に並べるという構造そのものが名前になっています。SMPTE ST 336がこの符号化の方法を定めています。
MXFとKLVはどういう関係ですか
MXFファイルの内部構造がKLVの並びでできています。ヘッダーのメタデータも、映像や音声の中身を包む単位も、鍵と長さと値の組です。MXFを読むソフトは、この鍵をたどってファイルの構造を組み立てています。
KLVメタデータはTSの中でどう運ばれますか
SDIのVANCに載っていたものをSMPTE ST 2038としてTSに入れる方法と、KLV専用のPIDを立てて流す方法があります。AWS Elemental MediaLiveの場合、入力のST 2038から取り出したKLVを、出力側で指定したPIDに通す設定になっています。
似ている形式との違い
| 名前 | 主に使う場面 | KLVメタデータとの違い |
|---|---|---|
| XML | 設定や制作データの受け渡し | 人が読める文字の形式。KLVはバイト列で、映像に同期して少しずつ流す用途に向く |
| SMPTE ST 2038 | TSでの補助データ伝送 | ANCパケットをTSに運ぶ規格。KLVはその中身として運ばれる側のデータ形式 |
| VANC | SDIの補助データ区間 | SDIの中でKLVを載せる場所。KLVはそこに入るデータの並べ方 |
| XMP | ファイルに付ける制作情報 | 静止画や文書のメタデータの規格。KLVは映像のフレームに沿って時間とともに変わる情報を扱う |
関連する用語
最終更新