Media Segment

媒体セグメント

仕様書

媒体セグメント (HLS)

[5] 媒体セグメント (Media Segment) は、 URL と、 省略可能なバイト範囲によって指定されます。 >>4

[3] データは HTTP で伝送するべきですが、 一般に資源を要求に応じて転送できる信頼できる (reliable) プロトコルであれば、 どんなものでも使えます。 >>2

[8] 媒体セグメントは、それぞれ固有の整数である媒体連番 (Media Sequence Number) を持ちます。 媒体プレイリストの最初の媒体セグメントの媒体連番は、 0 またはプレイリストで宣言された値です。 その他の媒体セグメントの媒体連番は、 直前の媒体セグメントの媒体連番に 1 加えたものです。 >>4

[7] 媒体セグメントの時間の長さ (duration) は、 媒体プレイリストの EXTINF タグで表されます >>4。

データ

[12] 媒体セグメントは、仕様書で定められたいずれかの媒体形式でなければなりません。 それ以外の形式の輸送は未定義です。 >>4

[13] 媒体形式によっては媒体セグメントの構文解析の前に構文解析器初期化のための共通のバイト列が必要となります。 これを媒体初期化区 (Media Initialization Section) といいます。 媒体初期化区は、 EXT-X-MAP タグで指定できます。 媒体初期化区は標本データを含んではなりません。 >>4

[9] 媒体セグメントは、 前の媒体連番の媒体セグメントの末尾からの続きの符号化ビット列を伝搬しなければなりません。 ここで、タイムスタンプや Continuity Counter のような系列は中断なく連続していなければなりません。 ただし、媒体プレイリストの最初の媒体セグメントと、 非連続と明示的に示された媒体セグメントを除きます。 そうでない非連続性は、 playback error となります。 >>4

[10] 動画を含む媒体セグメントは、 動画の復号器を初期化し媒体セグメントの最終フレームを含む連続したフレーム群を復号するに十分な情報を含むべきです。 媒体セグメント中のすべてのフレームを復号できる十分な情報が媒体セグメントに含まれる場合に、 ネットワーク効率性 (network efficiency) が最適化されます。 >>4

[11] 例えば H.264 動画を含む媒体セグメントは、 IDR (Instantaneous Decoding Refresh) を含むべきです。 最初の IDR までのフレームはダウンロードされても捨てられるかもしれません。 >>4

MPEG2 TS

[14] ISO/IEC 13818 MPEG-2 Transport Stream を使うことができます >>4。

[15] MPEG2 TS の媒体初期化区は、 PAT (Program Association Table) の後に PMT (Program Map Table) を続けたものです。 >>4

[16] Transport Stream Segments は、 MPEG-2 Program を1つだけ含まなければなりません。 Multi-Program Transport Streams の playback は未定義です。 >>4

[17] 各 Transport Stream Segment は、 PAT と PMT を含むか、または EXT-X-MAP タグを持たなければなりません >>4。

[18] 媒体セグメントの最初の2つの Transport Stream パケット群は、 EXT-X-MAP タグがない場合には、 PAT と PMT であるべきです。 >>4

断片化 MPEG4

[19] ISO Base Media File Format の MPEG-4 Fragment を使うことができます >>4。

[20] MPEG-4 Fragment は、 (通常の MPEG-4ファイルのように Movie Box (moov) と Media Data Box (mdat) を持つのではなく、) Movie Fragment Box (moof) と Media Data Box (mdat) を持ちます。 MPEG-4 Fragment の利用においては初期化のため Movie Box (moov) が必要ですが、 Movie Box は標本に依存しないトラックや標本の説明だけを含みます。 >>4

[21] Fragmented MPEG-4 (fMP4) 媒体セグメントは、 ISO Base Media File Format 第3章で定義された「segment」 であって、 ISO Base Media File Format 8.16節の Media Data Box 群の制約を含むものです。 >>4

