Esta página explica como combinar vários vídeos de entrada num único vídeo de saída. Também pode recortar as cronologias dos vídeos de entrada.
Para cada vídeo de entrada, adicione um objeto Input
à matriz inputs
.
Cada objeto Input
define a chave e o URI do vídeo de entrada associado. Pode adicionar um objeto
PreprocessingConfig
opcional a um Input
para
recortar, preencher ou realizar outro pré-processamento
no vídeo de entrada. A matriz inputs
não está ordenada. Pode adicionar vídeos de entrada em qualquer ordem.
Para adicionar um vídeo de entrada à cronologia do vídeo de saída, adicione um objeto
EditAtom
à matriz editList
. A matriz
editList
está ordenada. A primeira entrada designada nesta matriz é usada primeiro no vídeo de saída, a segunda entrada é usada a seguir e assim sucessivamente. Identifica um vídeo de entrada pela respetiva chave.
Também pode designar um startTimeOffset
e um endTimeOffset
para recortar o vídeo de entrada. Estes campos são opcionais. Se não especificar estes campos, é usado o vídeo de entrada completo.
A configuração seguinte concatena dois vídeos de entrada num único vídeo de saída.
"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"
}
],
Pode adicionar esta configuração a um modelo de tarefa ou incluí-la numa configuração de tarefa ad hoc:
REST
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
PROJECT_ID
: o ID do projeto indicado nas definições de IAM. Google CloudLOCATION
: a localização onde a tarefa vai ser executada. Usar uma das regiões suportadas.Mostrar localizaçõesus-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
: O nome do contentor do Cloud Storage que criou.STORAGE_INPUT_VIDEO1
: O nome de um vídeo no seu contentor do Cloud Storage que está a transcodificar, comomy-vid.mp4
. Este campo deve ter em conta todas as pastas que criou no contentor (por exemplo,input/my-vid.mp4
). Este vídeo é usado primeiro na cronologia do vídeo de saída.START_TIME_OFFSET1
: o tempo de início, em segundos fracionados (por exemplo,0.0
), relativo à cronologia do primeiro vídeo de entrada. Use este campo para cortar conteúdo do início do vídeo.END_TIME_OFFSET1
: A hora de fim, em segundos fracionados (por exemplo,8.1
), relativa à cronologia do primeiro vídeo de entrada. Use este campo para cortar conteúdo do final do vídeo.STORAGE_INPUT_VIDEO2
: O nome de um vídeo no seu contentor do Cloud Storage que está a transcodificar, comomy-vid.mp4
. Este campo deve ter em conta todas as pastas que criou no contentor (por exemplo,input/my-vid.mp4
). Este vídeo é usado em segundo lugar na cronologia do vídeo de saída.START_TIME_OFFSET2
: a hora de início, em segundos fracionados (por exemplo,3.5
), relativa à cronologia do segundo vídeo de entrada. Use este campo para cortar conteúdo do início do segundo vídeo.END_TIME_OFFSET2
: a hora de fim, em segundos fracionários (por exemplo,15
), relativa à cronologia do vídeo de entrada secundário. Use este campo para cortar conteúdo do final do segundo vídeo.STORAGE_OUTPUT_FOLDER
: O nome da pasta do Cloud Storage onde quer guardar as saídas de vídeo codificadas.
Para enviar o seu pedido, expanda uma destas opções:
Deve receber uma resposta JSON semelhante à seguinte:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud
- Crie um ficheiro
request.json
que defina os campos da tarefa. Faça as seguintes substituições para o comandogcloud
:- LOCATION: a localização onde o seu trabalho vai ser executado. Usar uma das regiões suportadas.
Mostrar localizações
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: O nome do contentor do Cloud Storage que criou.
- STORAGE_INPUT_VIDEO1:
O nome de um vídeo no seu contentor do Cloud Storage que está a
transcodificar, como
my-vid.mp4
. Este campo deve ter em conta todas as pastas que criou no contentor (por exemplo,input/my-vid.mp4
). Este vídeo é usado primeiro na cronologia do vídeo de saída. - START_TIME_OFFSET1: o tempo de início, em segundos fracionados (por exemplo,
0.0
), relativo à cronologia do primeiro vídeo de entrada. Use este campo para cortar conteúdo do início do vídeo. - END_TIME_OFFSET1: A hora de fim, em segundos fracionados (por exemplo,
8.1
), relativa à cronologia do primeiro vídeo de entrada. Use este campo para cortar conteúdo do final do vídeo. - STORAGE_INPUT_VIDEO2:
O nome de um vídeo no seu contentor do Cloud Storage que está a
transcodificar, como
my-vid.mp4
. Este campo deve ter em conta todas as pastas que criou no contentor (por exemplo,input/my-vid.mp4
). Este vídeo é usado em segundo lugar na cronologia do vídeo de saída. - START_TIME_OFFSET2: a hora de início, em segundos fracionados (por exemplo,
3.5
), relativa à cronologia do segundo vídeo de entrada. Use este campo para cortar conteúdo do início do segundo vídeo. - END_TIME_OFFSET2: a hora de fim, em segundos fracionários (por exemplo,
15
), relativa à cronologia do vídeo de entrada secundário. Use este campo para cortar conteúdo do final do segundo vídeo. - STORAGE_OUTPUT_FOLDER: O nome da pasta do Cloud Storage onde quer guardar as saídas de vídeo codificadas.
{ "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: a localização onde o seu trabalho vai ser executado. Usar uma das regiões suportadas.
- Execute o seguinte comando:
Deve ver uma resposta semelhante à seguinte: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#
Antes de experimentar este exemplo, siga as C#instruções de configuração no guia de início rápido da API Transcoder com bibliotecas cliente. Para mais informações, consulte a documentação de referência da API TranscoderC#.
Para se autenticar na API Transcoder, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no guia de início rápido da API Transcoder com bibliotecas cliente. Para mais informações, consulte a documentação de referência da API TranscoderGo.
Para se autenticar na API Transcoder, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no guia de início rápido da API Transcoder com bibliotecas cliente. Para mais informações, consulte a documentação de referência da API TranscoderJava.
Para se autenticar na API Transcoder, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no guia de início rápido da API Transcoder com bibliotecas cliente. Para mais informações, consulte a documentação de referência da API TranscoderNode.js.
Para se autenticar na API Transcoder, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
PHP
Antes de experimentar este exemplo, siga as PHPinstruções de configuração no guia de início rápido da API Transcoder com bibliotecas cliente. Para mais informações, consulte a documentação de referência da API TranscoderPHP.
Para se autenticar na API Transcoder, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no guia de início rápido da API Transcoder com bibliotecas cliente. Para mais informações, consulte a documentação de referência da API TranscoderPython.
Para se autenticar na API Transcoder, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Ruby
Antes de experimentar este exemplo, siga as Rubyinstruções de configuração no guia de início rápido da API Transcoder com bibliotecas cliente. Para mais informações, consulte a documentação de referência da API TranscoderRuby.
Para se autenticar na API Transcoder, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Exemplo
Considere os seguintes vídeos de exemplo:
Ambos os vídeos são semelhantes, pois contêm três partes:
- Ver um filme ou jogar num dispositivo móvel
- Ver o mesmo conteúdo num grande ecrã
- Mostrar um texto do anúncio breve para o produto
Por exemplo, pode concatenar estes dois vídeos de forma que o vídeo de saída mostre as partes um e dois do primeiro vídeo e, em seguida, as partes dois e três do segundo vídeo. Pode realizar esta concatenação através dos seguintes desvios de tempo:
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
Use o código anterior juntamente com estes dois vídeos e os respetivos desvios de tempo para ver um vídeo de resultados cheio de ação.