개요
프로세스
CAE는 설정을 통해 Zencoder 작업에서 활성화됩니다.
참으로 추가generate_dynamic_profile
dynamic_profile_rendition
작업의 출력에 값. 또한 다음을 추가 할 수 있습니다. 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는 약 30 개의 표준 해상도의 래더를 사용합니다. 192x108
...에7680x4320
. 다음을 사용하여 로우 엔드 또는 하이 엔드로 제한 할 수 있습니다. 최소 해상도과최대 해상도설정. 또는 해상도 및 관련 코덱 설정의 사용자 지정 목록을 제공 할 수 있습니다. video_configurations
환경.
GOP 길이
그만큼keyframe_rate
설정은 최대를 제어합니다GOP
인코딩 된 콘텐츠의 길이. 일치하도록 설정segment_seconds
HLS / DASH 인코딩 용. 그렇지 않으면 2 초에 해당하는 0.5의 값이 권장됩니다. GOP
길이.
비트 레이트 범위
사용할 비트 전송률의 제한은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
환경. 이것이 설정되면 하나 이상의 변환이 다음으로 인코딩됩니다. Baseline
프로필. 추가 제약 (코덱 프로파일, 레벨, 참조 프레임 수, B- 프레임 등)은 사용자 정의로 제어 할 수 있습니다. video_configurations
환경.
참고select_baseline_profile_configuration
이다true
기본적으로하나 이상의 변환해상도가 512x288 이하입니다.
VBR 가변성 제어
최대 최고 비트 전송률은bitrate_cap_to_bitrate_ratio
과 bitrate_cap_offset설정. 비트 전송률 " R
”가 변환으로 선택되면디코더 _ 비트 레이트 _ 캡다음과 같이 계산됩니다.
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
최대 비트 전송률 및 버퍼 제한은 코덱 프로필 및 / 또는 수준 설정에 의해 제한 될 수도 있습니다. 몇 가지 일반적인 장치 호환성 문제는 다음을 제한하여 피할 수 있습니다. bitrate_cap_to_bitrate_ratio
2.0 이하, 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-DASH 예
{
"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"
}
]
}
]
}