CAE 가이드

CAE (컨텍스트 인식 인코딩) 는 각 소스 비디오를 분석하고 각 컨텐츠에 대한 사용자 정의 비트레이트 래더 (변환 세트) 를 지능적으로 구축합니다. 또한 컨텍스트 인식 인코딩은 콘텐츠를 보는 데 사용되는 전송 네트워크 및 장치와 관련된 제약 조건을 고려합니다. 모든 제목에서 일관된 품질 수준을 유지하면서 필요한 변환 수와 각 변환에 사용할 해상도 및 비트 전송률을 결정합니다. 따라서 저장 공간 및 대역폭 비용을 대폭 절감하는 동시에 사용자의 재생 환경을 개선할 수 있습니다. 추가 정보는컨텍스트 인식 인코딩 개요 .

개요

프로세스

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_bitratemax_bitrate설정. 이렇게하면 CAE가 최소한min_bitrate첫 번째 변환의 경우 Kbps이고 마지막 변환은 최대로 제한max_bitrate Kbps.

변환 비트 전송률의 간격이 적절한 지 확인하려면min_granularitymax_granularity설정. 예를 들어, 한 비트 전송률에서 다음 전송률까지의 단계가 비트 전송률이 50 % 이상 증가하거나 비트 전송률이 100 % 이상 증가하는지 확인하는 데 사용할 수 있습니다. 대부분의 스트리밍 제작 지침은 세분성이 100 %를 초과하지 않도록 권장합니다.

시작 지연, 열악한 네트워크 조건에서의 안정성

비트 레이트 래더가 항상 충분히 낮은 비트 레이트로 시작되도록하려면max_first_rendition_bitrate환경. 첫 번째 변환 비트 전송률이 낮을수록 낮은 연결 속도로 인해 비디오 플레이어가 버퍼링해야 할 가능성이 줄어 듭니다. 또한 스트리밍 매니페스트가 가장 낮은 비트 전송률을 먼저로드하도록 표시하면 시작 지연 시간에도 직접적인 영향을 미칩니다.

레거시 장치 지원

기능 만 가능한 구형 장치를 지원하려면Baseline프로필 H.264 재생, 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_ratiobuffer_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_ratefixed_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"
          }
        ]
      }
    ]
   }