本頁說明如何將多部輸入影片合併為單一輸出影片。你也可以剪輯輸入影片的時間軸。
為每個輸入影片將 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 bucket 名稱。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
。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如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 bucket 名稱。
- 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
。這個欄位應考量您在 bucket 中建立的任何資料夾 (例如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#
在試用這個範例之前,請先按照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 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
範例
請參考下列範例影片:
兩部影片的內容相似,都包含三個部分:
- 在行動裝置上觀看電影或賽事
- 在大螢幕上觀看相同內容
- 顯示產品的簡短廣告文案
舉例來說,您可以將這兩部影片串連在一起,讓輸出影片顯示第一部影片的第一和第二部分,然後顯示第二部影片的第二和第三部分。您可以使用下列時間偏移量完成這項串連作業:
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
使用上述程式碼以及這兩部影片和時間偏移,即可查看結果影片,體驗精彩刺激的內容。