[22] fMP4 媒体セグメントの媒体初期化区は、 当該媒体セグメントの構文解析器を初期化できる ISO Base Media File です。 次の制約を持ちます。 >>4

[29] Common Media Application Format (CMAF) は、 この要件をすべて満たします。 >>4

[30] fMP4 媒体セグメントにあっては、 Track Fragment Box は Track Fragment Decode Time Box (tfdt) を含まなければなりません。 movie-fragment-relative addressing を使わなければなりません。 external data reference を使ってはなりません。

[31] CMAF Segment はこの要件を満たします >>4。

[32] fMP4 媒体セグメントは、 EXT-X-I-FRAMES-ONLY タグを含むプレイリストにある場合には、 intra-coded frame (I-frame) 標本データに続く Media Data Box の部分を省略できます。 >>4

[33] 媒体プレイリスト中の各 fMP4 媒体セグメントは、 EXT-X-MAP タグを持たなければなりません >>4。

Packed Audio

[34] Packed Audio を使うことができます。 >>4

[35] Packed Audio の媒体セグメントは、 符号化された音声の標本と ID3タグを含み、 最小限の framing を行い、 標本ごとのタイムスタンプは持たないものです。 >>4

[36] ISO/IEC 13818-7 AAC with ADTS framing]]、 MP3、 AC-3、 Enhanced AC-3 に対応しています。 >>4

[38] Packed Audio の媒体セグメントは、 最初の標本のタイムスタンプを ID3 Private frame (PRIV) タグで先頭に含めなければなりません。 その ID3 PRIV所有者識別子 は com.apple.streaming.transportStreamTimestamp で、 ID3 payload は 33ビット MPEG-2 Program Elementary Stream タイムスタンプを大エンディアンの8バイト (上位31ビットは 0) で表したものでなければなりません。 >>4

[39] クライアントは、この ID3タグを持たない Packed Audio 媒体セグメントを再生するべきではありません。 >>4

[37] 媒体初期化区はありません。 >>4

WebVTT

[40] WebVTT により subtitle を伝搬できます >>4。

[41] WebVTT 媒体セグメントは、 WebVTT section です。 媒体セグメントの EXTINF duration で示された期間に表示されることを意図した subtitle cue をすべて含まなければなりません。 >>4

[43] cue の start time offset と end time offset は、 cue time range が媒体セグメントの期間の外側にまたがる場合であっても、 表示時間全体を表すものとしなければなりません。 >>4

[44] 媒体セグメントに cue が含まれなくてもよく、 当該期間に subtitle が表示されないことを表します。 >>4

[42] 媒体初期化区は、 WebVTTヘッダーです。 >>4

[45] WebVTT の媒体セグメントは、 WebVTTヘッダーから始まるか、 EXT-X-MAP タグを持たなければなりません >>4。

[46] WebVTTヘッダーには、 音声や動画と subtitle のタイムスタンプの同期のため、 X-TIMESTAMP-MAP メタデータヘッダーを追加するべきです。 これは WebVTT cue timestamp を変種ストリームの他の Rendition の MPEG-2 (PES) timestamp に写像するものです。 >>4

[47] 構文は X-TIMESTAMP-MAP=LOCAL:<cue time>,MPEGTS:<MPEG-2 time> となります。 >>4

[48] 例えば X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000 のように記述します。 >>4

[49] LOCAL 属性の cue timestamp は、 媒体セグメントの期間の外側であっても構いません。 >>4

[50] クライアントは、 WebVTT の媒体セグメントが X-TIMESTAMP-MAP を持たない場合、 WebVTT cue time 0 が MPEG-2 timestamp 0 に写像されるとしなければなりません。 >>4

[51] クライアントは、タイムスタンプの同期にあたり、 33ビット PES タイムスタンプが wrap されており、 WebVTT cue timestamp は wrap されていない場合を考慮するべきです。 >>4

文脈

[6] 媒体セグメントは、 媒体プレイリストに含まれます >>4。

メモ

[1] Media Source Extensions™ () <https://w3c.github.io/media-source/#media-segment>