Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Attribut duration
in der SegmentTemplate
In einem DASH-Standardmanifest enthält SegmentTemplate
eine SegmentTimeline
. Die Timeline beschreibt alle Segmente in Representation
einschließlich ihrer Dauer und Startzeit. AWS Elemental MediaPackage fügt für Live-Ereignisse die Segmente zur Timeline hinzu, wie sie aus Ihrem Encoder eingehen. Um über neu verfügbare Segmente informiert zu werden, muss das Wiedergabegerät regelmäßig ein aktualisiertes Manifest von anfordern MediaPackage.
Wenn alle Segmente in einer Darstellung dieselbe Dauer haben, können Sie dazu beitragen, die Latenz zu reduzieren und das Manifest MediaPackage zu verkürzen, indem Sie das Entfernen der SegmentTimeline
Objekte aktivieren. MediaPackage Fügt an ihrer Stelle ein duration
Attribut zu den SegmentTemplate
Eigenschaften hinzu. Das Wiedergabegerät berechnet mittels duration
und startNumber
den Zeitpunkt der Verfügbarkeit von Geräten. Da das Wiedergabegerät nicht von einem aktualisierten Manifest abhängig ist, um Informationen zu Segmenten zu erhalten, muss es nicht ständig Aktualisierungen anfordern, um die Wiedergabe sicherzustellen. Weitere Informationen zur Funktionsweise des Attributs duration
finden Sie in den folgenden Abschnitten.
Wie funktioniert das duration
Attribut
Aktivieren Sie das Attribut $duration$
über die Einstellung Segment template format (Segmentvorlagenformat) auf dem DASH-Endpunkt wie in Einen DASH-Endpunkt erstellen beschrieben. Anschließend werden folgende Aktionen für das Manifest ausgeführt:
-
Wenn AWS Elemental MediaPackage das DASH-Manifest generiert, fügt der Service das Attribut
duration
zum ObjektSegmentTemplate
hinzu wie im folgenden Beispiel gezeigt:<SegmentTemplate timescale="30000" media="index_video_1_0_$Number$.mp4?m=1535562908" initialization="index_video_1_0_init.mp4?m=1535562908" startNumber="175032" duration="90000" presentationTimeOffset="62061"/>
Die Segmentvorlage enthält keine Segment-Timeline oder Beschreibungen einzelner Segmente.
Wichtig
Abgesehen vom letzten Segment dürfen Segmente nicht mehr als 50 % vom Wert für die Dauer abweichen. Bei einer Dauer von 90000 müssen die Segmente zwischen 45000 und 135000 liegen (1,5 bis 4,5 Sekunden bei einer Zeitskala von 30.000).
Im Folgenden finden Sie ein Beispiel für einen Anpassungssatz, der
duration
in der Segmentvorlage verwendet:<AdaptationSet mimeType="video/mp4" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentStartsWithSAP="1" bitstreamSwitching="true"> <Representation id="1" width="852" height="480" frameRate="30/1" bandwidth="1200000" codecs="avc1.4D401F"> <SegmentTemplate timescale="30000" media="index_video_1_0_$Number$.mp4?m=1535562908" initialization="index_video_1_0_init.mp4?m=1535562908" startNumber="175032" duration="90000" presentationTimeOffset="62061"/> </Representation> <Representation id="2" width="640" height="360" frameRate="30/1" bandwidth="800000" codecs="avc1.4D401E"> <SegmentTemplate timescale="30000" media="index_video_3_0_$Number$.mp4?m=1535562908" initialization="index_video_3_0_init.mp4?m=1535562908" startNumber="175032" duration="90000" presentationTimeOffset="62061"/> </Representation> <Representation id="3" width="320" height="240" frameRate="30/1" bandwidth="499968" codecs="avc1.4D400D"> <SegmentTemplate timescale="30000" media="index_video_5_0_$Number$.mp4?m=1535562908" initialization="index_video_5_0_init.mp4?m=1535562908" startNumber="175032" duration="90000" presentationTimeOffset="62061"/> </Representation> </AdaptationSet>
-
Das Wiedergabegerät fordert Segmente anhand der URL an, die im Attribut definiert ist.
media
In der URL wird die Variable$Number$
durch die Nummer des Segments ersetzt, beginnend mit dem Wert fürstartNumber
in derSegmentTemplate
für das erste Segment. -
Wenn Ihr Wiedergabegerät das jeweils aktuelle Segment ermitteln muss, verwendet es diese Formel:
((Zeit -
availabilityStartTime
) / (duration
/timescale
)) +startNumber
Ein Wiedergabegerät berechnet das jeweils aktuelle Segment mit den folgenden Werten:
-
Uhrzeit der Wanduhr vom Wiedergabegerät: 2018-11-16T 19:18:30 Z
-
availabilityStartTime
- Attribut aus demMPD
Objekt des Manifests: 2018-11-16T 19:08:30 Z -
duration
- Attribut aus dem Objekt desSegmentTemplate
Manifests: 90000 -
timescale
- Attribut aus demSegmentTemplate
: 30000 -
startNumber
- Attribut aus demSegmentTemplate
: 175032
Die verwendete Berechnung ist ((2018-11-16T19:18:30Z - 2018-11-16T19:08:30Z) / (90000/30000)) + 175032
Diese Berechnung wird zu (600 Sekunden verstrichene Zeit) / (3 Sekunden Segmentdauer) = 200 verstrichene Segmente. Das Hinzufügen dieser Segmente an das Startsegmebt 175032 ergibt, dass 175232 das aktuellste Segment ist.
-
duration
Einschränkungen von Attributen
Um eine ordnungsgemäße Wiedergabe sicherzustellen und Probleme aufgrund widersprüchlicher Segmentdauern zu verhindern, erzwingt AWS Elemental MediaPackage die folgenden Einschränkungen für das Attribut duration
:
-
Sie können die Funktion nur aktivieren, wenn Sie den Endpunkt erstellen.
Sie können den Endpunkt nicht zu einem späteren Zeitpunkt ändern, um das Attribut
duration
zu Ihrem DASH Manifest hinzuzufügen. Dies umfasst den Wechsel zu einer Segmentvorlage, die das Attributduration
verwendet. Sie können beispielsweise keinen Endpunkt erstellen, der die Variable$Time$
mitSegmentTimeline
verwendet und anschließend den Endpunkt so bearbeiten, dass er die Variable$Number$
mitduration
verwendet. -
Sie müssen den Wert für segment duration (Segmentdauer) beibehalten, den Sie während der Erstellung des Endpunkts festgelegt haben.
Sie können den Endpunkt nicht bearbeiten, um die Segmentdauer zu ändern.
-
Sie müssen aus Endpunkten, die
duration
verwenden, DASH-Manifeste für einzelne Zeiträume produzieren.Sie können keine DASH-Manifeste für mehrere Zeiträume zusammen mit dem Attribut
duration
verwenden. -
Ihr Ingest-Stream muss einen regelmäßigen Segmentierungsrhythmus verwenden.
-
Sie können im Ingest-Stream keine variable Segmentlänge verwenden. Dies ist beispielsweise das Ergebnis einer SCTE-35-bezogenen Segmentierung.
duration
Attribut mit komprimierten DASH-Manifesten
Wenn Sie kompakte Manifeste mit dem Attribut duration
kombinieren, wird die Größe des Manifests weiter reduziert, jedoch nicht viel. Kompakte Manifeste besitzen nur eine SegmentTemplate
und SegmentTimeline
pro Anpassungssatz. Wenn Sie das Attribut duration
verwenden, entfernt AWS Elemental MediaPackage entfernt die Segment-Timeline. In der Folge besitzt das Manifest nur eine SegmentTemplate
pro Anpassungssatz und keine SegmentTimeline
. Sehen Sie sich die folgenden Beispiele an.
Weitere Informationen zu kompakten Manifesten finden Sie unter Kompakte DASH-Manifeste.
Wichtig
Verwenden Sie das Attribut duration
nicht, wenn die Segmente in einer Repräsentation absichtlich unterschiedlich groß sind. Dieses Verfahren funktioniert nur, wenn die Größe der Segmente konsistent ist.
- Im Folgenden finden Sie ein Beispiel für ein komprimiertes Manifest:
-
<AdaptationSet mimeType="video/mp4" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentStartsWithSAP="1" bitstreamSwitching="true"> <SegmentTemplate timescale="30000" media="index_video_$RepresentationID$_0_$Number$.mp4?m=1543947824" initialization="index_video_$RepresentationID$_0_init.mp4?m=1543947824" startNumber="1"> <SegmentTimeline> <S t="62000" d="60000" r="9"/> </SegmentTimeline> </SegmentTemplate> <Representation id="1" width="640" height="360" frameRate="30/1" bandwidth="749952" codecs="avc1.640029"/> <Representation id="2" width="854" height="480" frameRate="30/1" bandwidth="1000000" codecs="avc1.640029"/> <Representation id="3" width="1280" height="720" frameRate="30/1" bandwidth="2499968" codecs="avc1.640029"/> </AdaptationSet>
- Das Folgende ist ein Beispiel für ein komprimiertes Manifest mit dem
duration
Attribut: -
<AdaptationSet mimeType="video/mp4" segmentAlignment="true" subsegmentAlignment="true" startWithSAP="1" subsegmentStartsWithSAP="1" bitstreamSwitching="true"> <SegmentTemplate timescale="30000" media="index_video_$RepresentationID$_0_$Number$.mp4?m=1543947824" initialization="index_video_$RepresentationID$_0_init.mp4?m=1543947824" startNumber="1" duration="60000"/> <Representation id="1" width="640" height="360" frameRate="30/1" bandwidth="749952" codecs="avc1.640029"/> <Representation id="2" width="854" height="480" frameRate="30/1" bandwidth="1000000" codecs="avc1.640029"/> <Representation id="3" width="1280" height="720" frameRate="30/1" bandwidth="2499968" codecs="avc1.640029"/> </AdaptationSet>