2017-10-25 9 views
0

MPDファイルにセグメントURLのリストがない場合、DASHメディアのセグメント数$をどのようにして決定できますか? セグメントテンプレートタグしかないので、このMPDに関連付けられたメディアのセグメント数はわかりません。 以下MPDファイル:MPDファイルからDASHメディアのセグメント数を確認してください

<?xml version="1.0" encoding="UTF-8" ?> 
<MPD profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" availabilityStartTime="2017-09-24T02:32:58Z" minimumUpdatePeriod="PT2.0S" minBufferTime="PT1S" timeShiftBufferDepth="PT2M" xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd"> 
    <Period start="PT0S"> 

    <AdaptationSet mimeType="video/mp4" startWithSAP="1" segmentAlignment="true"> 

     <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" /> 
     <ContentProtection schemeIdUri="urn:uuid:5E629AF5-38DA-4063-8977-97FFBD9902D4"> 
     <mas:MarlinContentIds xmlns:mas="marlin:mas:1-0:services:schemas:mpd" > 
      <mas:MarlinContentId>urn:marlin:kid:48e495a75aefaa2f22a8c15f8c564afa</mas:MarlinContentId> 
     </mas:MarlinContentIds> 
     </ContentProtection> 

     <SegmentTemplate timescale="10000000" presentationTimeOffset="311133404" duration="20000000" startNumber="1" media="$RepresentationID$_Segment-$Number$.m4v" initialization="$RepresentationID$_init.m4i" /> 
     <Representation width="1920" height="1080" frameRate="25" codecs="avc1.640029" scanType="progressive" id="Stream_0_1600000" bandwidth="1600000" /> 
     <Representation width="1920" height="1080" frameRate="25" codecs="avc1.640029" scanType="progressive" id="Stream_1_2600000" bandwidth="2600000" /> 
     <Representation width="1920" height="1080" frameRate="25" codecs="avc1.640029" scanType="progressive" id="Stream_2_3900000" bandwidth="3900000" /> 
     <Representation width="1920" height="1080" frameRate="25" codecs="avc1.640029" scanType="progressive" id="Stream_3_4800000" bandwidth="4800000" /> 

    </AdaptationSet> 

    <AdaptationSet mimeType="audio/mp4" startWithSAP="1" lang="ita" segmentAlignment="true"> 
     <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" /> 
     <ContentProtection schemeIdUri="urn:uuid:5E629AF5-38DA-4063-8977-97FFBD9902D4"> 
     <mas:MarlinContentIds xmlns:mas="marlin:mas:1-0:services:schemas:mpd" > 
      <mas:MarlinContentId>urn:marlin:kid:48e495a75aefaa2f22a8c15f8c564afa 
      </mas:MarlinContentId> 
     </mas:MarlinContentIds> 
     </ContentProtection> 
     <SegmentTemplate timescale="10000000" presentationTimeOffset="311133404" duration="20000000" startNumber="1" media="$RepresentationID$_Segment-$Number$.m4a" initialization="$RepresentationID$_init.m4i" /> 
     <Representation audioSamplingRate="48000" codecs="mp4a.40.5" id="Stream_4_96000" bandwidth="96000" /> 
    </AdaptationSet> 
    </Period> 
</MPD> 

は、私は次のセグメント$Numberがcalcultedされる方法を理解することは困難です。

ライブマニフェストについては
         Thanks, Giovanni 

答えて

0

、あなたはすなわち今(ウォールクロック時間までの経過時間(イベントの開始からの時間)を計算し、イベントの開始時刻に基づいて、おおよそのセグメント数を計算する必要があります - スタート時間)。これを各セグメントの固定期間で割ります。

startNumber = 1なので、startNumber +(elapsedDur/segmentDur)を計算して最新のセグメント番号を取得できます。

IMHO、これは小さなマニフェストサイズを維持するうえで便利です。しかし、これは、DASHクライアントがクロックを同期させることを期待しています。そうしないと、存在しないセグメント番号を要求しすぎることになります(早すぎたり遅すぎたりします)。セグメントがまだアドバタイズされていない場合は、多くの404を実行します。

+0

ありがとうございます@ラマ、私はすでにセグメント番号を計算する方法を見つけましたが、あなたが書いたように、同期に関する問題に直面しています。実際、私はオーディオとビデオの要求に対して404のうちの1つを取得します。しかし、私はクライアントとサーバをどのように同期させることができないのかは分かりません –

関連する問題