In diesem Leitfaden werden die unterstützten Manifestoptionen der Video Stitcher API beschrieben. So kannst du das Manifest des zusammengefügten Videos anpassen. Die Manifestoptionen werden in der Anfrage zur Sitzungserstellung konfiguriert. Weitere Informationen nachstehend:
- Livesitzung verwalten
- Live-Sitzung verwalten, die über Google Ad Manager aktiviert wurde
- VOD-Sitzung verwalten
- Von Google Ad Manager aktivierte VOD-Sitzung verwalten
Hinweise
Sie müssen mit den einführenden Konzepten und der Terminologie der Video Stitcher API vertraut sein. Weitere Informationen finden Sie in der technischen Übersicht.
Einleitung
Standardmäßig enthält das zusammengeführte Videomanifest dieselben Medienwiedergaben wie das Quellvideomanifest. Das Quellmanifest kann mehrere Mediendarstellungen enthalten, die nicht alle Player abspielen können. Ein codiertes Video kann beispielsweise sowohl H.264- als auch H.265-Videocodecs enthalten, ein Player auf einem Gerät kann aber möglicherweise nur H.264 wiedergeben.
Wenn du angibtst, welche Codecs oder Bitraten im Videomanifest enthalten sein sollen, kannst du festlegen, welche Videowiedergabeformen im zusammengefügten Videomanifest ausgegeben werden sollen.
Manifestoptionen
Mit dem Objekt ManifestOptions
hast du einige Möglichkeiten, das Manifest des zusammengefügten Videos anzupassen.
HLS
Für zusammengeführte HLS-Videomanifeste kannst du Folgendes anpassen:
- Nach Codecs filtern
- Nur bestimmte Videoauflösungen einschließen
- Nur bestimmte Frameraten berücksichtigen
- Nur bestimmte Bitrate einschließen
- Videowiedergabevarianten bestellen
Für die folgenden Abschnitte wird das folgende Manifest für das Quellvideo angenommen:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=1920x1080,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=100000,RESOLUTION=640x360,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=200000,RESOLUTION=1280x720,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/hd/index.m3u8
Nach Codecs filtern
Wenn du die Videowiedergabe nach Codecs filtern möchtest, lege die Codecs beim Erstellen einer Sitzung im optionalen Feld manifestOptions
fest. Wenn du beispielsweise nur H.264 im zusammengeführten Manifest anzeigen möchtest, lege den Codec im includeRenditions
-Array fest:
{ "manifestOptions": { "includeRenditions": [ { "codecs": "avc1.42e00a,mp4a.40.2", }, ], }, }
Im zusammengeführten Manifest wird Folgendes angezeigt:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
Nur bestimmte Videoauflösungen einschließen
Wenn Sie die Videowiedergabe nach Videoauflösung filtern möchten, legen Sie beim Erstellen einer Sitzung die Videoauflösung im optionalen Feld manifestOptions
fest. Wenn du beispielsweise nur die Videoauflösungen 1920x1080
und 640x360
im zusammengeführten Manifest anzeigen möchtest, lege die Videoauflösungen im Array includeRenditions
fest:
{ "manifestOptions": { "includeRenditions": [ { "videoResolution": { "widthPixels": 1920, "heightPixels": 1080, }, }, { "videoResolution": { "widthPixels": 640, "heightPixels": 360, }, }, ], }, }
Im zusammengeführten Manifest wird Folgendes angezeigt:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=1920x1080,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=100000,RESOLUTION=640x360,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/sd/index.m3u8
Nur bestimmte Frameraten berücksichtigen
Wenn Sie die Videowiedergabe nach Frameraten filtern möchten, legen Sie beim Erstellen einer Sitzung die Framerate im optionalen Feld manifestOptions
fest. Wenn du beispielsweise nur 25.0
-Frameraten im zusammengeführten Manifest anzeigen möchtest, lege die Framerate im Array includeRenditions
fest:
{ "manifestOptions": { "includeRenditions": [ { "frameRate": 25.0 }, ], }, }
Im zusammengeführten Manifest wird Folgendes angezeigt:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/hd/index.m3u8
Nur bestimmte Bitrate einschließen
Wenn du die Videowiedergabe nach Bitrate filtern möchtest, lege die Bitrate beim Erstellen einer Sitzung im optionalen Feld manifestOptions
fest. Wenn du beispielsweise nur zwei Bitrate im zusammengefügten Manifest anzeigen möchtest, lege die Bitrate im includeRenditions
-Array fest:
{ "manifestOptions": { "includeRenditions": [ { "bitrateBps": 150000, }, { "bitrateBps": 440000, }, ], }, }
Im zusammengeführten Manifest wird Folgendes angezeigt:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
h264/index.m3u8
Nach Bitrate sortieren
Einige Player sind möglicherweise empfindlich gegenüber der Reihenfolge der Videowiedergabe. Du kannst die Reihenfolge der Videowiedergabe auf ascending
oder descending
festlegen, wie hier:
{ "manifestOptions": { "bitrateOrder": "ascending", }, }
Im zusammengeführten Manifest wird Folgendes angezeigt:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=100000,RESOLUTION=640x360,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=200000,RESOLUTION=1280x720,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=1920x1080,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/fhd/index.m3u8
DASH
Für zusammengeführte DASH-Videomanifeste kannst du Folgendes anpassen:
- Nach Codecs filtern
- Nur bestimmte Videoauflösungen einschließen
- Nur bestimmte Frameraten berücksichtigen
- Nur bestimmte Bitrate einschließen
- Videowiedergabevarianten bestellen
Für die folgenden Abschnitte wird das folgende Manifest für das Quellvideo angenommen:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000" frameRate="50/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000" frameRate="50/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
Nach Codecs filtern
Wenn du die Videowiedergabe nach Codecs filtern möchtest, lege die Codecs beim Erstellen einer Sitzung im optionalen Feld manifestOptions
fest. Wenn du beispielsweise nur H.264 im zusammengeführten Manifest anzeigen möchtest, lege den Codec im includeRenditions
-Array fest:
{ "manifestOptions": { "includeRenditions": [ { "codecs": "hvc1.1.4.L126.B0", }, ], }, }
Im zusammengeführten Manifest wird Folgendes angezeigt:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000" frameRate="50/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000" frameRate="50/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
Nur bestimmte Videoauflösungen einschließen
Wenn Sie die Videowiedergabe nach Videoauflösung filtern möchten, legen Sie beim Erstellen einer Sitzung die Videoauflösung im optionalen Feld manifestOptions
fest. Wenn du beispielsweise nur 640x360
-Videoauflösungen im zusammengeführten Manifest anzeigen möchtest, setze die Videoauflösung im includeRenditions
-Array:
{ "manifestOptions": { "includeRenditions": [ { "videoResolution": { "widthPixels": 640, "heightPixels": 360, }, }, ], }, }
Im zusammengeführten Manifest wird Folgendes angezeigt:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000" frameRate="50/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
Nur bestimmte Frameraten berücksichtigen
Wenn Sie die Videowiedergabe nach Frameraten filtern möchten, legen Sie beim Erstellen einer Sitzung die Framerate im optionalen Feld manifestOptions
fest. Wenn du beispielsweise nur die Framerate 25.0
im zusammengeführten Manifest anzeigen möchtest, lege die Framerate im Array includeRenditions
fest:
{ "manifestOptions": { "includeRenditions": [ { "frameRate": 25.0 }, ], }, }
Im zusammengeführten Manifest wird Folgendes angezeigt:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000" frameRate="25/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
Bestimmte Bitraten einschließen
Wenn du die Videowiedergabe nach Bitrate filtern möchtest, lege die Bitrate beim Erstellen einer Sitzung im optionalen Feld manifestOptions
fest. Wenn du beispielsweise nur zwei Bitrate im zusammengefügten Manifest anzeigen möchtest, lege die Bitrate im includeRenditions
-Array fest:
{ "manifestOptions": { "includeRenditions": [ { "bitrateBps": 150000, }, { "bitrateBps": 240000, }, ], }, }
Im zusammengeführten Manifest wird Folgendes angezeigt:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000" frameRate="25/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>
Nach Bitrate sortieren
Einige Player sind möglicherweise empfindlich gegenüber der Reihenfolge der Videowiedergabe. Du kannst die Reihenfolge der Videowiedergabe auf ascending
oder descending
festlegen, wie hier:
{ "manifestOptions": { "bitrateOrder": "descending", }, }
Im zusammengeführten Manifest wird Folgendes angezeigt:
<Period id="0" start="PT33160.000S">
<AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720">
<Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000" frameRate="50/1">
...
</Representation>
<Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000" frameRate="25/1">
...
</Representation>
<Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000" frameRate="50/1">
...
</Representation>
</AdaptationSet>
<AdaptationSet segmentAlignment="true">
<Representation mimeType="audio/mp4" id="640x360-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
<Representation mimeType="audio/mp4" id="1280x720-audio" codecs="mp4a.40.2" audioSamplingRate="44100" startWithSAP="1" bandwidth="48472">
...
</Representation>
</AdaptationSet>
</Period>