Attribut duration in der SegmentTemplate - AWS Elemental MediaPackage

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:

  1. Wenn AWS Elemental MediaPackage das DASH-Manifest generiert, fügt der Service das Attribut duration zum Objekt SegmentTemplate 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>
  2. 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ür startNumber in der SegmentTemplate für das erste Segment.

  3. 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 dem MPD Objekt des Manifests: 2018-11-16T 19:08:30 Z

    • duration- Attribut aus dem Objekt des SegmentTemplate 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.

durationEinschrä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 Attribut duration verwendet. Sie können beispielsweise keinen Endpunkt erstellen, der die Variable $Time$ mit SegmentTimeline verwendet und anschließend den Endpunkt so bearbeiten, dass er die Variable $Number$ mit duration 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.

durationAttribut 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>