概要
処理
CAE は、true
に設定し、generate_dynamic_profile
dynamic_profile_rendition
出力に値を追加することで Zencoder ジョブで有効になります。ジョブの。さらに、追加することもできますがdynamic_profile_options
、これは必須ではありません。ジョブの入力ソースファイルをダウンロードして調べると、Zencoder はソースファイルで CAE 動的プロファイルジェネレータを実行します。結果の動的プロファイルラダー設定は、エンコードされる前に、対応する各出力に追加されます。次の設定は、出力に dynamic_profile_rendition 値が自動的に設定されます。
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
混合コーデック出力:混合された HEVC/H.264レンディションを出力できます。詳細については、 CAE設定を参照してください。
を使用しないその他の出力は、ダイナミックプロファイルジェネレータの実行中に、入力ソースが検査されるとすぐにエンコーディングを開始します。dynamic_profile_rendition
設定に関するガイドラインdynamic_profile_options
レンディションの数
作成するレンディションの最小数と最大数は、 min_renditionsおよび max_renditionsの設定で制御します。最高のパフォーマンスを得るには、これらの制限の間に一定のギャップを残すことをお勧めします(例:min_renditions
2にそしてmax_renditions
10)、CAEプロファイルジェネレータが各コンテンツに最も適した番号を選択できるようにします。コンテンツを簡単にエンコードするには、レンディションの数を減らし、複雑なコンテンツではより多くのレンディションを生成できます。また、より多くのレンディションが不要な場合に帯域幅を節約できるように、min_renditions をできるだけ小さく設定することをお勧めします。
決議
デフォルトでは、CAE 192x108
はからまでの範囲で約 30 の標準解像度のラダーを使用します7680x4320
。最小解像度と max_resolutionの設定を使用して、ローエンドまたはハイエンドで制限できます。または、video_configurations
解像度および関連するコーデック設定のカスタムリストを設定することもできます。
GOP の長さ
keyframe_rate
この設定は、GOP
エンコードされたコンテンツの最大長を制御します。HLS/DASH エンコーディングに対応するように設定します。segment_seconds
それ以外の場合は、2 GOP
秒の長さに対応する 0.5 の値をお勧めします。
ビットレートカバレッジ
使用するビットレートの制限は、min_bitrate
およびで制御できます。max_bitrate
設定。これにより、CAE は最初のレンディションに少なくともmin_bitrate
Kbps を割り当てて、最後のレンディションを最大限に制限するように指示します。max_bitrate
Kbps。
レンディションビットレートが適切に配置されるようにするには、min_granularity
およびmax_granularity
設定。たとえば、これらを使用して、あるビットレートから次のビットレートまでのステップが、ビットレートが 50% 以上増加するか、ビットレートが 100% 以上増加するようにすることができます。ほとんどのストリーミングオーサリングガイドラインでは、粒度が 100% を超えないことを推奨しています。
起動待ち時間、ネットワーク状態が悪くなった時の信頼性
ビットレートラダーが常に十分な低いビットレートで開始されるようにするには、max_first_rendition_bitrate
設定を使用します。最初のレンディションビットレートが小さいほど、接続速度が遅いため、ビデオプレーヤーがバッファ処理を行う可能性は低くなります。さらに、ストリーミングマニフェストが最も低いビットレートを最初にロードするように示された場合、これは起動時のレイテンシーにも直接影響します。
レガシーデバイスのサポート
プロファイル H.264 再生のみが可能な古いデバイスをサポートするには、Baseline
select_baseline_profile_configuration
設定。これを設定すると、少なくとも 1 Baseline
つのレンディションがプロファイルでエンコードされます。video_configurations
カスタム設定で追加の制約(コーデックプロファイル、レベル、参照フレーム数、B フレームなど)を制御できます。
select_baseline_profile_configuration
true
はデフォルトでであり、次のものが必要であることに注意してください。 少なくとも 1 つのレンディション 512x288以下の解像度にする必要があります。
VBR 変動制御
最大ピークビットレートは、bitrate_cap_to_bitrate_ratio
および bitrate_cap_offset設定で制御できます。レンディションにビットレート「R
」が選択されている場合、 decoder_bitrate_capは次のように計算されます。
decoder_bitrate_cap = R * bitrate_cap_to_bitrate_ratio + bitrate_cap_offset
同様に、デコーダバッファの制限は、buffer_size_to_bitrate_ratio
およびで制御できます。buffer_size_offset
設定。decoder_buffer_size
は、次のように計算されます。
decoder_buffer_size = R * buffer_size_to_bitrate_ratio + buffer_size_offset
ピークビットレートとバッファの制限は、コーデックプロファイルやレベル設定によっても制限される場合があります。一般的なデバイスの互換性の問題は、2.0 bitrate_cap_to_bitrate_ratio
以下に制限することで回避できます。buffer_size_to_bitrate_ratio
から2.0 * GOP length
(秒単位)。
CAEとセグメント化された出力
CAE は Zencoder のセグメント化された出力と互換性があります。Output
レンディション設定で、type
を次のように設定します。segmented
segment_seconds
と適切な値を指定します。またkeyframe_rate
、fixed_keyframe_interval
設定に設定する必要がありますdynamic_profile_options
。
CAE-HLSの例
{
"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-ダッシュの例
{
"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"
}
]
}
]
}