3

静的な mpeg-DASH ファイルを再生するアプリを作成しています。MP4Box を使用して DASH .mp4 および .mpd ファイルを作成しています。MPD ファイルには、単一の .mp4 ファイルへのバイト範囲オフセットのリストが含まれています。これは問題なく動作しますが、範囲が個々のファイルである実装を見てきました。

私が疑問に思っているのは、DASH ファイルを作成する「業界で推奨される」方法はどれですか? ファイルへのオフセットを含む .mp4 ファイルを 1 つ持つか、それともセグメントごとに個別の .mp4 ファイルを作成するか?

個別の場合、各ファイルの先頭に初期化コンテンツがありますか、それとも init ファイルが 1 つだけで、他のファイルはコンテンツですか?

4

2 に答える 2

1

MPEG-DASH には独自の複雑さがあり、有効な mpd ファイルには多くの種類があるため、MPEG-DASH をサポートしていると主張するプレーヤーは、すべての有効な種類をサポートしているわけではありません。すべてのプレーヤーが簡単にサポートできる一般的な mpd ファイルの 1 つは、「SegmentURL」要素を含むファイルです。基本的には、フラグメントが記述されている場合です。
以下に例を示します: http://www.digitalprimates.net/dash/streams/gpac/mp4-main-multi-mpd-AV-NBS.mpd

ご覧のとおり、初期化は「初期化」要素で説明されている最初のフラグメントです。これはその明白な原則です:

<MPD type="static" xmlns="urn:mpeg:DASH:schema:MPD:2011" minBufferTime="PT1.5S" mediaPresentationDuration="PT0H10M0.00S" profiles="urn:mpeg:dash:profile:isoff-main:2011">
 <ProgramInformation moreInformationURL="http://gpac.sourceforge.net">
  <Title>mp4-main-multi-mpd-AV-NBS.mpd generated by GPAC</Title>
  <Copyright>TelecomParisTech(c)2012</Copyright>
 </ProgramInformation>
 <Period start="PT0S" duration="PT0H10M0.00S">
  <AdaptationSet segmentAlignment="true" maxWidth="1920" maxHeight="1080" maxFrameRate="25" par="16:9">
   <ContentComponent id="1" contentType="video"/>
   <Representation id="h264bl_low" mimeType="video/mp4" codecs="avc1.42c00d" width="320" height="180" frameRate="25" sar="1:1" startWithSAP="1" bandwidth="50877">
    <SegmentList timescale="1000" duration="10000">
     <Initialization sourceURL="mp4-main-multi-h264bl_low-.mp4"/>
    <SegmentURL media="mp4-main-multi-h264bl_low-1.m4s"/>
    <!-- ... Continue with SegmentURL elements -->
    </SegmentList>
   </Representation>
   <!--   Other video Representations    -->
  </AdaptationSet>
  <AdaptationSet segmentAlignment="true" lang="und">
   <ContentComponent id="1" contentType="audio" lang="und"/>
   <Representation id="aaclc_low" mimeType="audio/mp4" codecs="mp4a.40.2" audioSamplingRate="44100" lang="und" startWithSAP="1" bandwidth="19079">
    <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="1"/>
    <SegmentList timescale="1000" duration="9520">
     <Initialization sourceURL="mp4-main-multi-aaclc_low-.mp4"/>
    <SegmentURL media="mp4-main-multi-aaclc_low-1.m4s"/>
    <!-- ... Continue with SegmentURL elements -->
    </SegmentList>
   </Representation>  
   <!--   Other video Representations    -->
  </AdaptationSet>
 </Period>
</MPD>
于 2015-04-01T06:54:11.213 に答える
0

単一または複数のメディア セグメントが MPEG DASH のより良い方法であるかどうかは、ユース ケースによって異なります。

複数のメディア セグメントが優先される状況を次に示します。MPEG DASH がサポートするコンテンツ配信の最適化の 1 つは遅延バインディングです。たとえば、複数の代替音声トラック (異なる言語) を含むコンテンツの場合、ユーザーが選択した音声言語のみが配信されます。すべてのオーディオ トラックを含む 1 つのセグメントは、複数のセグメント (ビデオと複数のオーディオ トラック用に分離) に比べて、HTTP キャッシュの効率が悪い場合があります。

複数のセグメントの場合、すべての初期化情報を含む単一のセグメント (初期化セグメント) をお勧めします。

于 2014-03-31T03:24:14.753 に答える