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
todo o vídeo de entrada é 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. Usar 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ê transcodificação, comomy-vid.mp4
. Esse campo deve considerar todas as pastas criadas no bucket (por exemplo,input/my-vid.mp4
). Este vídeo será usado primeiro na saída linha do tempo do vídeo.START_TIME_OFFSET1
: o horário de início, em frações de segundos (por exemplo,0.0
), relativo à linha do tempo da primeira entrada. Use este campo para cortar o conteúdo do início do vídeo.END_TIME_OFFSET1
: o fim de tempo, em frações de segundos (por exemplo,8.1
), em relação a a linha do tempo da primeira entrada 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ê transcodificação, comomy-vid.mp4
. Esse campo deve considerar todas as pastas criadas no bucket (por exemplo,input/my-vid.mp4
). Este vídeo será usado em segundo lugar na saída linha do tempo do vídeo.START_TIME_OFFSET2
: o horário de início, em frações de segundos (por exemplo,3.5
), relativo para a linha do tempo da segunda entrada. Use este campo para cortar conteúdo do início do segundo vídeo.END_TIME_OFFSET2
: o fim de tempo, em frações de segundos (por exemplo,15
), em relação ao a linha do tempo do vídeo de entrada secundária. Use este campo para cortar o conteúdo do final de no 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 da vaga. Marca os seguintes substitutos dogcloud
comando:- 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ê
transcodificação, como
my-vid.mp4
. Esse campo deve considerar todas as pastas criadas no bucket (por exemplo,input/my-vid.mp4
). Este vídeo será usado primeiro na saída linha do tempo do vídeo. - START_TIME_OFFSET1: o
horário de início, em frações de segundos (por exemplo,
0.0
), relativo à linha do tempo da primeira 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ê
transcodificação, 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 frações de segundos (por exemplo,
3.5
), relativo para a linha do tempo da segunda entrada. Use este campo para cortar o conteúdo do início do segundo vídeo. - END_TIME_OFFSET2: o fim
de tempo, em frações de segundos (por exemplo,
15
), em relação ao a linha do tempo do vídeo de entrada secundária. Use este campo para cortar o conteúdo do final de no 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 este exemplo, siga as instruções de configuração do C# na Guia de início rápido da API Transcoder usando 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 este exemplo, siga as instruções de configuração do Go na Guia de início rápido da API Transcoder usando 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 API Java da API Transcoder documentação de referência.
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 este exemplo, siga as instruções de configuração do Node.js na Guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a API Node.js da API Transcoder documentação de referência.
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 este exemplo, siga as instruções de configuração do PHP na Guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a API PHP da API Transcoder documentação de referência.
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 este exemplo, siga as instruções de configuração do Python na Guia de início rápido da API Transcoder usando 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 API Ruby da API Transcoder documentação de referência.
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.