Pemetaan streaming

Transcoder API memungkinkan Anda menyambungkan video, memadukan trek audio, dan lainnya. Spesifikasi JSON JobConfig sangat fleksibel, dan hal ini dapat menimbulkan ambiguitas antara input dan output. Anda dapat menentukan pemetaan aliran data tertentu untuk menghapus ambiguitas ini. Jika tidak, API akan menyediakan pemetaan streaming 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 dalam JobConfig menentukan file yang akan didownload, bukan cara menggunakannya. Setiap input disambungkan dengan kunci untuk mengidentifikasinya.

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

Untuk mengetahui informasi selengkapnya, baca bagian Konsep di Ringkasan.

Pemetaan video default

Setiap atom dalam editList harus mereferensikan minimal satu input yang berisi jalur video. Jika beberapa input ditentukan untuk atom dan masing-masing berisi trek 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 menyambungkan 5 detik pertama trek video input0.mp4 dengan 10 detik trek video input1.mov 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 mengetahui informasi selengkapnya.

Pemetaan audio default

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

Menggabungkan beberapa input

Setiap atom dalam editList harus mereferensikan minimal 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 input ini muncul pertama kali dalam daftar inputs, input ini tidak berisi jalur 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
        }
      ]
    }
  }
]

Salinan N hingga n

Jika jumlah saluran dalam trek audio input cocok 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
        }
      ]
    }
  }
]

Downmix N ke 1

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
        }
      ]
    }
  }
]

Salinan 1 hingga N

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 biasanya digunakan untuk subtitel dan teks tertutup (CC).

Setiap atom dalam editList harus mereferensikan minimal satu input yang berisi jalur teks jika textStream ditentukan. Jika beberapa input ditentukan untuk atom dan masing-masing berisi jalur 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
        }
      ]
    }
  }
]