En esta página, se explica cómo combinar varios videos de entrada en una sola salida video. También puedes recortar la línea de tiempo de los videos de entrada.
Para cada video de entrada, agrega
Input
al elemento
Array inputs
.
Cada objeto Input
define la clave y el URI para el video de entrada asociado. Puedes agregar una alerta
PreprocessingConfig
objeto a un Input
para
recortar, rellenar o realizar otro procesamiento previo
en el video de entrada. La inputs
el array no está ordenado; puedes agregar videos de entrada en cualquier orden.
Para agregar un video de entrada al cronograma del video de salida, agrega un
Objeto EditAtom
a
editList
. El
editList
array esté ordenado. La primera entrada designada en este array se usará primero en
el video de salida, la segunda entrada se usará a continuación, y así sucesivamente. Identificas
video de entrada por su tecla.
También puedes designar un startTimeOffset
y una endTimeOffset
para cortar la
video de entrada. Estos campos son opcionales. Si no especificas estos campos,
se usa todo el video de entrada.
La siguiente configuración concatena dos videos de entrada en una sola salida video.
"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"
}
],
Puedes agregar esta configuración a un plantilla de trabajo o incluirla en una Configuración de trabajo ad hoc:
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID de tu proyecto de Google Cloud que aparece en Configuración de IAM.LOCATION
: Es la ubicación en la que se ejecutará tu trabajo. Usa una de las regiones compatibles.Mostrar ubicacionesus-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
: El nombre del bucket de Cloud Storage que creaste.STORAGE_INPUT_VIDEO1
: El nombre de un video del bucket de Cloud Storage que estés de transcodificación, comomy-vid.mp4
. Este campo debe tener en cuenta todas las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). Este video se utilizará primero en la salida línea de tiempo del video.START_TIME_OFFSET1
: El Hora de inicio, en segundos fraccionarios (por ejemplo,0.0
), relativo a la línea de tiempo del primer video de entrada. Usa este campo para cortar el contenido del inicio del video.END_TIME_OFFSET1
: El final tiempo, en fracciones de segundos (por ejemplo,8.1
), en relación con la primera línea de tiempo del video de entrada. Usa este campo para cortar el contenido desde el final del video.STORAGE_INPUT_VIDEO2
: El nombre de un video del bucket de Cloud Storage que estés de transcodificación, comomy-vid.mp4
. Este campo debe tener en cuenta todas las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). Este video se utilizará en segundo lugar en la salida. línea de tiempo del video.START_TIME_OFFSET2
: El Hora de inicio, en segundos fraccionarios (por ejemplo,3.5
), relativo a la línea de tiempo del segundo video de entrada. Usa este campo para cortar el contenido del comienzo del segundo video.END_TIME_OFFSET2
: El final tiempo, en fracciones de segundos (por ejemplo,15
), en relación con la línea de tiempo del segundo video de entrada. Usa este campo para cortar el contenido desde el final de el segundo video.STORAGE_OUTPUT_FOLDER
: El nombre de la carpeta de Cloud Storage en la que quieres guardar el video codificado de salida.
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud
- Crea un archivo
request.json
que defina los campos del trabajo. Marca los siguientes reemplazosgcloud
:- LOCATION: Es la ubicación en la que
en el que se ejecutará
el trabajo. Usa una de las regiones compatibles.
Mostrar ubicaciones
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: El nombre del bucket de Cloud Storage que creaste.
- STORAGE_INPUT_VIDEO1:
El nombre de un video del bucket de Cloud Storage que estés
de transcodificación, como
my-vid.mp4
. Este campo debe tener en cuenta todas las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). Este video se utilizará primero en la salida línea de tiempo del video. - START_TIME_OFFSET1: El
Hora de inicio, en segundos fraccionarios (por ejemplo,
0.0
), relativo a la línea de tiempo del primer video de entrada. Usa este campo para cortar el contenido del inicio del video. - END_TIME_OFFSET1: El final
tiempo, en fracciones de segundos (por ejemplo,
8.1
), en relación con la primera línea de tiempo del video de entrada. Usa este campo para cortar el contenido desde el final del video. - STORAGE_INPUT_VIDEO2:
El nombre de un video del bucket de Cloud Storage que estés
de transcodificación, como
my-vid.mp4
. Este campo debe tener en cuenta todas las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). Este video se utilizará en segundo lugar en la salida. línea de tiempo del video. - START_TIME_OFFSET2: El
Hora de inicio, en segundos fraccionarios (por ejemplo,
3.5
), relativo a la línea de tiempo del segundo video de entrada. Usa este campo para cortar el contenido del comienzo del segundo video. - END_TIME_OFFSET2: El final
tiempo, en fracciones de segundos (por ejemplo,
15
), en relación con la línea de tiempo del segundo video de entrada. Usa este campo para cortar el contenido desde el final de el segundo video. - STORAGE_OUTPUT_FOLDER: El nombre de la carpeta de Cloud Storage en la que quieres guardar el video codificado de salida.
{ "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: Es la ubicación en la que
en el que se ejecutará
el trabajo. Usa una de las regiones compatibles.
- Ejecuta el siguiente comando:
gcloud transcoder jobs create --location=LOCATION --file="request.json"
Deberías ver una respuesta similar a la siguiente:{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Antes de probar esta muestra, sigue las instrucciones de configuración de C# que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la API de C# de la API de Transcoder documentación de referencia.
Para autenticarte en la API de Transcoder, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Antes de probar esta muestra, sigue las instrucciones de configuración de Go que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la API de Go de la API de Transcoder documentación de referencia.
Para autenticarte en la API de Transcoder, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Antes de probar esta muestra, sigue las instrucciones de configuración de Java que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la API de Java de la API de Transcoder documentación de referencia.
Para autenticarte en la API de Transcoder, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Antes de probar esta muestra, sigue las instrucciones de configuración de Node.js que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la API de Node.js de la API de Transcoder documentación de referencia.
Para autenticarte en la API de Transcoder, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
PHP
Antes de probar esta muestra, sigue las instrucciones de configuración de PHP que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la API de PHP de la API de Transcoder documentación de referencia.
Para autenticarte en la API de Transcoder, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Antes de probar esta muestra, sigue las instrucciones de configuración de Python que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la API de Python de la API de Transcoder documentación de referencia.
Para autenticarte en la API de Transcoder, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la API de Ruby de la API de Transcoder documentación de referencia.
Para autenticarte en la API de Transcoder, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ejemplo
Considera los siguientes videos de muestra:
Ambos videos son similares, ya que tienen tres partes:
- Mirar una película o un juego en un dispositivo móvil
- Mirar el mismo contenido en una pantalla grande
- Muestra un texto breve del anuncio del producto
A modo de ejemplo, puedes concatenar estos dos videos para que el video de salida muestra las partes uno y dos del primer video y, luego, las partes dos y tres del segundo. Puedes llevar a cabo esta concatenación con el siguientes compensaciones de tiempo:
- ForBiggerEscapes.mp4
startTimeOffset
:0s
endTimeOffset
:8.1s
- ForBiggerJoyrides.mp4
startTimeOffset
:3.5s
endTimeOffset
:15s
Usa el código anterior junto con estos dos videos y sus compensaciones de tiempo para ver un video de resultado repleto de acción