断片化されたmp4の理解は、それが単一のファイルだということですが、内部的に断片として構成されています。誰かがDASHの.mpdファイルでこれらのフラグメントをどのように扱うことができるのかを私に説明することはできますか?私が見た.mpdファイルは、別々のURLでさまざまなセグメントに対応しているようですが、フラグメント化されたmp4は、同じURLにバイトオフセットでアドレス指定する必要があります。ブラウザは、どのような時がどのバイト範囲に対応しているかをどのように知っていますか?MPEG-DASHと断片化されたmp4
答えて
MPEG DASHのメインプロファイルにはexample mpdがあります。このmpdで記述されたmp4ファイルは断片化したmp4です。ご覧のとおり:
<SegmentURL media="bunny_15s_200kbit/bunny_200kbit_dashNonSeg.mp4" mediaRange="868-347185"/>
<SegmentURL media="bunny_15s_200kbit/bunny_200kbit_dashNonSeg.mp4" mediaRange="347186-664464"/>
<SegmentURL>
要素では、フラグメントは、同じURLに対処することができ、あなたは@mediaRange
属性でバイトオフセットを見つけることができます。
サーバーには、moofボックスのファイルをスキャンすることによって作成できるマニフェストがあります。 moof + mdat = 1つのフラグメント。フラグメントの要求が行われると、ファイルオフセットがマニフェストで検索され、正しいボックスが返されます。
DASHのonDemandプロファイルの場合は、* .mpd(マニフェスト)を作成し、どのバイト範囲がセグメントにマップするかを指定するのがDASHパッケージャの仕事です(断片の数である可能性があります)。クライアントは* .mpdをロードし、マニフェスト内の範囲に対してhttpバイトの範囲要求を行います。 DASHの「ライブ」プロファイルは、各セグメントにURLがあるという点でスムーズなストリーミングに似ています。
mp4コンテナ内のフラグメントの位置を調べる必要がある場合、私はこの情報がセグメント 'sidx'ボックスにあると考えます。
.mpdファイルには、上記のようなバイト範囲のセグメントのリストがあります。セグメントにアクセスするには、各行のmediarange属性を解析し、setRequestHeaderを持つXHRなどでバイト範囲を指定する必要があります。この方法では、サーバーコンポーネントは必要ありません。ここで私が使用してきたいくつかのコードがあります:
var xhr = new XMLHttpRequest();
// Range is in format of 1234-34567
// url is the .mp4 file path
if (range || url) { // make sure we've got content in our params
xhr.open('GET', url);
xhr.setRequestHeader("Range", "bytes=" + range);
xhr.send();
xhr.responseType = 'arraybuffer';
try {
// watch the ready state
xhr.addEventListener("readystatechange", function() {
if (xhr.readyState == 4) { //wait for video to load
// add response to buffer
try {
// videoSource is a sourceBuffer on your mediaSource object.
videoSource.appendBuffer(new Uint8Array(xhr.response));
videoSource.onreadystatechange = function() {
if (videoSource.readyState == videoSource.done) {
videoElement.play();
}
};
} catch (e) {
// fail quietly
}
}
}, false);
ffmpegのが今support for HLS directly as wellを持っていることが表示されます。
- 1. 断片化されたMP4を複数のMP4ファイルに分割する
- 2. 断片化したMP4 "mdat"アトムからMP4ファイルを再構築しますか?
- 3. エラー断片化されたIPプロトコル
- 4. メモリ断片化プロファイラ
- 5. JAXB断片化マーシャリング
- 6. ネストされた断片(向き)の変化
- 7. 断片化FrameLayoutのアニメーションGONE
- 8. Flash/ActionScriptメモリの断片化
- 9. ワードプレスサイトのAPCキャッシュ断片化
- 10. 毎回APC 100%断片化
- 11. jQueryのエスケープ・断片化URLとアニメーション
- 12. スイッチング断片 - Googleマップ断片V2 - 活動が破棄されたエラー
- 13. 同じ方法で断片と断片化を返す方法は?
- 14. IPパケットがソースホストで断片化される頻度は?
- 15. 断片化されたデザインを引き起こすアジャイル方法論
- 16. 断片化されたメモリはどのように見えますか?
- 17. 断片化の計算方法は?
- 18. Androidの断片とは、GetWindow()
- 19. Hibernateの断片とJPA
- 20. アクティビティの断片
- 21. 違い、断片
- 22. 断片は
- 23. IP Mac OSで断片化しないでください
- 24. マルチテナントアプリケーションでSQL Serverが断片化した接続プールのパフォーマンス
- 25. メモリの断片化を解決するためのヒープ分割
- 26. MALLOC_MMAP_THRESHOLD_とMALLOC_MMAP_MAX_を使ってメモリの断片化を減らす
- 27. Mapboxは断片で
- 28. はIllegalStateException:コンテナ断片
- 29. Androidの断片:他のフラグメントからの断片を置換
- 30. クラスタ化インデックスの全断片化が高い(66.67%)
あなたの質問の第2部に答えた人はいません。「ブラウザーは、どのような時がどのバイト範囲に対応しているかをどのように知っていますか? :( –