Überblick
Prozess
CAE wird für einen Zencoder-Job durch Festlegen aktiviert
zu wahr und hinzufügen generate_dynamic_profile
dynamic_profile_rendition
Werte zu den Ausgaben des Jobs. Außerdem können Sie hinzufügen dynamic_profile_options
, dies ist jedoch nicht erforderlich. Nach dem Herunterladen und Überprüfen der Eingabequelldatei für den Job führt Zencoder den dynamischen CAE-Profilgenerator für die Quelldatei aus. Die resultierenden Einstellungen für die dynamische Profilleiter werden zu jeder entsprechenden Ausgabe hinzugefügt, bevor sie codiert werden. Die folgenden Einstellungen werden automatisch für Ausgaben mit einem Wert für dynamic_profile_rendition festgelegt:
width
height
frame_rate
video_codec
video_codec_profile
video_codec_tier
video_codec_level
video_reference_frames
video_bframes
video_bitrate
decoder_bitrate_cap
decoder_buffer_size
keyframe_rate
fixed_keyframe_interval
Gemischte Codec-Ausgänge: Sie können gemischte HEVC / H.264-Wiedergaben ausgeben. Sehen CAE-Einstellungen für Details.
Andere Ausgänge ohne a dynamic_profile_rendition
beginnt mit der Codierung, sobald die Eingabequelle überprüft wird, während gleichzeitig der dynamische Profilgenerator ausgeführt wird.
Richtlinien für die Konfiguration dynamic_profile_options
Anzahl der Wiedergaben
Die minimale und maximale Anzahl der zu erstellenden Wiedergaben wird mit dem gesteuert min_renditions und max_renditions die Einstellungen. Für eine optimale Leistung wird empfohlen, eine gewisse Lücke zwischen diesen Grenzwerten zu lassen (z. B. festgelegt) min_renditions
bis 2 und max_renditions
bis 10), wodurch der CAE-Profilgenerator die für jeden Inhalt am besten geeignete Nummer auswählen kann. Für einfach zu codierende Inhalte werden möglicherweise weniger Wiedergaben erzeugt, während für komplexere Inhalte möglicherweise mehr Wiedergaben erzeugt werden. Es wird außerdem empfohlen, min_renditions so klein wie möglich zu setzen, um Bandbreite zu sparen, wenn weitere Wiedergaben nicht erforderlich sind.
Beschlüsse
Standardmäßig verwendet CAE eine Leiter mit etwa 30 Standardauflösungen von 192x108
zu 7680x4320
. Es kann entweder am unteren oder am oberen Ende begrenzt werden, indem das verwendet wird min_resolution und maximale Auflösung die Einstellungen. Alternativ kann eine benutzerdefinierte Liste der Auflösungen und zugehörigen Codec-Einstellungen in der bereitgestellt werden video_configurations
Rahmen.
GOP-Länge
Das keyframe_rate
Einstellung steuert das Maximum GOP
Länge des codierten Inhalts. Stellen Sie dies so ein, dass es mit übereinstimmt segment_seconds
für HLS / DASH-Codierung. Andernfalls wird ein Wert von 0,5 empfohlen, was einer 2-Sekunden-Zeit entspricht GOP
Länge.
Bitrate-Abdeckung
Die Grenzen der zu verwendenden Bitraten können durch die gesteuert werden min_bitrate
und max_bitrate
die Einstellungen. Dadurch wird CAE angewiesen, mindestens zuzuweisen min_bitrate
Kbps für die erste Wiedergabe und beschränken die letzte Wiedergabe auf höchstens max_bitrate
Kbps.
Verwenden Sie die Taste, um sicherzustellen, dass die Wiedergaberitraten angemessen verteilt sind min_granularity
und max_granularity
die Einstellungen. Diese können beispielsweise verwendet werden, um sicherzustellen, dass der Schritt von einer Bitrate zur nächsten nicht weniger als eine 50% ige Erhöhung der Bitrate oder mehr als eine 100% ige Erhöhung der Bitrate beträgt. Bitte beachten Sie, dass die meisten Streaming-Authoring-Richtlinien empfehlen, dass die Granularität 100% nicht überschreitet.
Startlatenz, Zuverlässigkeit bei schlechten Netzwerkbedingungen
Verwenden Sie die Taste, um sicherzustellen, dass die Bitratenleiter immer mit einer ausreichend niedrigen Bitrate beginnt max_first_rendition_bitrate
Rahmen. Je niedriger die Bitrate für die erste Wiedergabe eingestellt ist, desto weniger wahrscheinlich muss ein Videoplayer aufgrund niedriger Verbindungsgeschwindigkeiten puffern. Wenn das Streaming-Manifest angibt, dass zuerst die niedrigste Bitrate geladen werden soll, wirkt sich dies auch direkt auf die Startlatenz aus.
Unterstützung für ältere Geräte
Zur Unterstützung älterer Geräte, die nur dazu in der Lage sind
Profil H.264 Wiedergabe, verwenden Sie die Baseline
select_baseline_profile_configuration
Rahmen. Wenn dies eingestellt ist, wird mindestens eine Wiedergabe mit codiert Baseline
Profil. Zusätzliche Einschränkungen (Codec-Profil, Ebene, Anzahl der Referenzrahmen, B-Rahmen usw.) können benutzerdefiniert gesteuert werden video_configurations
Rahmen.
Beachten Sie, dass select_baseline_profile_configuration
ist true
standardmäßig, und es erfordert mindestens eine Wiedergabe eine Auflösung von 512 x 288 oder weniger haben.
VBR-Variabilitätskontrolle
Die maximalen Spitzenbitraten können mit dem gesteuert werden bitrate_cap_to_bitrate_ratio
und bitrate_cap_offset die Einstellungen. Wenn eine Bitrate „R
“ für eine Formatvariante ausgewählt ist, wird der decoder_bitrate_cap wie folgt berechnet:
decoder_bitrate_cap = R * bitrate_cap_to_bitrate_ratio + bitrate_cap_offset
In ähnlicher Weise können die Decoderpuffergrenzen mit dem gesteuert werden buffer_size_to_bitrate_ratio
und buffer_size_offset
die Einstellungen. Das decoder_buffer_size
wird berechnet als:
decoder_buffer_size = R * buffer_size_to_bitrate_ratio + buffer_size_offset
Beachten Sie, dass die Grenzwerte für Spitzenbitrate und Puffer möglicherweise auch durch das Codec-Profil und / oder die Pegeleinstellungen eingeschränkt werden. Einige allgemeine Probleme mit der Gerätekompatibilität können vermieden werden, indem Sie bitrate_cap_to_bitrate_ratio
auf 2.0 oder darunter beschränken, und buffer_size_to_bitrate_ratio
bis 2.0 * GOP length
(in Sekunden).
CAE und segmentierte Ausgänge
CAE ist mit segmentierten Ausgängen in Zencoder kompatibel. Auf der Output
Wiedergabeeinstellungen, stellen Sie die type
wie segmented
und die entsprechenden segment_seconds
Wert. Ebenfalls, keyframe_rate
und fixed_keyframe_interval
Einstellungen müssen in vorgenommen werden dynamic_profile_options
.
CAE - HLS Beispiel
{
"input": "s3://test_bucket/test_media.mp4",
"generate_dynamic_profile": true,
"dynamic_profile_options": {
"max_renditions": 6,
"min_renditions": 2,
"select_baseline_profile_configuration": true,
"keyframe_rate": "0.5",
"fixed_keyframe_interval": "true"
},
"outputs": [
{
"label": "CAE1",
"dynamic_profile_rendition": 1,
"base_url": "s3://test_bucket/outputs/HLS_CAE/CAE1",
"filename": "CAE1.m3u8",
"type": "segmented",
"segment_seconds": 2,
"byte_range_segmenting": true,
"generate_keyframe_manifest": "true",
"hls_protocol_version": 7,
"skip_audio": true
},
{
"label": "CAE2",
"dynamic_profile_rendition": 2,
"base_url": "s3://test_bucket/outputs/HLS_CAE/CAE2",
"filename": "CAE2.m3u8",
"type": "segmented",
"segment_seconds": 2,
"byte_range_segmenting": true,
"generate_keyframe_manifest": "true",
"hls_protocol_version": 7,
"skip_audio": true
},
{
"label": "CAE3",
"dynamic_profile_rendition": 3,
"base_url": "s3://test_bucket/outputs/HLS_CAE/CAE3",
"filename": "CAE3.m3u8",
"type": "segmented",
"segment_seconds": 2,
"byte_range_segmenting": true,
"generate_keyframe_manifest": "true",
"hls_protocol_version": 7,
"skip_audio": true
},
{
"label": "CAE4",
"dynamic_profile_rendition": 4,
"base_url": "s3://test_bucket/outputs/HLS_CAE/CAE4",
"filename": "CAE4.m3u8",
"type": "segmented",
"segment_seconds": 2,
"byte_range_segmenting": true,
"generate_keyframe_manifest": "true",
"hls_protocol_version": 7,
"skip_audio": true
},
{
"label": "CAE5",
"dynamic_profile_rendition": 5,
"base_url": "s3://test_bucket/outputs/HLS_CAE/CAE5",
"filename": "CAE5.m3u8",
"type": "segmented",
"segment_seconds": 2,
"byte_range_segmenting": true,
"generate_keyframe_manifest": "true",
"hls_protocol_version": 7,
"skip_audio": true
},
{
"label": "CAE6",
"dynamic_profile_rendition": 6,
"base_url": "s3://test_bucket/outputs/HLS_CAE/CAE6",
"filename": "CAE6.m3u8",
"type": "segmented",
"segment_seconds": 2,
"byte_range_segmenting": true,
"generate_keyframe_manifest": "true",
"hls_protocol_version": 7,
"skip_audio": true
}
{
"label": "Audio",
"audio_bitrate": "128",
"type": "segmented",
"segment_seconds": 2,
"byte_range_segmenting": true,
"skip_video": true,
"base_url": "s3://test_bucket/outputs/HLS_CAE/Audio/128k/",
"filename": "audio_128k.ac3"
},
{
"base_url": "s3://test_bucket/outputs/HLS_CAE/",
"filename": "master_playlist.m3u8",
"hls_protocol_version": 7,
"type": "playlist",
"allow_skipped_sources": true,
"alternate_audio": {
"128k_audio": {
"path": "Audio/128k/audio_128k.m3u8",
"language": "en",
"source": "Audio"
}
}
],
"streams": [
{
"path": "CAE1/CAE1.m3u8",
"source": "CAE1",
"audio": "128k_audio"
},
{
"path": "CAE2/CAE2.m3u8",
"source": "CAE2",
"audio": "128k_audio"
},
{
"path": "CAE3/CAE3.m3u8",
"source": "CAE3",
"audio": "128k_audio"
},
{
"path": "CAE4/CAE4.m3u8",
"source": "CAE4",
"audio": "128k_audio"
},
{
"path": "CAE5/CAE5.m3u8",
"source": "CAE5",
"audio": "128k_audio"
},
{
"path": "CAE6/CAE6.m3u8",
"source": "CAE6",
"audio": "128k_audio"
}
]
}
]
}
CAE - DASH Beispiel
{
"input": "s3://test_bucket/test.mov",
"generate_dynamic_profile": true,
"dynamic_profile_options": {
"max_renditions": 6,
"min_renditions": 2,
"select_baseline_profile_configuration": true,
"keyframe_rate": "0.5",
"fixed_keyframe_interval": "true"
},
"outputs": [
{
"label": "CAE1",
"dynamic_profile_rendition": 1,
"base_url": "s3://test_bucket/outputs/DASH_CAE/CAE1",
"filename": "CAE1.mpd",
"type": "segmented",
"segment_seconds": 10,
"streaming_delivery_format": "dash",
"skip_audio": true,
"public": true
},
{
"label": "CAE2",
"dynamic_profile_rendition": 2,
"base_url": "s3://test_bucket/outputs/DASH_CAE/CAE2",
"filename": "CAE2.mpd",
"type": "segmented",
"segment_seconds": 10,
"streaming_delivery_format": "dash",
"skip_audio": true,
"public": true
},
{
"label": "CAE3",
"dynamic_profile_rendition": 3,
"base_url": "s3://test_bucket/outputs/DASH_CAE/CAE3",
"filename": "CAE3.mpd",
"type": "segmented",
"segment_seconds": 10,
"streaming_delivery_format": "dash",
"skip_audio": true,
"public": true
},
{
"label": "CAE4",
"dynamic_profile_rendition": 4,
"base_url": "s3://test_bucket/outputs/DASH_CAE/CAE4",
"filename": "CAE4.mpd",
"type": "segmented",
"segment_seconds": 10,
"streaming_delivery_format": "dash",
"skip_audio": true,
"public": true
},
{
"label": "CAE5",
"dynamic_profile_rendition": 5,
"base_url": "s3://test_bucket/outputs/DASH_CAE/CAE5",
"filename": "CAE5.mpd",
"type": "segmented",
"segment_seconds": 10,
"streaming_delivery_format": "dash",
"skip_audio": true,
"public": true
},
{
"label": "CAE6",
"dynamic_profile_rendition": 6,
"base_url": "s3://test_bucket/outputs/DASH_CAE/CAE6",
"filename": "CAE6.mpd",
"type": "segmented",
"segment_seconds": 10,
"streaming_delivery_format": "dash",
"skip_audio": true,
"public": true
},
{
"label": "Audio",
"audio_bitrate": "128",
"type": "segmented",
"segment_seconds": 10,
"streaming_delivery_format": "dash",
"skip_video": true,
"base_url": "s3://test_bucket/outputs/DASH_CAE/Audio/128k/",
"filename": "audio_128k.mpd",
"public": true
},
{
"base_url": "s3://test_bucket/outputs/DASH_CAE/",
"filename": "master_playlist.mpd",
"streaming_delivery_format": "dash",
"type": "playlist",
"allow_skipped_sources": true,
"public": true,
"streams": [
{
"path": "CAE1/CAE1.mpd",
"source": "CAE1"
},
{
"path": "CAE2/CAE2.mpd",
"source": "CAE2"
},
{
"path": "CAE3/CAE3.mpd",
"source": "CAE3"
},
{
"path": "CAE4/CAE4.mpd",
"source": "CAE4"
},
{
"path": "CAE5/CAE5.mpd",
"source": "CAE5"
},
{
"path": "CAE6/CAE6.mpd",
"source": "CAE6"
},
{
"path": "Audio/128k/audio_128k.mpd",
"source": "Audio"
}
]
}
]
}