Pemetaan streaming

Transcoder API memungkinkan Anda menyambungkan video, mencampur trek audio, dan lainnya. Spesifikasi JobConfig JSON sangat fleksibel, dan ini dapat menciptakan ambiguitas antara input dan output. Anda dapat menentukan pemetaan {i>stream<i} tertentu untuk mengatasi ambiguitas ini. Jika tidak, API akan memberikan pemetaan aliran data default yang wajar untuk Anda.

Halaman ini menampilkan pemetaan streaming default yang disediakan oleh API dan beberapa contoh konfigurasi lanjutan untuk encoding file media input.

Latar belakang

Daftar inputs di JobConfig menentukan file yang akan didownload, bukan cara menggunakannya. Setiap input dipasangkan dengan kunci untuk mengidentifikasinya.

editList menentukan urutan pengeditan sebagai linimasa untuk file output (atau manifes) dari tugas transcoding. inputs pada editList menentukan input mana yang akan digunakan di setiap atom.

Untuk mengetahui informasi selengkapnya, baca bagian Konsep di Ringkasan.

Pemetaan video default

Setiap atom dalam editList harus mereferensikan setidaknya satu input yang berisi jalur video. Jika beberapa input ditentukan untuk atom dan masing-masing berisi jalur video, input pertama dalam daftar inputs akan digunakan sebagai sumber video; ini adalah pemetaan default. Jika tidak ada input yang berisi trek video, tugas akan gagal.

Konfigurasi berikut menggabungkan 5 detik pertama trek video input0.mp4 dengan trek video input1.mov selama 10 detik ke dalam file output:

"inputs": [
  {
    "key": "input0",
    "uri": "gs://my-bucket/input0.mp4"
  },
  {
    "key": "input1",
    "uri": "gs://my-bucket/input1.mov"
  }
],
"editList": [
  {
    "key": "atom0",
    "inputs": ["input0"],
    "endTimeOffset": "5s",
    "startTimeOffset": "0s"
  },
  {
    "key": "atom1",
    "inputs": ["input1"],
    "endTimeOffset": "20s",
    "startTimeOffset": "10s"
  }
]

Lihat Menggabungkan beberapa video input untuk informasi selengkapnya.

Pemetaan audio default

Pemetaan audio berlaku untuk berbagai situasi, terutama saat ada jumlah input audio yang tidak cocok ke output.

Menggabungkan beberapa input

Setiap atom dalam editList harus mereferensikan setidaknya satu input yang berisi trek audio jika audioStream ditentukan. Jika beberapa input ditentukan untuk atom dan masing-masing berisi trek audio, input pertama dalam daftar inputs akan digunakan sebagai sumber audio; ini adalah pemetaan default. Jika tidak ada input yang berisi trek audio, tugas akan gagal.

Transcoder API hanya menghasilkan pemetaan default untuk setiap audioStream yang ditentukan jika pemetaan tidak ditentukan secara eksplisit oleh klien.

Pertimbangkan konfigurasi berikut yang berisi audioStream yang ditentukan:

"inputs": [
  {
    "key": "video_and_stereo_audio",
    "uri": "gs://my-bucket/video_and_stereo_audio.mp4"
  },
  {
    "key": "video_only",
    "uri": "gs://my-bucket/video_only.mov"
  },
  {
    "key": "stereo_audio_only",
    "uri": "gs://my-bucket/stereo_audio_only.mp3"
  }
],
"editList": [
  {
    "key": "atom0",
    "inputs": ["video_and_stereo_audio"]
  },
  {
    "key": "atom1",
    "inputs": ["video_only", "stereo_audio_only"]
  }
],
"elementaryStreams": [
  {
    "key": "output_audio",
    "audioStream": {
      "codec": "aac",
      "bitrateBps": 64000,
      "channelCount": 2, // API default
      "channelLayout": ["fl", "fr"], // API default
      "sampleRateHertz": 48000
    }
  }
]

Transcoder API menghasilkan pemetaan default berikut untuk output audio. Perhatikan bahwa kolom audioStream tidak diterapkan ke input video_only. Meskipun muncul terlebih dahulu dalam daftar inputs, input ini tidak berisi trek audio.

