En esta página, se explica cómo combinar varios videos de entrada en uno solo de salida. También puedes recortar la línea de tiempo de los videos de entrada.
Para cada video de entrada, agrega un objeto Input
al array inputs
.
Cada objeto Input
define la clave y el URI del video de entrada asociado. Puedes agregar un objeto PreprocessingConfig
opcional a un Input
para recortar, rellenar o realizar otro procesamiento previo en el video de entrada. El array inputs
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
al array editList
. El array editList
está ordenado. La primera entrada designada en este array se usará primero en el video de salida, la segunda se usará a continuación y así sucesivamente. Identificas un video de entrada
por su clave.
También puedes designar un startTimeOffset
y un endTimeOffset
para cortar el video de entrada. Estos campos son opcionales. Si no especificas estos campos, se usará todo el video de entrada.
La siguiente configuración concatena dos videos de entrada en uno solo 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 agregar esta configuración a una 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
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
STORAGE_BUCKET_NAME
: Es el nombre del bucket de Cloud Storage que creaste.STORAGE_INPUT_VIDEO1
: Es el nombre de un video en tu bucket de Cloud Storage que estás transcodificando, comomy-vid.mp4
. Este campo debe incluir todas las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). Este video se usará primero en el cronograma del video de salida.START_TIME_OFFSET1
: Indica el tiempo de inicio, en fracciones de segundos (por ejemplo,0.0
), en relación con el cronograma del primer video de entrada. Usa este campo para cortar el contenido del principio del video.END_TIME_OFFSET1
: Indica la hora de finalización, en fracciones de segundos (por ejemplo,8.1
), en relación con el cronograma del primer video de entrada. Usa este campo para cortar el contenido del final del video.STORAGE_INPUT_VIDEO2
: Es el nombre de un video en tu bucket de Cloud Storage que estás transcodificando, comomy-vid.mp4
. Este campo debe incluir todas las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). Este video se usará en segundo lugar en el cronograma del video de salida.START_TIME_OFFSET2
: Indica el tiempo de inicio, en fracciones de segundos (por ejemplo,3.5
), en relación con el segundo cronograma del video de entrada. Usa este campo para cortar el contenido del principio del segundo video.END_TIME_OFFSET2
: Indica el tiempo de finalización, en fracciones de segundos (por ejemplo,15
), en relación con el segundo cronograma del video de entrada. Usa este campo para cortar el contenido del final del segundo video.STORAGE_OUTPUT_FOLDER
: Es el nombre de la carpeta de Cloud Storage en la que deseas guardar los resultados de video codificados.
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. Realiza los siguientes reemplazos para el comandogcloud
:- LOCATION: La ubicación en la que se ejecutará el trabajo. Usar una de las regiones compatibles
Mostrar ubicaciones
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_BUCKET_NAME: Es el nombre del bucket de Cloud Storage que creaste.
- STORAGE_INPUT_VIDEO1: Es el nombre de un video en tu bucket de Cloud Storage que estás transcodificando, como
my-vid.mp4
. Este campo debe incluir todas las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). Este video se usará primero en el cronograma del video de salida. - START_TIME_OFFSET1: Indica el tiempo de inicio, en fracciones de segundos (por ejemplo,
0.0
), en relación con el cronograma del primer video de entrada. Usa este campo para cortar el contenido del principio del video. - END_TIME_OFFSET1: Indica la hora de finalización, en fracciones de segundos (por ejemplo,
8.1
), en relación con el cronograma del primer video de entrada. Usa este campo para cortar el contenido del final del video. - STORAGE_INPUT_VIDEO2: Es el nombre de un video en tu bucket de Cloud Storage que estás transcodificando, como
my-vid.mp4
. Este campo debe incluir todas las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). Este video se usará en segundo lugar en el cronograma del video de salida. - START_TIME_OFFSET2: Indica el tiempo de inicio, en fracciones de segundos (por ejemplo,
3.5
), en relación con el segundo cronograma del video de entrada. Usa este campo para cortar el contenido del principio del segundo video. - END_TIME_OFFSET2: Indica la hora de finalización, en fracciones de segundos (por ejemplo,
15
), en relación con el segundo cronograma del video de entrada. Usa este campo para cortar el contenido del final del segundo video. - STORAGE_OUTPUT_FOLDER: Es el nombre de la carpeta de Cloud Storage en la que deseas guardar los resultados de video codificados.
{ "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. Usar 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 C# que se encuentran en la Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de C# de la API de Transcoder.
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 Go que se encuentran en la Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Go de la API de Transcoder.
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 Java que se encuentran en la Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Java de la API de Transcoder.
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 Node.js que se encuentran en la Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Node.js de la API de Transcoder.
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 PHP que se encuentran en la Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de PHP de la API de Transcoder.
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 Python que se encuentran en la Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Python de la API de Transcoder.
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 Ruby que se encuentran en la Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Ruby de la API de Transcoder.
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 porque contienen tres partes:
- Ver una película o un partido en un dispositivo móvil
- Mira el mismo contenido en una pantalla grande
- Muestra el texto breve del anuncio del producto.
Por ejemplo, puedes concatenar estos dos videos, de modo que en el video de salida se muestren las partes uno y dos del primer video y, luego, las partes dos y tres del segundo video. Puedes realizar esta concatenación con las siguientes compensaciones horarias:
- 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 lleno de acción.