En esta página se explica cómo combinar varios vídeos de entrada en un solo vídeo de salida. También puedes recortar las líneas de tiempo de los vídeos de entrada.
Por cada vídeo de entrada, añade un objeto Input
a la matriz inputs
.
Cada objeto Input
define la clave y el URI del vídeo de entrada asociado. Puede añadir un objeto PreprocessingConfig
opcional a un Input
para
recortar, rellenar o realizar otro preprocesamiento
en el vídeo de entrada. La matriz inputs
no está ordenada, por lo que puedes añadir vídeos de entrada en cualquier orden.
Para añadir un vídeo de entrada a la línea de tiempo del vídeo de salida, añade un objeto EditAtom
a la matriz editList
. La matriz
editList
está ordenada. La primera entrada designada en esta matriz se usará en primer lugar en el vídeo de salida, la segunda entrada se usará a continuación, y así sucesivamente. Identificas un vídeo de entrada por su clave.
También puedes designar un startTimeOffset
y un endTimeOffset
para recortar el vídeo de entrada. Estos campos son opcionales. Si no especifica estos campos, se usará todo el vídeo de entrada.
La siguiente configuración concatena dos vídeos de entrada en un único vídeo de salida.
"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 añadir esta configuración a una plantilla de tarea o incluirla en una configuración de tarea específica:
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: ID de tu proyecto Google Cloud que aparece en la sección Configuración de IAM.LOCATION
: la ubicación en la que se ejecutará el trabajo. Utiliza una de las regiones admitidas.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
me-west1
me-central1
me-central2
STORAGE_BUCKET_NAME
: Nombre del segmento de Cloud Storage que has creado.STORAGE_INPUT_VIDEO1
: El nombre de un vídeo de tu bucket de Cloud Storage que quieres transcodificar, comomy-vid.mp4
. En este campo se deben tener en cuenta las carpetas que hayas creado en el contenedor (por ejemplo,input/my-vid.mp4
). Este vídeo se usará primero en la línea de tiempo del vídeo de salida.START_TIME_OFFSET1
: la hora de inicio, en segundos fraccionarios (por ejemplo,0.0
), en relación con la primera línea de tiempo del vídeo de entrada. Usa este campo para recortar el contenido del principio del vídeo.END_TIME_OFFSET1
: la hora de finalización, en segundos fraccionarios (por ejemplo,8.1
), en relación con la línea de tiempo del primer vídeo de entrada. Usa este campo para recortar el contenido del final del vídeo.STORAGE_INPUT_VIDEO2
: El nombre de un vídeo de tu bucket de Cloud Storage que quieres transcodificar, comomy-vid.mp4
. En este campo se deben tener en cuenta las carpetas que hayas creado en el contenedor (por ejemplo,input/my-vid.mp4
). Este vídeo se usará en segundo lugar en la línea de tiempo del vídeo de salida.START_TIME_OFFSET2
: la hora de inicio, en segundos fraccionarios (por ejemplo,3.5
), en relación con la línea de tiempo del segundo vídeo de entrada. Usa este campo para recortar el contenido del principio del segundo vídeo.END_TIME_OFFSET2
: la hora de finalización, en segundos fraccionarios (por ejemplo,15
), en relación con la línea de tiempo del segundo vídeo de entrada. Usa este campo para recortar el contenido del final del segundo vídeo.STORAGE_OUTPUT_FOLDER
: Nombre de la carpeta de Cloud Storage en la que quieres guardar los resultados de vídeo codificado.
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "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 de la tarea. Haz los siguientes cambios en el comandogcloud
:- LOCATION: la ubicación en la que se ejecutará el trabajo. Utiliza una de las regiones admitidas.
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
me-west1
me-central1
me-central2
- STORAGE_BUCKET_NAME: Nombre del segmento de Cloud Storage que has creado.
- STORAGE_INPUT_VIDEO1:
El nombre de un vídeo de tu bucket de Cloud Storage que quieres
transcodificar, como
my-vid.mp4
. En este campo se deben tener en cuenta las carpetas que hayas creado en el contenedor (por ejemplo,input/my-vid.mp4
). Este vídeo se usará primero en la línea de tiempo del vídeo de salida. - START_TIME_OFFSET1: la hora de inicio, en segundos fraccionarios (por ejemplo,
0.0
), en relación con la primera línea de tiempo del vídeo de entrada. Usa este campo para recortar el contenido del principio del vídeo. - END_TIME_OFFSET1: la hora de finalización, en segundos fraccionarios (por ejemplo,
8.1
), en relación con la línea de tiempo del primer vídeo de entrada. Usa este campo para recortar el contenido del final del vídeo. - STORAGE_INPUT_VIDEO2:
El nombre de un vídeo de tu bucket de Cloud Storage que quieres
transcodificar, como
my-vid.mp4
. En este campo se deben tener en cuenta las carpetas que hayas creado en el contenedor (por ejemplo,input/my-vid.mp4
). Este vídeo se usará en segundo lugar en la línea de tiempo del vídeo de salida. - START_TIME_OFFSET2: la hora de inicio, en segundos fraccionarios (por ejemplo,
3.5
), en relación con la línea de tiempo del segundo vídeo de entrada. Usa este campo para recortar el contenido del principio del segundo vídeo. - END_TIME_OFFSET2: la hora de finalización, en segundos fraccionarios (por ejemplo,
15
), en relación con la línea de tiempo del segundo vídeo de entrada. Usa este campo para recortar el contenido del final del segundo vídeo. - STORAGE_OUTPUT_FOLDER: Nombre de la carpeta de Cloud Storage en la que quieres guardar los resultados de vídeo codificado.
{ "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: la ubicación en la que se ejecutará el trabajo. Utiliza una de las regiones admitidas.
- Ejecuta el siguiente comando:
Debería ver una respuesta similar a la siguiente: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 probar este ejemplo, sigue las C# instrucciones de configuración de la guía de inicio rápido de la API Transcoder con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Transcoder API C#.
Para autenticarte en la API Transcoder, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Go
Antes de probar este ejemplo, sigue las Go instrucciones de configuración de la guía de inicio rápido de la API Transcoder con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Transcoder API Go.
Para autenticarte en la API Transcoder, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Antes de probar este ejemplo, sigue las Java instrucciones de configuración de la guía de inicio rápido de la API Transcoder con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Transcoder API Java.
Para autenticarte en la API Transcoder, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Antes de probar este ejemplo, sigue las Node.js instrucciones de configuración de la guía de inicio rápido de la API Transcoder con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Transcoder API Node.js.
Para autenticarte en la API Transcoder, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
PHP
Antes de probar este ejemplo, sigue las PHP instrucciones de configuración de la guía de inicio rápido de la API Transcoder con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Transcoder API PHP.
Para autenticarte en la API Transcoder, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Antes de probar este ejemplo, sigue las Python instrucciones de configuración de la guía de inicio rápido de la API Transcoder con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Transcoder API Python.
Para autenticarte en la API Transcoder, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Ruby
Antes de probar este ejemplo, sigue las Ruby instrucciones de configuración de la guía de inicio rápido de la API Transcoder con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Transcoder API Ruby.
Para autenticarte en la API Transcoder, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Ejemplo
Echa un vistazo a estos vídeos de ejemplo:
Ambos vídeos son similares, ya que constan de tres partes:
- Ver una película o un partido en un dispositivo móvil
- Ver el mismo contenido en una pantalla grande
- Mostrar un texto de anuncio breve del producto
Por ejemplo, puedes concatenar estos dos vídeos de forma que el vídeo de salida muestre las partes uno y dos del primer vídeo, y luego las partes dos y tres del segundo vídeo. Para conseguir esta concatenación, puedes usar los siguientes desfases 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 vídeos y sus desplazamientos de tiempo para ver un vídeo de resultados lleno de acción.