本頁說明如何在轉碼後的影片中插入疊加層。疊加層是由插入輸出影片頂端的圖片組成,並可選擇在指定時間內淡入或淡出。如要插入疊加層,請使用 JobConfig
範本中的 overlays
陣列。
請參閱支援的圖片檔案格式清單。
將圖片上傳至 Cloud Storage
如要開始使用,請按照下列步驟將疊加圖片上傳至 Cloud Storage bucket:
- 前往 Google Cloud 控制台的 Cloud Storage 瀏覽器頁面。
前往 Cloud Storage 瀏覽器頁面 - 按一下值區名稱即可開啟。
- 按一下「上傳檔案」。
- 從本機電腦選取要上傳的圖片檔。
建立重疊元素
您可以建立兩種疊加效果:靜態或動畫。這兩種類型的疊加畫面都會使用靜態圖片。 你可以顯示或隱藏靜態重疊畫面。動畫疊加層支援圖片的淡入和淡出動畫。
您可以在單一輸出影片中插入多個疊加效果。
建立靜態重疊元素
在 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
: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
me-west1
me-central1
me-central2
STORAGE_BUCKET_NAME
:您建立的 Cloud Storage bucket 名稱。STORAGE_INPUT_VIDEO
:Cloud Storage 值區中要轉碼的影片名稱,例如my-vid.mp4
。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如input/my-vid.mp4
)。STORAGE_INPUT_OVERLAY
:Cloud Storage 值區中用於疊加的圖片名稱,例如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 值區中要轉碼的影片名稱,例如
my-vid.mp4
。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如input/my-vid.mp4
)。 - STORAGE_INPUT_OVERLAY:Cloud Storage bucket 中用於疊加的圖片檔案名稱,例如
my-overlay.png
。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如input/my-overlay.png
)。 - 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
me-west1
me-central1
me-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#
在試用這個範例之前,請先按照C#使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API C# API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
在試用這個範例之前,請先按照Go使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API Go API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
在試用這個範例之前,請先按照Java使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API Java API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
在試用這個範例之前,請先按照Node.js使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API Node.js API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
在試用這個範例之前,請先按照PHP使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API PHP API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
在試用這個範例之前,請先按照Python使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API Python API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
在試用這個範例之前,請先按照Ruby使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 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
: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
me-west1
me-central1
me-central2
STORAGE_BUCKET_NAME
:您建立的 Cloud Storage bucket 名稱。STORAGE_INPUT_VIDEO
:Cloud Storage 值區中要轉碼的影片名稱,例如my-vid.mp4
。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如input/my-vid.mp4
)。STORAGE_INPUT_OVERLAY
:Cloud Storage 值區中用於疊加的圖片名稱,例如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 值區中要轉碼的影片名稱,例如
my-vid.mp4
。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如input/my-vid.mp4
)。 - STORAGE_INPUT_OVERLAY:Cloud Storage bucket 中用於疊加的圖片檔案名稱,例如
my-overlay.png
。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如input/my-overlay.png
)。 - 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
me-west1
me-central1
me-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#
在試用這個範例之前,請先按照C#使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API C# API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
在試用這個範例之前,請先按照Go使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API Go API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
在試用這個範例之前,請先按照Java使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API Java API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
在試用這個範例之前,請先按照Node.js使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API Node.js API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
在試用這個範例之前,請先按照PHP使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API PHP API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
在試用這個範例之前,請先按照Python使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API Python API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Ruby
在試用這個範例之前,請先按照Ruby使用用戶端程式庫的 Transcoder API 快速入門中的設定說明操作。詳情請參閱 Transcoder API Ruby API 參考說明文件。
如要向 Transcoder API 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
在產生的影片中,動畫疊加層具有下列特徵:
- 輸出影片的第 5 秒會開始淡入。疊加層的 Alpha 值從 0 開始,到 1.0 結束。疊加層的左上角會顯示在輸出影片的中心。重疊元素會以原始解析度顯示。
- 重疊廣告淡入後,會顯示 2 秒。
- 輸出影片的第 12 秒會開始淡出。疊加層的 Alpha 值從 1.0 開始,最後為 0。
- 動畫會在 15 秒處消失。
如要查看這項設定的輸出影片範例,請參閱這篇文章。這部影片使用範例重疊圖片。