"elementaryStreams": [
  {
    "key": "output_audio",
    "audioStream": {
      "codec": "aac",
      "bitrateBps": 64000,
      "channelCount": 2,
      "channelLayout": ["fl", "fr"],
      "sampleRateHertz": 48000,
      "mapping": [
        {
          "atomKey": "atom0",
          "inputKey": "video_and_stereo_audio",
          "inputTrack": 1,
          "inputChannel": 0,
          "outputChannel": 0,
          "gainDb": 0
        },
        {
          "atomKey": "atom0",
          "inputKey": "video_and_stereo_audio",
          "inputTrack": 1,
          "inputChannel": 1,
          "outputChannel": 1,
          "gainDb": 0
        },
        {
          "atomKey": "atom1",
          "inputKey": "stereo_audio_only",
          "inputTrack": 0,
          "inputChannel": 0,
          "outputChannel": 0,
          "gainDb": 0
        },
        {
          "atomKey": "atom1",
          "inputKey": "stereo_audio_only",
          "inputTrack": 0,
          "inputChannel": 1,
          "outputChannel": 1,
          "gainDb": 0
        }
      ]
    }
  }
]

N hingga n salinan

Jika jumlah saluran dalam trek audio input sama dengan jumlah saluran dalam audioStream output, Transcoder API akan menyalin saluran input ke saluran output.

Pertimbangkan konfigurasi berikut yang berisi input dengan audio stereo dua saluran dan audioStream yang ditentukan dengan 2 saluran:

"inputs": [
  {
    "key": "video_and_stereo_audio",
    "uri": "gs://my-bucket/video_and_stereo_audio.mp4"
  }
],
"editList": [
  {
    "key": "atom0",
    "inputs": ["video_and_stereo_audio"]
  }
],
"elementaryStreams": [
  {
    "key": "output_audio",
    "audioStream": {
      "codec": "aac",
      "bitrateBps": 64000,
      "channelCount": 2, // API default
      "channelLayout": ["fl", "fr"], // API default
      "sampleRateHertz": 48000
    }
  }
]

Transcoder API menghasilkan pemetaan default berikut untuk output audio:

"elementaryStreams": [
  {
    "key": "output_audio",
    "audioStream": {
      "codec": "aac",
      "bitrateBps": 64000,
      "channelCount": 2,
      "channelLayout": ["fl", "fr"],
      "sampleRateHertz": 48000,
      "mapping": [
        {
          "atomKey": "atom0",
          "inputKey": "video_and_stereo_audio",
          "inputTrack": 1,
          "inputChannel": 0,
          "outputChannel": 0,
          "gainDb": 0
        },
        {
          "atomKey": "atom0",
          "inputKey": "video_and_stereo_audio",
          "inputTrack": 1,
          "inputChannel": 1,
          "outputChannel": 1,
          "gainDb": 0
        }
      ]
    }
  }
]

N ke 1 downmix

Jika jumlah saluran dalam trek audio input lebih besar dari jumlah saluran dalam audioStream output, Transcoder API akan menyalin semua saluran input ke dalam satu saluran output.

Jika audioStream menentukan beberapa saluran output, satu saluran output akan disalin dan digunakan untuk setiap saluran output. Misalnya, jika trek audio input terdiri dari 5 saluran dan audioStream menentukan 2 saluran output, kedua saluran output tersebut akan berisi audio yang sama persis, yaitu downmix dari 5 saluran input.

Pertimbangkan konfigurasi berikut yang berisi input dengan audio stereo dua saluran dan audioStream yang ditentukan dengan satu saluran output:

"inputs": [
  {
    "key": "video_and_stereo_audio",
    "uri": "gs://my-bucket/video_and_stereo_audio.mp4"
  }
],
"editList": [
  {
    "key": "atom0",
    "inputs": ["video_and_stereo_audio"]
  }
],
"elementaryStreams": [
  {
    "key": "output_audio",
    "audioStream": {
      "codec": "aac",
      "bitrateBps": 64000,
      "channelCount": 1,
      "channelLayout": ["fc"],
      "sampleRateHertz": 48000
    }
  }
]

