Opções do manifesto

Este guia descreve a funcionalidade de opções de manifesto suportadas da API Video Stitcher. Isto permite-lhe personalizar o manifesto do vídeo editado. As opções do manifesto são configuradas no pedido de criação da sessão. Para mais informações, consulte o seguinte:

Antes de começar

Certifique-se de que conhece os conceitos introdutórios e a terminologia da API Video Stitcher. Para mais informações, consulte a vista geral técnica.

Introdução

Por predefinição, o manifesto do vídeo unido contém as mesmas representações multimédia que o manifesto do vídeo de origem. O manifesto de origem pode conter várias representações de multimédia que nem todos os leitores conseguem reproduzir. Por exemplo, um vídeo codificado pode conter codecs de vídeo H.264 e H.265, mas um leitor num dispositivo pode apenas conseguir reproduzir H.264.

Ao especificar os codecs ou as taxas de bits a incluir no manifesto de vídeo, pode especificar as representações de vídeo a gerar no manifesto de vídeo unidas.

Opções do manifesto

O objeto ManifestOptions oferece-lhe algumas opções para personalizar o manifesto do vídeo unido.

HLS

Pode personalizar o seguinte para manifestos de vídeo HLS unidos:

  • Filtre por codecs
  • Inclua apenas determinadas resoluções de vídeo
  • Incluir apenas determinadas velocidades de frames
  • Incluir apenas determinadas taxas de bits
  • Ordene as renderizações de vídeo

Para as secções seguintes, considere o seguinte manifesto de vídeo de origem:

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

Filtre por codecs

Para filtrar a renderização de vídeo por codecs, defina os codecs no campo manifestOptions opcional quando criar uma sessão. Por exemplo, para apresentar apenas H.264 no manifesto unido, defina o codec na matriz includeRenditions:

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

O seguinte é apresentado no manifesto unido:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8

Inclua apenas determinadas resoluções de vídeo

Para filtrar a renderização de vídeo por resolução de vídeo, defina a resolução de vídeo no campo manifestOptions opcional quando criar uma sessão. Por exemplo, para apresentar apenas as resoluções de vídeo 1920x1080 e 640x360 no manifesto sincronizado, defina as resoluções de vídeo na matriz includeRenditions:

{
  "manifestOptions": {
    "includeRenditions": [
      {
        "videoResolution": {
          "widthPixels": 1920,
          "heightPixels": 1080,
        },
      },
      {
        "videoResolution": {
          "widthPixels": 640,
          "heightPixels": 360,
        },
      },
    ],
  },
}

O seguinte é apresentado no manifesto unido:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=1920x1080,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=100000,RESOLUTION=640x360,CODECS="hvc1.1.4.L126.B0,mp4a.40.2,FRAME-RATE=50.000"
h265/sd/index.m3u8

Incluir apenas determinadas velocidades de frames

Para filtrar a renderização de vídeo por velocidades de frames, defina a velocidade de frames no campo manifestOptions opcional quando criar uma sessão. Por exemplo, para apresentar apenas as taxas de fotogramas 25.0 no manifesto sincronizado, defina a taxa de fotogramas na matriz includeRenditions:

{
  "manifestOptions": {
    "includeRenditions": [
      {
        "frameRate": 25.0
      },
    ],
  },
}

O seguinte é apresentado no manifesto unido:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/fhd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/sd/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=1280x720,CODECS="avc1.42e00a,mp4a.40.2,FRAME-RATE=25.000"
h264/hd/index.m3u8

Incluir apenas determinadas taxas de bits

Para filtrar a renderização de vídeo por taxas de bits, defina as taxas de bits no campo manifestOptionsopcional quando criar uma sessão. Por exemplo, para apresentar apenas duas taxas de bits no manifesto unidas, defina as taxas de bits na matriz includeRenditions:

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

O seguinte é apresentado no manifesto unido:

#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

Ordenar por velocidade de bits

Alguns leitores podem ser sensíveis à ordem das renderizações de vídeo. Pode definir a ordem das renderizações de vídeo como ascending ou descending, como no seguinte exemplo:

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

O seguinte é apresentado no manifesto unido:

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

DASH

Pode personalizar o seguinte para manifestos de vídeo DASH unidos:

  • Filtre por codecs
  • Inclua apenas determinadas resoluções de vídeo
  • Incluir apenas determinadas velocidades de frames
  • Incluir apenas determinadas taxas de bits
  • Ordene as renderizações de vídeo

Para as secções seguintes, considere o seguinte manifesto de vídeo de origem:

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

Filtre por codecs

Para filtrar a renderização de vídeo por codecs, defina os codecs no campo manifestOptions opcional quando criar uma sessão. Por exemplo, para apresentar apenas H.264 no manifesto unido, defina o codec na matriz includeRenditions:

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

O seguinte é apresentado no manifesto unido:

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

Inclua apenas determinadas resoluções de vídeo

Para filtrar a renderização de vídeo por resolução de vídeo, defina a resolução de vídeo no campo manifestOptions opcional quando criar uma sessão. Por exemplo, para apresentar apenas resoluções de vídeo 640x360 no manifesto sincronizado, defina a resolução de vídeo na matriz includeRenditions:

{
  "manifestOptions": {
    "includeRenditions": [
      {
        "videoResolution": {
          "widthPixels": 640,
          "heightPixels": 360,
        },
      },
    ],
  },
}

O seguinte é apresentado no manifesto unido:

<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" frameRate="25/1">
      ...
    </Representation>
    <Representation mimeType="video/mp4" id="640x360-h265" codecs="hvc1.1.4.L126.B0" width="640" height="360" startWithSAP="1" bandwidth="100000" frameRate="50/1">
      ...
    </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>

Incluir apenas determinadas velocidades de frames

Para filtrar a renderização de vídeo por velocidades de frames, defina a velocidade de frames no campo manifestOptions opcional quando criar uma sessão. Por exemplo, para apresentar apenas a velocidade de frames 25.0 no manifesto sincronizado, defina a velocidade de frames na matriz includeRenditions:

{
  "manifestOptions": {
    "includeRenditions": [
      {
        "frameRate": 25.0
      },
    ],
  },
}

O seguinte é apresentado no manifesto unido:

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

Incluir determinadas taxas de bits

Para filtrar a renderização de vídeo por taxas de bits, defina as taxas de bits no campo manifestOptionsopcional quando criar uma sessão. Por exemplo, para apresentar apenas duas taxas de bits no manifesto unidas, defina as taxas de bits na matriz includeRenditions:

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

O seguinte é apresentado no manifesto unido:

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

Ordenar por velocidade de bits

Alguns leitores podem ser sensíveis à ordem das renderizações de vídeo. Pode definir a ordem das renderizações de vídeo como ascending ou descending, como no seguinte exemplo:

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

O seguinte é apresentado no manifesto unido:

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