このページでは、コード変換された動画にオーバーレイを挿入する方法について説明します。オーバーレイは出力動画の上に重ねて挿入される画像で構成され、必要に応じて指定した期間内でフェードインまたはフェードアウトできます。オーバーレイを挿入するには、JobConfig
テンプレート内の overlays
配列を使用します。
サポートされている画像ファイル形式のリストをご覧ください。
Cloud Storage に画像をアップロードする
まず、次の手順で、オーバーレイ イメージを Cloud Storage バケットにアップロードします。
- Google Cloud コンソールで、Cloud Storage ブラウザページに移動します。
[Cloud Storage ブラウザ] ページに移動 - バケットの名前をクリックしてバケットを開きます。
- [ファイルをアップロード] をクリックします。
- ローカルマシンからアップロードする画像ファイルを選択します。
オーバーレイを作成する
静的とアニメーションの 2 種類のオーバーレイを作成できます。どちらのオーバーレイも静止画像を使用します。静的オーバーレイの表示と非表示を切り替えることができます。アニメーション オーバーレイは、画像のフェードインとフェードアウトをサポートしています。
1 つの出力動画に複数のオーバーレイを挿入できます。
静的オーバーレイを作成する
image
オブジェクトの uri
フィールドを使用して、Cloud Storage 内のオーバーレイ イメージを指定します。resolution
オブジェクトで、x と y の値を 0~1.0 に設定します。値が 0 の場合は、そのサイズに対するソース画像の解像度が維持されます。値が 1.0 の場合は、出力動画のサイズに合わせて画像が伸縮されます。たとえば、x: 1
と y:
0.5
の値を使用すると、出力動画と同じ幅で、高さは出力動画の半分に伸縮されます。
animations
配列で、x と y 座標が 0 から 1.0 の animationStatic
オブジェクトを作成します。これらの座標は、出力動画の解像度に基づきます。値 x: 0
と y: 0
を使用して、出力動画の左上隅にオーバーレイの左上隅を配置します。オーバーレイを出力動画のタイムラインに表示するタイミングは、startTimeOffset
フィールドを使用して指定します。
静的アニメーションを削除するには、animationEnd
オブジェクトを作成します。startTimeOffset
フィールドを使用して、出力動画タイムラインでアニメーションを終了する(つまり、オーバーレイを非表示にする)タイミングを指定します。
この構成をジョブ テンプレートに追加するか、アドホック ジョブ構成に含めることができます。
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_VIDEO
: コード変換する Cloud Storage バケット内の動画の名前(my-vid.mp4
など)。このフィールドでは、バケットで作成したフォルダ(input/my-vid.mp4
など)を考慮する必要があります。STORAGE_INPUT_OVERLAY
: Cloud Storage バケットにありオーバーレイに使用する画像の名前(my-overlay.png
など)。このフィールドでは、バケットで作成したフォルダ(input/my-overlay.png
など)を考慮する必要があります。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
コマンドを次のように置き換えます。- STORAGE_BUCKET_NAME: 作成した Cloud Storage バケットの名前。
- STORAGE_INPUT_VIDEO: コード変換する Cloud Storage バケット内の動画の名前(
my-vid.mp4
など)。このフィールドでは、バケットで作成したフォルダ(input/my-vid.mp4
など)を考慮する必要があります。 - STORAGE_INPUT_OVERLAY: Cloud Storage バケットにありオーバーレイに使用する画像ファイルの名前(
my-overlay.png
など)。このフィールドでは、バケットに作成したフォルダ(input/my-overlay.png
など)を含める必要があります。 - LOCATION: ジョブを実行するロケーション。次に挙げるロケーションの 1 つを使用します。
ロケーションを表示
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_OUTPUT_FOLDER: エンコードされた動画出力を保存する Cloud Storage フォルダ名。
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "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/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 1, "y": 0.5 }, "alpha": 1 }, "animations": [ { "animationStatic": { "xy": { "x": 0, "y": 0 }, "startTimeOffset": "0s" } }, { "animationEnd": { "startTimeOffset": "10s" } } ] } ] } }
- 次のコマンドを実行します。
次のようなレスポンスが表示されます。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 への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
出力動画に表示される静的オーバーレイは、次の特性を有しています。
- タイムラインの始めに 10 秒間表示されます。
- 出力動画の全幅と半分の高さの両方を継承します。
- 出力動画の左上隅に配置されます。
この構成については、サンプル出力動画をご覧ください。この動画では、サンプル オーバーレイ画像を使用しています。
アニメーション オーバーレイの作成
image
オブジェクトの uri
フィールドを使用して、Cloud Storage 内のオーバーレイ イメージを指定します。resolution
オブジェクトで、x と y の値を 0~1.0 に設定します。値が 0 の場合は、そのサイズに対するソース画像の解像度が維持されます。値が 1.0 の場合は、出力動画のサイズに合わせて画像が伸縮されます。たとえば、値 x: 0
と y: 0
を使用して、オーバーレイ画像の元の解像度を維持します。
animations
配列で、fadeType
を FADE_IN
として animationFade
オブジェクトを作成します。x 座標と y 座標は、0~1.0 に設定します。これらの座標は、出力動画の解像度に基づきます。値 x: 0.5
と y: 0.5
を使用して、出力動画の中心にオーバーレイの左上隅を配置します。startTimeOffset
フィールドを使用して、出力動画タイムラインでオーバーレイを表示し始めるタイミングを指定します。オーバーレイは、endTimeOffset
フィールドで設定された時間に完全に表示されます。
オーバーレイをフェードアウトするには、別の animationFade
オブジェクトを作成します。今回は、fadeType
を FADE_OUT
に設定します。前と同じように、位置座標、開始時刻、終了時刻を入力します。
この構成をジョブ テンプレートに追加するか、アドホック ジョブ構成に含めることができます。
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_VIDEO
: コード変換する Cloud Storage バケット内の動画の名前(my-vid.mp4
など)。このフィールドでは、バケットで作成したフォルダ(input/my-vid.mp4
など)を考慮する必要があります。STORAGE_INPUT_OVERLAY
: Cloud Storage バケットにありオーバーレイに使用する画像の名前(my-overlay.png
など)。このフィールドでは、バケットで作成したフォルダ(input/my-overlay.png
など)を考慮する必要があります。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
コマンドを次のように置き換えます。- STORAGE_BUCKET_NAME: 作成した Cloud Storage バケットの名前。
- STORAGE_INPUT_VIDEO: コード変換する Cloud Storage バケット内の動画の名前(
my-vid.mp4
など)。このフィールドでは、バケットで作成したフォルダ(input/my-vid.mp4
など)を考慮する必要があります。 - STORAGE_INPUT_OVERLAY: Cloud Storage バケットにありオーバーレイに使用する画像ファイルの名前(
my-overlay.png
など)。このフィールドでは、バケットに作成したフォルダ(input/my-overlay.png
など)を含める必要があります。 - LOCATION: ジョブを実行するロケーション。次に挙げるロケーションの 1 つを使用します。
ロケーションを表示
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_OUTPUT_FOLDER: エンコードされた動画出力を保存する Cloud Storage フォルダ名。
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "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/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 0, "y": 0 }, "alpha": 1 }, "animations": [ { "animationFade": { "fadeType": "FADE_IN", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "5s", "endTimeOffset": "10s" } }, { "animationFade": { "fadeType": "FADE_OUT", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "12s", "endTimeOffset": "15s" } } ] } ] } }
- 次のコマンドを実行します。
次のようなレスポンスが表示されます。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 への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
結果として生成される動画では、アニメーション オーバーレイに次のような特徴があります。
- 出力動画の 5 秒のマークでフェードインを開始します。オーバーレイのアルファ値は 0 から始まり、1.0 で終了します。オーバーレイの左上隅が出力動画の中央に表示されます。オーバーレイは、オーバーレイ画像の元の解像度で表示されます。
- フェードイン後、オーバーレイは 2 秒間表示されます。
- 出力動画の 12 秒のマークでフェードアウトを開始します。オーバーレイのアルファ値は 1.0 で始まり、0 で終了します。
- 15 秒のマークでアニメーションが非表示になります。
この構成については、サンプル出力動画をご覧ください。この動画では、サンプル オーバーレイ画像を使用しています。