Transcoder API menghasilkan pemetaan default berikut untuk output audio:

"elementaryStreams": [
  {
    "key": "output_mono_audio",
    "audioStream": {
      "codec": "aac",
      "bitrateBps": 64000,
      "channelCount": 1,
      "channelLayout": ["fc"],
      "sampleRateHertz": 48000,
      "mapping": [
        {
          "atomKey": "atom0",
          "inputKey": "video_and_stereo_audio",
          "inputTrack": 1,
          "inputChannel": 0,
          "outputChannel": 0,
          "gainDb": 0
        },
        {
          "atomKey": "atom0",
          "inputKey": "video_and_stereo_audio",
          "inputTrack": 1,
          "inputChannel": 1,
          "outputChannel": 0,
          "gainDb": 0
        }
      ]
    }
  }
]

1 ke N salinan

Jika jumlah saluran dalam trek audio input kurang dari jumlah saluran dalam audioStream output, Transcoder API akan menyalin saluran input pertama ke setiap saluran output.

Pertimbangkan konfigurasi berikut yang berisi input dengan audio mono satu saluran dan audioStream yang ditentukan dengan 2 saluran output:

"inputs": [
  {
    "key": "video_and_mono_audio",
    "uri": "gs://my-bucket/video_and_mono_audio.mp4"
  }
],
"editList": [
  {
    "key": "atom0",
    "inputs": ["video_and_mono_audio"]
  }
],
"elementaryStreams": [
  {
    "key": "output_mono_audio",
    "audioStream": {
      "codec": "aac",
      "bitrateBps": 64000,
      "channelCount": 2, // API default
      "channelLayout": ["fl", "fr"], // API default
      "sampleRateHertz": 48000
    }
  }
]

Transcoder API menghasilkan pemetaan default berikut untuk output audio:

"elementaryStreams": [
  {
    "key": "output_mono_audio",
    "audioStream": {
      "codec": "aac",
      "bitrateBps": 64000,
      "channelCount": 2,
      "channelLayout": ["fl", "fr"],
      "sampleRateHertz": 48000,
      "mapping": [
        {
          "atomKey": "atom0",
          "inputKey": "video_and_mono_audio",
          "inputTrack": 1,
          "inputChannel": 0,
          "outputChannel": 0,
          "gainDb": 0
        },
        {
          "atomKey": "atom0",
          "inputKey": "video_and_mono_audio",
          "inputTrack": 1,
          "inputChannel": 0,
          "outputChannel": 1,
          "gainDb": 0
        }
      ]
    }
  }
]

Pemetaan teks default

Pemetaan teks umumnya digunakan untuk sub judul dan {i>closed captioning<i} (CC).

Setiap atom dalam editList harus mereferensikan setidaknya satu input yang berisi jalur teks jika textStream ditentukan. Jika beberapa input ditentukan untuk atom dan masing-masing berisi trek teks, input pertama dalam daftar inputs akan digunakan sebagai sumber teks; ini adalah pemetaan default. Jika tidak ada input yang berisi trek teks, tugas akan gagal.

"inputs": [
  {
    "key": "video_and_audio",
    "uri": "gs://my-bucket/video_and_audio.mp4"
  },
  {
    "key": "sub",
    "uri": "gs://my-bucket/sub.srt"
  }
],
"editList": [
  {
    "key": "atom0",
    "inputs": ["video_and_audio", "sub"]
  }
],
"elementaryStreams": [
  {
    "key": "output_sub",
    "textStream": {
      "codec": "webvtt"
    }
  }
]

Transcoder API menghasilkan pemetaan default berikut untuk output teks:

"elementaryStreams": [
  {
    "key": "output_sub",
    "textStream": {
      "codec": "webvtt",
      "mapping": [
        {
          "atomKey": "atom0",
          "inputKey": "caption_input0",
          "inputTrack": 0
        }
      ]
    }
  }
]