매니페스트 옵션

이 가이드에서는 Video Stitcher API에서 지원되는 매니페스트 옵션 기능을 설명합니다. 이를 통해 병합된 동영상 매니페스트를 맞춤설정할 수 있습니다. 매니페스트 옵션은 세션 생성 요청에서 구성됩니다. 자세한 내용은 다음을 참조하세요.

시작하기 전에

Video Stitcher API의 입문 개념과 용어를 익혀야 합니다. 자세한 내용은 기술 개요를 참고하세요.

소개

기본적으로 병합된 동영상 매니페스트에는 소스 동영상 매니페스트와 동일한 미디어 버전이 포함됩니다. 소스 매니페스트에는 일부 플레이어에서 재생할 수 없는 여러 미디어 버전이 포함될 수 있습니다. 예를 들어 인코딩된 동영상에 H.264 및 H.265 동영상 코덱이 모두 포함되어 있을 수 있지만 한 기기의 플레이어는 H.264만 재생할 수 있습니다.

동영상 매니페스트에 포함할 코덱 또는 비트 전송률을 지정하면 병합된 동영상 매니페스트에서 출력할 동영상 버전을 지정할 수 있습니다.

매니페스트 옵션

ManifestOptions 객체는 병합된 동영상 매니페스트를 맞춤설정하는 몇 가지 옵션을 제공합니다.

HLS

스터디 HLS 동영상 매니페스트의 경우 다음을 맞춤설정할 수 있습니다.

  • 코덱별 필터링
  • 특정 비트 전송률만 포함
  • 동영상 버전 주문

다음 섹션에서는 다음과 같은 소스 동영상 매니페스트를 가정합니다.

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
h264/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2"
h264/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=1920x1080,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=100000,RESOLUTION=640x360,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=200000,RESOLUTION=1280x720,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/hd/index.m3u8

코덱별 필터링

코덱별로 동영상 렌더링을 필터링하려면 세션을 만들 때 선택적 manifestOptions 필드에 코덱을 설정합니다. 예를 들어 꿰맨 매니페스트에 H.264만 표시하려면 includeRenditions 배열에서 코덱을 설정합니다.

{
  "manifestOptions": {
    "includeRenditions": [
      {
        "codecs": "avc1.42e00a,mp4a.40.2",
      },
    ],
  },
}

꿰맨 매니페스트에는 다음이 표시됩니다.

#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
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2"
h264/index.m3u8

특정 비트 전송률만 포함

비트 전송률로 동영상 렌더링을 필터링하려면 세션을 만들 때 선택사항인 manifestOptions 필드에 비트 전송률을 설정합니다. 예를 들어 꿰맨 매니페스트에 비트 전송률 2개만 표시하려면 includeRenditions 배열에서 비트 전송률을 설정합니다.

{
  "manifestOptions": {
    "includeRenditions": [
      {
        "bitrateBps": 150000,
      },
      {
        "bitrateBps": 440000,
      },
    ],
  },
}

꿰맨 매니페스트에는 다음이 표시됩니다.

#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

비트 전송률순 정렬

일부 플레이어는 동영상 버전의 순서에 민감할 수 있습니다. 다음과 같이 동영상 렌더링 순서를 ascending 또는 descending로 설정할 수 있습니다.

{
  "manifestOptions": {
    "bitrateOrder": "ascending",
  },
}

꿰맨 매니페스트에는 다음이 표시됩니다.

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=100000,RESOLUTION=640x360,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=200000,RESOLUTION=1280x720,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2"
h264/hd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=1920x1080,CODECS="hvc1.1.4.L126.B0,mp4a.40.2"
h264/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
h264/fhd/index.m3u8

DASH

스터디 DASH 동영상 매니페스트의 경우 다음을 맞춤설정할 수 있습니다.

  • 코덱별 필터링
  • 특정 비트 전송률만 포함
  • 동영상 버전 주문

다음 섹션에서는 다음과 같은 소스 동영상 매니페스트를 가정합니다.

<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">
      ...
    </Representation>
    <Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000">
      ...
    </Representation>
    <Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000">
      ...
    </Representation>
    <Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000">
      ...
    </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>

코덱별 필터링

코덱별로 동영상 렌더링을 필터링하려면 세션을 만들 때 선택적 manifestOptions 필드에 코덱을 설정합니다. 예를 들어 꿰맨 매니페스트에 H.264만 표시하려면 includeRenditions 배열에서 코덱을 설정합니다.

{
  "manifestOptions": {
    "includeRenditions": [
      {
        "codecs": "hvc1.1.4.L126.B0",
      },
    ],
  },
}

꿰맨 매니페스트에는 다음이 표시됩니다.

<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">
      ...
    </Representation>
    <Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000">
      ...
    </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>

특정 비트 전송률 포함

비트 전송률로 동영상 렌더링을 필터링하려면 세션을 만들 때 선택사항인 manifestOptions 필드에 비트 전송률을 설정합니다. 예를 들어 꿰맨 매니페스트에 비트 전송률 2개만 표시하려면 includeRenditions 배열에서 비트 전송률을 설정합니다.

{
  "manifestOptions": {
    "includeRenditions": [
      {
        "bitrateBps": 150000,
      },
      {
        "bitrateBps": 240000,
      },
    ],
  },
}

꿰맨 매니페스트에는 다음이 표시됩니다.

<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">
      ...
    </Representation>
    <Representation mimeType="video/mp4" id="1280x720-h264" codecs="avc1.64001E" width="1280" height="720" startWithSAP="1" bandwidth="240000">
      ...
    </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>

비트 전송률순 정렬

일부 플레이어는 동영상 버전의 순서에 민감할 수 있습니다. 다음과 같이 동영상 렌더링 순서를 ascending 또는 descending로 설정할 수 있습니다.

{
  "manifestOptions": {
    "bitrateOrder": "descending",
  },
}

꿰맨 매니페스트에는 다음이 표시됩니다.

<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">
      ...
    </Representation>
    <Representation mimeType="video/mp4" id="1280x720-h265" codecs="hvc1.1.4.L126.B0" width="1280" height="720" startWithSAP="1" bandwidth="200000">
      ...
    </Representation>
    <Representation mimeType="video/mp4" id="640x360-h264" codecs="avc1.64001E" width="640" height="360" startWithSAP="1" bandwidth="150000">
      ...
    </Representation>
    <Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000">
      ...
    </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>