本頁說明如何在轉碼後的影片中插入疊加層。疊加層是由插入輸出影片頂端的圖片組成,並可選擇在指定時間範圍內淡入或淡出。如要插入疊加層,請使用 JobConfig 範本中的 overlays 陣列。
請參閱支援的圖片檔案格式清單。
將圖片上傳至 Cloud Storage
如要開始使用,請按照下列步驟將重疊圖片上傳至 Cloud Storage bucket:
- 前往 Google Cloud 控制台的 Cloud Storage 瀏覽器頁面。
前往 Cloud Storage 瀏覽器頁面 - 按一下 bucket 名稱即可開啟。
- 按一下「上傳檔案」。
- 從本機電腦選取要上傳的圖片檔。
建立重疊元素
你可以建立兩種疊加效果:靜態或動畫。這兩種疊加層都使用靜態圖片。 你可以顯示或隱藏靜態重疊畫面。動畫疊加層支援圖片的淡入和淡出動畫。
您可以在單一輸出影片中插入多個疊加效果。
建立靜態重疊元素
在 image 物件中,使用 uri 欄位指定 Cloud Storage 中的疊加圖片。在 resolution 物件中,將 x 和 y 值設為 0 到 1.0。值為 0 時,該維度會維持來源圖片的解析度;值為 1.0 時,圖片會延展以符合輸出影片的維度。舉例來說,使用 x: 1 和 y:
0.5 值,將疊加圖片延展為輸出影片的完整寬度,以及一半的高度。
在 animations 陣列中,建立 animationStatic 物件,並使用介於 0 到 1.0 的 x 和 y 座標。這些座標是依據輸出影片的解析度計算。使用 x: 0 和 y: 0 值,將疊加層的左上角放置在輸出影片的左上角。使用 startTimeOffset 欄位,指定要在輸出影片時間軸的哪個時間點顯示疊加效果。
如要移除靜態動畫,請建立 animationEnd 物件。使用 startTimeOffset 欄位,在輸出影片時間軸中指定動畫結束時間 (即重疊畫面消失的時間)。
REST
使用任何要求資料之前,請先修改下列項目的值:
PROJECT_ID: Google Cloud 列於「IAM 設定」的專案 ID。LOCATION:工作執行的位置。使用支援的區域。顯示地區us-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
STORAGE_BUCKET_NAME:您建立的 Cloud Storage bucket 名稱。STORAGE_INPUT_VIDEO:Cloud Storage bucket 中要轉碼的影片名稱,例如my-vid.mp4。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如input/my-vid.mp4)。STORAGE_INPUT_OVERLAY:Cloud Storage bucket 中用於疊加的圖片名稱,例如my-overlay.png。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如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 bucket 名稱。
- STORAGE_INPUT_VIDEO:Cloud Storage bucket 中要轉碼的影片名稱,例如
my-vid.mp4。這個欄位應將您在 bucket 中建立的任何資料夾納入考量 (例如input/my-vid.mp4)。 - STORAGE_INPUT_OVERLAY:Cloud Storage bucket 中用於疊加的圖片檔案名稱,例如
my-overlay.png。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如input/my-overlay.png)。 - LOCATION:工作執行的位置。請使用下列清單中的地點。
顯示地區
us-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
- 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 陣列中,建立 animationFade 物件,並將 fadeType 設為 FADE_IN。將 x 和 y 座標設為 0 到 1.0。這些座標是根據輸出影片的解析度而定。使用 x: 0.5 和 y: 0.5 值,將疊加層的左上角置於輸出影片的中心。使用 startTimeOffset 欄位,指定疊加效果應在輸出影片時間軸中顯示的時間。在 endTimeOffset 欄位中設定的時間,疊加層應完全顯示。
如要淡出疊加層,請建立另一個 animationFade 物件。這次請將 fadeType 設為 FADE_OUT。輸入位置座標和開始/結束時間,與先前相同。
REST
使用任何要求資料之前,請先修改下列項目的值:
PROJECT_ID: Google Cloud 列於「IAM 設定」的專案 ID。LOCATION:工作執行的位置。使用支援的區域。顯示地區us-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
STORAGE_BUCKET_NAME:您建立的 Cloud Storage bucket 名稱。STORAGE_INPUT_VIDEO:Cloud Storage bucket 中要轉碼的影片名稱,例如my-vid.mp4。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如input/my-vid.mp4)。STORAGE_INPUT_OVERLAY:Cloud Storage bucket 中用於疊加的圖片名稱,例如my-overlay.png。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如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 bucket 名稱。
- STORAGE_INPUT_VIDEO:Cloud Storage bucket 中要轉碼的影片名稱,例如
my-vid.mp4。這個欄位應將您在 bucket 中建立的任何資料夾納入考量 (例如input/my-vid.mp4)。 - STORAGE_INPUT_OVERLAY:Cloud Storage bucket 中用於疊加的圖片檔案名稱,例如
my-overlay.png。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如input/my-overlay.png)。 - LOCATION:工作執行的位置。請使用下列清單中的地點。
顯示地區
us-central1us-west1us-west2us-east1us-east4southamerica-east1northamerica-northeast1asia-east1asia-northeast1asia-northeast3asia-south1asia-southeast1australia-southeast1europe-west1europe-west2europe-west4me-west1me-central1me-central2
- 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 秒會開始淡入。疊加層的 Alpha 值從 0 開始,到 1.0 結束。輸出影片的中央會顯示疊加層的左上角。重疊圖片會以原始解析度顯示。
- 重疊廣告淡入後,會顯示 2 秒。
- 輸出影片的第 12 秒開始淡出。疊加層的 Alpha 值從 1.0 開始,最後為 0。
- 動畫會在 15 秒處消失。
如要查看這項設定的輸出影片範例,請參閱這篇文章。這部影片使用範例重疊圖片。