2013-02-07 5 views
6

Ich folge diesem demo, die MediaSource API und MPEG DASH Standard verwendet, um ein .webm Video zu spielen. Dies ist die MPD-Datei verwendet:Wie erstelle ich eine MPD-Datei von MPEG-DASH, um ein Webm-Video abzuspielen?

<?xml version="1.0" encoding="UTF-8"?> 
<MPD 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="urn:mpeg:DASH:schema:MPD:2011" 
    xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011" 
    type="static" 
    mediaPresentationDuration="PT888.05S" 
    minBufferTime="PT1S" 
    profiles="urn:webm:dash:profile:webm-on-demand:2012"> 
    <Period id="0" start="PT0S" duration="PT888.05S" > 
    <AdaptationSet id="0" mimeType="video/webm" codecs="vp8" lang="eng" width="720"  height="306" subsegmentAlignment="true" subsegmentStartsWithSAP="1" bitstreamSwitching="true"> 
    <Representation id="1" bandwidth="534144"> 
    <BaseURL>mevq_logo_720x306_0250k_int-150-150.webm</BaseURL> 
    <SegmentBase indexRange="29052226-29054708"> 
     <Initialization range="0-229" /> 
    </SegmentBase> 
    </Representation> 
    <Representation id="2" bandwidth="1078766"> 
    <BaseURL>mevq_logo_720x306_0500k_int-150-150.webm</BaseURL> 
    <SegmentBase indexRange="56003676-56006200"> 
     <Initialization range="0-229" /> 
    </SegmentBase> 
    </Representation> 
    <Representation id="3" bandwidth="1745140"> 
    <BaseURL>mevq_logo_720x306_0750k_int-150-150.webm</BaseURL> 
    <SegmentBase indexRange="83686040-83688577"> 
     <Initialization range="0-229" /> 
    </SegmentBase> 
    </Representation> 
    <Representation id="4" bandwidth="2295403"> 
    <BaseURL>mevq_logo_720x306_1000k_int-150-150.webm</BaseURL> 
    <SegmentBase indexRange="111588024-111590567"> 
     <Initialization range="0-229" /> 
    </SegmentBase> 
    </Representation> 
    <Representation id="5" bandwidth="3797938"> 
    <BaseURL>mevq_logo_720x306_1500k_int-150-150.webm</BaseURL> 
    <SegmentBase indexRange="166960740-166963291"> 
     <Initialization range="0-229" /> 
    </SegmentBase> 
    </Representation> 
    <Representation id="6" bandwidth="6418657"> 
    <BaseURL>mevq_logo_720x306_2000k_int-150-150.webm</BaseURL> 
    <SegmentBase indexRange="222165200-222167753"> 
     <Initialization range="0-229" /> 
    </SegmentBase> 
    </Representation> 
</AdaptationSet> 
<AdaptationSet id="1" mimeType="audio/webm" codecs="vorbis" lang="eng" audioSamplingRate="41000" subsegmentStartsWithSAP="1"> 
    <Representation id="7" bandwidth="115479"> 
    <BaseURL>evq_vorbis_128kbps_cues-5sec_tracks-2.webm</BaseURL> 
    <SegmentBase indexRange="11944509-11947524"> 
     <Initialization range="0-4501" /> 
    </SegmentBase> 
    </Representation> 
</AdaptationSet> 

Weiß jemand, wie zu erhalten/Berechnen Sie die 'SegmentBase indexRange' Zahlen und 'Initialisierung Bereich' für jedes Video?

Antwort

6

indexRange enthält Segment Index Box (Sidx). Es ist im Grunde ein Metadatenfragment, das Informationen über die Fragmente enthält, die der Player beim Herunterladen der Datei anfordern sollte. Diese ist ein Zitat aus dem spec.

„indexRange gibt den Byte-Bereich, den das Segment Index in allen Mediensegmenten der Darstellung enthält der Byte-Bereich wird als ausgedrückt und formatiert wird Byte-Range- Spezifikation wie in RFC 2616, Abschnitt 14.35.1 definiert. Es ist auf einen einzelnen Ausdruck beschränkt, die einen zusammenhängenden Bereich von Bytes identifizieren. "

Sidx Box ist in HERE beschrieben und ein Parser kann HERE und HERE(from dash.js project) finden

Initialisierung - Nach spec:

„gibt die URL einschließlich eines möglichen Byte-Bereich für die Initialisierungssegment. "

Ich hoffe, es hat geholfen!

+0

Nach diesen Links konnte ich noch nicht finden, wie Initialization.range und SegmentBase.rangeIndex berechnet werden. Können Sie einen Link erläutern oder erläutern? DANKE! –

+0

Beginnen Sie mit dem Herunterladen des SegmentBase.rangeIndex und sehen Sie sich dessen Binärdaten an: curl -o -r <1500-8000 (SegmentBase.rangeIndex)> Sie können verwenden Sie können die dash.js herunterladen/klonen Projekt gibt es ein Beispiel im Code selbst. – inbaly

+0

Sie sagen also, dass ich das erste Chuck herunterladen und es lesen und sehen sollte, wo es endet und dann die MPD mit diesen Werten bevölkern? –

Verwandte Themen