Nesta página, explicamos como combinar vários vídeos de entrada em um único vídeo de saída. Você também pode cortar os cronogramas 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. Você pode adicionar um objeto
PreprocessingConfig
opcional a um Input
para
cortar, preencher ou execute outro pré-processamento
no vídeo de entrada. A matriz inputs
não é ordenada; você pode adicionar vídeos de entrada em qualquer ordem.
Para adicionar um vídeo de entrada ao cronograma de saída, adicione um objeto EditAtom
à matriz editList
. A matriz
editList
é ordenada. A primeira entrada nesta matriz será usada primeiro no vídeo de saída, a segunda entrada será usada em seguida e assim por diante. Você identifica um
vídeo de entrada pela chave.
Também é possível designar startTimeOffset
e endTimeOffset
para cortar o
vídeo de entrada. Estes campos são opcionais. Se você não especificar esses campos, o
vídeo de entrada inteiro será usado.
A configuração a seguir concatena dois vídeos de entrada em um ú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"
}
],
É possível adicionar essa configuração a um modelo de job ou incluí-la em uma configuração de job ad-hoc:
REST
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
PROJECT_ID
: o ID do projeto do Google Cloud listado nas Configurações do IAMLOCATION
: o local onde seu job será executado. Use uma das regiões com suporte.Mostrar locaisus-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
STORAGE_BUCKET_NAME
: o nome do bucket do Cloud Storage que você criou.STORAGE_INPUT_VIDEO1
: o nome de um vídeo no bucket do Cloud Storage que você está transcodificando, comomy-vid.mp4
. Este campo precisa considerar todas as pastas criadas no bucket (por exemplo,input/my-vid.mp4
). Este vídeo será usado primeiro na linha do tempo do vídeo de saída.START_TIME_OFFSET1
: o horário de início, em segundos fracionários (por exemplo,0.0
), em relação à primeira linha do tempo de vídeo de entrada. Use este campo para cortar o conteúdo do início do vídeo.END_TIME_OFFSET1
: o horário de término, em segundos fracionários (por exemplo,8.1
), em relação à primeira linha do tempo de vídeo. Use este campo para cortar conteúdo do final do vídeo.STORAGE_INPUT_VIDEO2
: o nome de um vídeo no bucket do Cloud Storage que você está transcodificando, comomy-vid.mp4
. Este campo precisa considerar todas as pastas criadas no bucket (por exemplo,input/my-vid.mp4
). Este vídeo será usado em segundo lugar na linha do tempo do vídeo de saída.START_TIME_OFFSET2
: o horário de início, em segundos fracionários (por exemplo,3.5
), em relação à segunda linha do tempo de vídeo de entrada. Use este campo para cortar conteúdo do início do segundo vídeo.END_TIME_OFFSET2
: o horário de término, em segundos fracionários (por exemplo,15
), em relação à segunda linha do tempo de vídeo de entrada. Use este campo para cortar conteúdo do fim do segundo vídeo.STORAGE_OUTPUT_FOLDER
: nome da pasta do Cloud Storage em que você quer salvar as saídas de vídeo codificadas.
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud
- Crie um arquivo
request.json
que defina os campos do job. Faça as seguintes substituições para o comandogcloud
:- LOCATION: o local em que o job será executado. Use uma das regiões com suporte.
Mostrar locais
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
- STORAGE_BUCKET_NAME: o nome do bucket do Cloud Storage que você criou.
- STORAGE_INPUT_VIDEO1:
o nome de um vídeo no bucket do Cloud Storage que você está
transcodificando, como
my-vid.mp4
. Este campo precisa considerar todas as pastas criadas no bucket (por exemplo,input/my-vid.mp4
). Este vídeo será usado primeiro na linha do tempo do vídeo de saída. - START_TIME_OFFSET1: o
horário de início, em segundos fracionários (por exemplo,
0.0
), em relação à primeira linha do tempo de vídeo de entrada. Use este campo para cortar o conteúdo do início do vídeo. - END_TIME_OFFSET1: o horário de
término, em segundos fracionários (por exemplo,
8.1
), em relação à primeira linha do tempo de vídeo. Use este campo para cortar conteúdo do final do vídeo. - STORAGE_INPUT_VIDEO2:
o nome de um vídeo no bucket do Cloud Storage que você está
transcodificando, como
my-vid.mp4
. Este campo precisa considerar todas as pastas criadas no bucket (por exemplo,input/my-vid.mp4
). Este vídeo será usado em segundo lugar na linha do tempo do vídeo de saída. - START_TIME_OFFSET2: o
horário de início, em segundos fracionários (por exemplo,
3.5
), em relação à segunda linha do tempo de vídeo de entrada. Use este campo para cortar conteúdo do início do segundo vídeo. - END_TIME_OFFSET2: o horário de
término, em segundos fracionários (por exemplo,
15
), em relação à segunda linha do tempo de vídeo de entrada. Use este campo para cortar conteúdo do fim do segundo vídeo. - STORAGE_OUTPUT_FOLDER: nome da pasta do Cloud Storage em que você quer salvar 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: o local em que o job será executado. Use uma das regiões com suporte.
- Execute este comando:
Uma resposta semelhante a esta vai aparecer: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 testar esta amostra, siga as instruções de configuração do C# no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder C#.
Para autenticar na API Transcoder, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder Go.
Para autenticar na API Transcoder, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder Java.
Para autenticar na API Transcoder, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder Node.js.
Para autenticar na API Transcoder, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder PHP.
Para autenticar na API Transcoder, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder Python.
Para autenticar na API Transcoder, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Antes de testar esta amostra, siga as instruções de configuração do Ruby no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder Ruby.
Para autenticar na API Transcoder, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Exemplo
Considere os seguintes vídeos de exemplo:
Os dois vídeos são semelhantes, porque contêm três partes:
- Como assistir um filme ou jogo em um dispositivo móvel
- Assistir o mesmo conteúdo em uma tela grande
- Mostrar um breve texto do anúncio para o produto
Por exemplo, você pode concatenar esses dois vídeos para que o vídeo de saída mostre as partes um e dois do primeiro vídeo e, depois, as partes dois e três do segundo vídeo. É possível fazer essa concatenação usando os seguintes deslocamentos de tempo:
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
Use o código anterior com esses dois vídeos e os ajustes de horário para ver um vídeo de resultados cheio de ações.