本頁面說明如何將多部輸入影片合併為單一輸出影片。您也可以修剪輸入影片的時間軸。
針對每部輸入影片,將 Input
物件新增至 inputs
陣列。每個 Input
物件都會定義關鍵字和相關輸入影片的 URI。您可以將選用的 PreprocessingConfig
物件新增至 Input
,以便對輸入影片進行裁剪、填充或其他預先處理作業。inputs
陣列並未排序,您可以以任何順序新增輸入影片。
如要在輸出影片時間軸中新增輸入影片,請將 EditAtom
物件新增至 editList
陣列。editList
陣列已排序。這個陣列中指定的第一個輸入內容會優先用於輸出影片,接著是第二個輸入內容,以此類推。您可以透過鍵來識別輸入影片。
您也可以指定 startTimeOffset
和 endTimeOffset
來裁剪輸入的影片。這些欄位為選填。如果未指定這些欄位,系統會使用整部輸入影片。
以下設定會將兩部輸入影片串連成單一輸出影片。
"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
me-west1
me-central1
me-central2
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
)。這部影片會在輸出影片時間軸中使用第二次。START_TIME_OFFSET2
:相對於第二個輸入影片時間軸的開始時間,以秒的刻度 (例如3.5
) 為單位。使用這個欄位,從第二部影片的開頭剪輯內容。END_TIME_OFFSET2
:相對於第二個輸入影片時間軸線的結束時間,以秒的刻度 (例如15
) 為單位。使用這個欄位,從第二部影片的結尾裁剪內容。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
me-west1
me-central1
me-central2
- 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
)。這部影片會在輸出影片時間軸中使用第二次。 - START_TIME_OFFSET2:相對於第二個輸入影片時間軸的開始時間,以秒的刻度 (例如
3.5
) 為單位。使用這個欄位,從第二部影片的開頭剪輯內容。 - END_TIME_OFFSET2:相對於第二個輸入影片時間軸線的結束時間,以秒的刻度 (例如
15
) 為單位。使用這個欄位,從第二部影片的結尾裁剪內容。 - 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 驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
範例
請參考以下影片範例:
兩部影片的共同點在於都包含三個部分:
- 在行動裝置上觀看電影或遊戲
- 在大螢幕上觀看相同內容
- 顯示產品的簡短廣告文案
舉例來說,您可以將這兩部影片串連在一起,讓輸出影片顯示第一部影片的第一和第二部分,以及第二部影片的第二和第三部分。您可以使用下列時間偏移值完成此連接:
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
使用上述程式碼搭配這兩部影片和時間偏移值,即可觀看精彩的結果影片。