このページでは、複数の入力動画を 1 つの出力動画に連結する方法について説明します。入力動画のタイムラインをカットすることもできます。
入力された動画ごとに、Input
オブジェクトを inputs
配列に追加します。
各 Input
オブジェクトは、関連付けられた入力動画のキーと URI を定義します。オプションの PreprocessingConfig
オブジェクトを Input
に追加してクロップしたり、パディングしたりできます。また、入力動画に対して他の前処理を行うことができます。inputs
配列は順序付けされていません。入力動画を任意の順序で追加できます。
入力動画を出力動画のタイムラインに追加するには、editList
配列に EditAtom
オブジェクトを追加します。editList
配列は順序付けられています。この配列で指定された最初の入力動画が最初に出力動画で使用されます。2 番目の入力動画が次に使用されます。入力された動画は、そのキーで識別されます。
startTimeOffset
と endTimeOffset
を指定して、入力動画をトリミングできます。このフィールドは省略可能です。これらのフィールドを指定しない場合は、入力動画全体が使用されます。
次の構成では、2 つの入力動画を連結して 1 つの出力動画にします。
"inputs": [
{
"key": "input1",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO1"
},
{
"key": "input2",
"uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO2"
}
],
"editList": [
{
"key": "atom1",
"inputs": [
"input1"
],
"startTimeOffset": "START_TIME_OFFSET1s",
"endTimeOffset": "END_TIME_OFFSET1s"
},
{
"key": "atom2",
"inputs": [
"input2"
],
"startTimeOffset": "START_TIME_OFFSET2s",
"endTimeOffset": "END_TIME_OFFSET2s"
}
],
この構成をジョブ テンプレートに追加するか、アドホック ジョブ構成に含めることができます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID
: IAM 設定に載っている Google Cloud プロジェクト ID。LOCATION
: ジョブを実行するロケーション。サポートされているリージョンのいずれかを使用します。ロケーションを表示us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: 作成した Cloud Storage バケットの名前。STORAGE_INPUT_VIDEO1
: コード変換する Cloud Storage バケット内の動画の名前(my-vid.mp4
など)。このフィールドでは、バケットに作成したフォルダ(input/my-vid.mp4
など)を考慮する必要があります。この動画が出力動画のタイムラインで最初に使用されます。START_TIME_OFFSET1
: 最初の入力動画のタイムラインを基準として秒の小数部までを示す開始時間(0.0
など)。このフィールドを使用して、動画の先頭からコンテンツをカットします。END_TIME_OFFSET1
: 最初の入力動画のタイムラインを基準として秒の小数部までを示す終了時間(8.1
など)。このフィールドを使用して、動画の終わりからコンテンツをカットします。STORAGE_INPUT_VIDEO2
: コード変換する Cloud Storage バケット内の動画の名前(my-vid.mp4
など)。このフィールドでは、バケットに作成したフォルダ(input/my-vid.mp4
など)を考慮する必要があります。この動画が出力動画のタイムラインで 2 番目に使用されます。START_TIME_OFFSET2
: 2 番目の入力動画のタイムラインを基準として秒の小数部までを示す開始時間(3.5
など)。このフィールドを使用して、2 番目の動画の先頭からコンテンツをカットします。END_TIME_OFFSET2
: 2 番目の入力動画のタイムラインを基準として秒の小数部までを示す終了時間(15
など)。このフィールドを使用して、2 番目の動画の終わりからコンテンツをカットします。STORAGE_OUTPUT_FOLDER
: エンコードされた動画出力を保存する Cloud Storage フォルダ名。
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud
- ジョブ フィールドを定義する
request.json
ファイルを作成します。gcloud
コマンドを次のように置き換えます。- LOCATION: ジョブを実行するロケーション。サポートされているリージョンのいずれかを使用します。
ロケーションを表示
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
northamerica-northeast1
asia-east1
asia-northeast1
asia-northeast3
asia-south1
asia-southeast1
australia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_BUCKET_NAME: 作成した Cloud Storage バケットの名前。
- STORAGE_INPUT_VIDEO1: コード変換する Cloud Storage バケット内の動画の名前(
my-vid.mp4
など)。このフィールドでは、バケットに作成したフォルダ(input/my-vid.mp4
など)を考慮する必要があります。この動画が出力動画のタイムラインで最初に使用されます。 - START_TIME_OFFSET1: 最初の入力動画のタイムラインを基準として秒の小数部までを示す開始時間(
0.0
など)。このフィールドを使用して、動画の先頭からコンテンツをカットします。 - END_TIME_OFFSET1: 最初の入力動画のタイムラインを基準として秒の小数部までを示す終了時間(
8.1
など)。このフィールドを使用して、動画の終わりからコンテンツをカットします。 - STORAGE_INPUT_VIDEO2: コード変換する Cloud Storage バケット内の動画の名前(
my-vid.mp4
など)。このフィールドでは、バケットに作成したフォルダ(input/my-vid.mp4
など)を考慮する必要があります。この動画が出力動画のタイムラインで 2 番目に使用されます。 - START_TIME_OFFSET2: 2 番目の入力動画のタイムラインを基準として秒の小数部までを示す開始時間(
3.5
など)。このフィールドを使用して、2 番目の動画の先頭からコンテンツをカットします。 - END_TIME_OFFSET2: 2 番目の入力動画のタイムラインを基準として秒の小数部までを示す終了時間(
15
など)。このフィールドを使用して、2 番目の動画の終わりからコンテンツをカットします。 - STORAGE_OUTPUT_FOLDER: エンコードされた動画出力を保存する Cloud Storage フォルダ名。
{ "config": { "inputs": [ { "key": "input1", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO1" }, { "key": "input2", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO2" } ], "editList": [ { "key": "atom1", "inputs": [ "input1" ], "startTimeOffset": "START_TIME_OFFSET1s", "endTimeOffset": "END_TIME_OFFSET1s" }, { "key": "atom2", "inputs": [ "input2" ], "startTimeOffset": "START_TIME_OFFSET2s", "endTimeOffset": "END_TIME_OFFSET2s" } ], "elementaryStreams": [ { "key": "video-stream0", "videoStream": { "h264": { "heightPixels": 360, "widthPixels": 640, "bitrateBps": 550000, "frameRate": 60 } } }, { "key": "audio-stream0", "audioStream": { "codec": "aac", "bitrateBps": 64000 } } ], "muxStreams": [ { "key": "sd", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } } }
- LOCATION: ジョブを実行するロケーション。サポートされているリージョンのいずれかを使用します。
- 次のコマンドを実行します。
次のようなレスポンスが表示されます。gcloud transcoder jobs create --location=LOCATION --file="request.json"
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
このサンプルを試す前に、クライアント ライブラリを使用した Transcoder API クイックスタートにある C# の設定手順を行ってください。 詳細については、Transcoder API C# の API のリファレンス ドキュメントをご覧ください。
Transcoder API への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Go
このサンプルを試す前に、クライアント ライブラリを使用した Transcoder API クイックスタートにある Go の設定手順を行ってください。 詳細については、Transcoder API Go の API のリファレンス ドキュメントをご覧ください。
Transcoder API への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
このサンプルを試す前に、クライアント ライブラリを使用した Transcoder API クイックスタートにある Java の設定手順を行ってください。 詳細については、Transcoder API Java の API のリファレンス ドキュメントをご覧ください。
Transcoder API への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Node.js
このサンプルを試す前に、クライアント ライブラリを使用した Transcoder API クイックスタートにある Node.js の設定手順を行ってください。 詳細については、Transcoder API Node.js の API のリファレンス ドキュメントをご覧ください。
Transcoder API への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
PHP
このサンプルを試す前に、クライアント ライブラリを使用した Transcoder API クイックスタートにある PHP の設定手順を行ってください。 詳細については、Transcoder API PHP の API のリファレンス ドキュメントをご覧ください。
Transcoder API への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
このサンプルを試す前に、クライアント ライブラリを使用した Transcoder API クイックスタートにある Python の設定手順を行ってください。 詳細については、Transcoder API Python の API のリファレンス ドキュメントをご覧ください。
Transcoder API への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Ruby
このサンプルを試す前に、クライアント ライブラリを使用した Transcoder API クイックスタートにある Ruby の設定手順を行ってください。 詳細については、Transcoder API Ruby の API のリファレンス ドキュメントをご覧ください。
Transcoder API への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
例
次のようなサンプル動画を考えます。
どちらの動画も次の 3 つの要素を含んでいるという点で類似しています。
- モバイル デバイスで映画やゲームを視聴する
- 同じコンテンツを大画面で視聴する
- プロダクトの簡潔な広告コピーを表示する
たとえば、出力動画に最初の動画の要素 1 と要素 2 および 2 番目の動画の要素 2 と要素 3 が表示されるように、この 2 つの動画を連結できます。次の時間オフセットを使用すると、この連結を実現できます。
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
これら 2 つの動画に伴う上述のコードおよび時間オフセットを使用して、アクション満載の結果動画を表示します。