web-dev-qa-db-ja.com

HLS m3u8ファイルで#EXT-X-DISCONTINUITY-SEQUENCEタグはどのように機能しますか

HLSのm3u8ファイルの#EXT-X-DISCONTINUITY-SEQUENCEタグについて調べています。 ( https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.3. )誰かがそれの働き方を説明できますか?

たとえば、m3u8ファイルが以下のようにライブストリーミング用に作成されているとします。2秒後にsegment1.060.ts、file.000.tsがリストから削除され、#EXT-X-DISCONTINUITYタグも削除されます。結局のところ、file.001.tsはリストの最初のメディアセグメントになります。

この状態で、#EXT-X-MEDIA-SEQUENCE#EXT-X-DISCONTINUITY-SEQUENCEにはどのシーケンス番号が必要ですか? #EXT-X-DISCONTINUITYをfile.001.ts行の前にもう一度配置する必要がありますか?

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-MEDIA-SEQUENCE:60
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:2

#EXTINF:0.933600,
segment1.060.ts

#EXT-X-DISCONTINUITY
#EXTINF:0.966911,
file.000.ts

#EXTINF:1.000489,
file.001.ts
4
swj

バリアント間の同期にEXT-X-DISCONTINUITY-SEQUENCEを使用する必要がある理由は、標準で説明されています。

クライアントしてはいけない異なるメディアプレイリストの同じメディアシーケンス番号を持つセグメントに一致するコンテンツが含まれていると想定する

そして

クライアントMUST NOT異なるバリアントストリームまたはレンディションで同じメディアシーケンス番号を持つセグメントは、プレゼンテーション内で同じ位置にあると想定します。プレイリスト[〜#〜] may [〜#〜]独立したメディアシーケンス番号があります。代わりに、クライアント[〜#〜] must [〜#〜]プレイリストタイムライン上の各セグメントの相対位置とその不連続シーケンス番号を使用して、対応するものを見つけますセグメント

あなたの質問に戻る:

  • EXT-X-DISCONTINUITYは、2つの連続セグメント間の不連続性を示します。不連続性はsegment1.060.tsfile.000.tsの間にあります。 file.000.tsfile.001.tsの間に不連続性がないため、タグを再挿入する必要はありません。
  • プレイリストからEXT-X-DISCONTINUITYを削除するたびに、EXT-X-DISCONTINUITY-SEQUENCEをインクリメントする必要があります
  • プレイリストからセグメントを削除するたびに、EXT-X-MEDIA-SEQUENCEをインクリメントする必要があります
9
aergistal