En esta página, se explica cómo insertar superposiciones en los videos transcodificados. Una superposición consiste en una imagen que se inserta sobre el video de salida y, de forma opcional, puede oscurecerse o extenderse durante un período específico. Para insertar una superposición, usa el arreglo overlays
en la plantilla JobConfig
.
Consulta la lista de formatos de archivo de imagen compatibles.
Sube una imagen a Cloud Storage
Para comenzar, sigue estos pasos a fin de subir una imagen superpuesta a tu bucket de Cloud Storage:
- En la consola de Google Cloud, ve a la página Navegador de Cloud Storage.
Ir a la página del navegador de Cloud Storage - Haz clic en el nombre de su bucket para abrirlo.
- Haz clic en Subir archivos.
- Selecciona un archivo de imagen para subirlo desde tu máquina local.
Crea una superposición
Puedes crear dos tipos de superposiciones: estáticas o animadas. Ambos tipos de superposiciones usan una imagen estática. Puedes ocultar o mostrar superposiciones estáticas. Las superposiciones animadas admiten el difuminado de entrada y de salida de animaciones de la imagen.
Puedes insertar varias superposiciones en un solo video de salida.
Cómo crear una superposición estática
En el objeto image
, usa el campo uri
para especificar la imagen de superposición en Cloud Storage. En el objeto resolution
, configura los valores de Y y X de 0 a 1.0. Un valor igual a 0 mantiene la resolución de la imagen de origen para ese tamaño. Un valor de 1.0 estirará la imagen para que coincida con la resolución del video de salida. Por ejemplo, usa los valores x: 1
y y:
0.5
para estirar la imagen superpuesta al ancho completo y la mitad de la altura del video de salida.
En el arreglo animations
, crea un objeto animationStatic
con coordenadas Y y X de 0 a 1.0. Estas coordenadas se basan en la resolución del video de salida. Usa los valores x: 0
y y: 0
para posicionar la esquina superior izquierda de la superposición en la esquina superior izquierda del video de salida. Usa el campo startTimeOffset
para especificar cuándo debe aparecer la superposición en la línea de tiempo del video de salida.
Para quitar la animación estática, crea un objeto animationEnd
. Especifica cuándo debe terminar la animación (es decir, la superposición debe desaparecer) en la línea de tiempo del video de salida con el campo startTimeOffset
.
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.Cómo 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
: Es el nombre del bucket de Cloud Storage que creaste.STORAGE_INPUT_VIDEO
: Es el nombre del video en tu bucket de Cloud Storage que se transcodificará, comomy-vid.mp4
. Este campo debe tener en cuenta todas las carpetas que hayas creado en la bucket (por ejemplo,input/my-vid.mp4
).STORAGE_INPUT_OVERLAY
: Es el nombre del imagen en el bucket de Cloud Storage que usas para la superposición, comomy-overlay.png
Este campo debe tener en cuenta todas las carpetas que hayas creado en la bucket (por ejemplo,input/my-overlay.png
).STORAGE_OUTPUT_FOLDER
: Es el nombre de la carpeta de Cloud Storage en la que deseas guardar los resultados del video codificado.
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 de trabajo. Marca los siguientes reemplazosgcloud
:- STORAGE_BUCKET_NAME: Es el nombre del bucket de Cloud Storage que creaste.
- STORAGE_INPUT_VIDEO: Es el nombre del video en tu bucket de Cloud Storage que transcodificarás, como
my-vid.mp4
. Este campo debe tener en cuenta todas las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). - STORAGE_INPUT_OVERLAY: Es el nombre del archivo de imagen en tu bucket de Cloud Storage que usas para la superposición, como
my-overlay.png
. Este campo debe representar todas las carpetas que creaste en el bucket (por ejemplo,input/my-overlay.png
). - LOCATION: Es la ubicación en la que se ejecutará tu trabajo. Usa una ubicación de la siguiente lista.
Cómo 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_OUTPUT_FOLDER: Es el nombre de la carpeta de Cloud Storage en la que deseas guardar los resultados del video codificado.
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "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/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 1, "y": 0.5 }, "alpha": 1 }, "animations": [ { "animationStatic": { "xy": { "x": 0, "y": 0 }, "startTimeOffset": "0s" } }, { "animationEnd": { "startTimeOffset": "10s" } } ] } ] } }
- Ejecuta el siguiente comando:
Deberías 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 esta muestra, sigue las instrucciones de configuración de C# que se encuentran en la Guía de inicio rápido de la API de Transcoder para usar 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 la Guía de inicio rápido de la API de Transcoder para usar 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 la Guía de inicio rápido de la API de Transcoder para usar bibliotecas cliente. Si deseas 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 de Node.js que se encuentran en la Guía de inicio rápido de la API de Transcoder para usar bibliotecas cliente. Si deseas 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 de PHP que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Si deseas 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 de Python que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Si deseas 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 de Ruby que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Si deseas 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.
En el video de salida, la superposición estática tiene las siguientes características:
- Aparece al comienzo del cronograma y es visible durante 10 segundos.
- Extiende el ancho completo y la mitad de la altura del video de salida.
- Se ubica en la esquina superior izquierda del video de salida.
Consulta el video de salida de muestra para esta configuración. Este video usa una imagen superpuesta de muestra.
Cómo crear una superposición animada
En el objeto image
, usa el campo uri
para especificar la imagen de superposición en Cloud Storage. En el objeto resolution
, configura los valores de Y y X de 0 a 1.0. Un valor igual a 0 mantiene la resolución de la imagen de origen para ese tamaño. Un valor de 1.0 estirará la imagen para que coincida con la resolución del video de salida. Por ejemplo, usa los valores x: 0
y y: 0
para mantener la resolución original de la imagen superpuesta.
En el arreglo animations
, crea un objeto animationFade
con un fadeType
de FADE_IN
. Establece las coordenadas Y y X de 0 a 1.0. Estas coordenadas se basan en la resolución del video de salida. Usa los valores x: 0.5
y y: 0.5
para posicionar la esquina superior izquierda de la superposición en el centro del video de salida.
Especifica cuándo debe comenzar la superposición en la línea de tiempo de video de salida mediante el campo startTimeOffset
. La superposición debe ser completamente visible por el tiempo establecido en el campo endTimeOffset
.
Para atenuar la superposición, crea otro objeto animationFade
. Esta vez, establece fadeType
en FADE_OUT
. Ingresa las coordenadas de posición y las horas de inicio y finalización como se hizo anteriormente.
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
: Es el nombre del bucket de Cloud Storage que creaste.STORAGE_INPUT_VIDEO
: Es el nombre del video en tu bucket de Cloud Storage que se transcodificará, comomy-vid.mp4
. Este campo debe tener en cuenta todas las carpetas que hayas creado en la bucket (por ejemplo,input/my-vid.mp4
).STORAGE_INPUT_OVERLAY
: Es el nombre del imagen en el bucket de Cloud Storage que usas para la superposición, comomy-overlay.png
Este campo debe tener en cuenta todas las carpetas que hayas creado en la bucket (por ejemplo,input/my-overlay.png
).STORAGE_OUTPUT_FOLDER
: Es el nombre de la carpeta de Cloud Storage en la que deseas guardar los resultados del video codificado.
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 de trabajo. Realiza los siguientes reemplazos para el comandogcloud
:- STORAGE_BUCKET_NAME: Es el nombre del bucket de Cloud Storage que creaste.
- STORAGE_INPUT_VIDEO: Es el nombre del video en tu bucket de Cloud Storage que transcodificarás, como
my-vid.mp4
. Este campo debe tener en cuenta todas las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). - STORAGE_INPUT_OVERLAY: Es el nombre del archivo de imagen en tu bucket de Cloud Storage que usas para la superposición, como
my-overlay.png
. Este campo debe representar todas las carpetas que creaste en el bucket (por ejemplo,input/my-overlay.png
). - LOCATION: Es la ubicación en la que se ejecutará tu trabajo. Usa una ubicación de la siguiente lista.
Cómo 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_OUTPUT_FOLDER: Es el nombre de la carpeta de Cloud Storage en la que deseas guardar los resultados del video codificado.
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "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/" }, "overlays": [ { "image": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_OVERLAY", "resolution": { "x": 0, "y": 0 }, "alpha": 1 }, "animations": [ { "animationFade": { "fadeType": "FADE_IN", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "5s", "endTimeOffset": "10s" } }, { "animationFade": { "fadeType": "FADE_OUT", "xy": { "x": 0.5, "y": 0.5 }, "startTimeOffset": "12s", "endTimeOffset": "15s" } } ] } ] } }
- Ejecuta el siguiente comando:
Deberías 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 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. Si deseas 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 de Go que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Si deseas 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 de Java que se encuentran en el Guía de inicio rápido de la API de Transcoder con bibliotecas cliente. Si deseas 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 de Node.js que se encuentran en la Guía de inicio rápido de la API de Transcoder para usar 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 la Guía de inicio rápido de la API de Transcoder para usar 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 la Guía de inicio rápido de la API de Transcoder para usar 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. Si deseas 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.
En el video resultante, la superposición animada tiene las siguientes características:
- Comienza a aparecer en la marca de 5 segundos del video de salida. El valor alfa para la superposición comienza en 0 y termina en 1.0. La esquina superior izquierda de la superposición aparece en el centro del video de salida. La superposición aparece en la resolución original de la imagen superpuesta.
- Después de que aparezca el fundido de entrada, la superposición se mostrará durante 2 segundos.
- Comienza a desaparecer en la marca de 12 segundos del video de salida. El valor alfa para la superposición comienza en 1.0 y termina en 0.
- La animación desaparece cuando pasa la marca de 15 segundos.
Consulta el video de salida de muestra. para esta configuración. Este video usa una imagen superpuesta de muestra.