En esta página se explica cómo insertar superposiciones en vídeos transcodificados. Una superposición es una imagen que se inserta sobre el vídeo de salida y que se puede mostrar o ocultar gradualmente durante un periodo de tiempo específico. Para insertar una superposición, usa la matriz overlays
en la plantilla JobConfig
.
Consulta la lista de formatos de archivo de imagen admitidos.
Subir una imagen a Cloud Storage
Para empezar, haz lo siguiente para subir una imagen superpuesta a tu segmento de Cloud Storage:
- En la Google Cloud consola, ve a la página Navegador de Cloud Storage.
Ir a la página Navegador de Cloud Storage - Haga clic en el nombre del suyo para abrirlo.
- Haz clic en Subir archivos.
- Selecciona un archivo de imagen para subir desde tu equipo local.
Crear una superposición
Puedes crear dos tipos de superposiciones: estáticas o animadas. Ambos tipos de superposiciones usan una imagen estática. Puedes mostrar u ocultar superposiciones estáticas. Las superposiciones animadas admiten animaciones de aparición y desaparición de la imagen.
Puedes insertar varias superposiciones en un mismo vídeo de salida.
Crear una superposición estática
En el objeto image
, usa el campo uri
para especificar la imagen superpuesta en Cloud Storage. En el objeto resolution
, asigna a los valores x e y un valor entre 0 y 1.0. Si el valor es 0, se mantiene la resolución de la imagen de origen en esa dimensión.Si el valor es 1,0, la imagen se estirará para que coincida con la dimensión del vídeo de salida. Por ejemplo, usa los valores x: 1
y y:
0.5
para estirar la imagen superpuesta a todo el ancho y a la mitad de la altura del vídeo de salida.
En la matriz animations
, crea un objeto animationStatic
con coordenadas x e y de 0 a 1,0. Estas coordenadas se basan en la resolución del vídeo de salida. Usa los valores x: 0
y y: 0
para colocar la esquina superior izquierda de la superposición en la esquina superior izquierda del vídeo de salida. Especifica cuándo debe aparecer la superposición en la línea de tiempo del vídeo de salida mediante el campo startTimeOffset
.
Para quitar la animación estática, crea un objeto animationEnd
. Especifica cuándo debe terminar la animación (es decir, cuándo debe desaparecer la superposición) en la línea de tiempo del vídeo de salida mediante el campo startTimeOffset
.
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_VIDEO
: el nombre del vídeo de tu cubo de Cloud Storage que quieres transcodificar, comomy-vid.mp4
. En este campo se deben tener en cuenta las carpetas que hayas creado en el segmento (por ejemplo,input/my-vid.mp4
).STORAGE_INPUT_OVERLAY
: el nombre de la imagen del segmento de Cloud Storage que vas a usar para la superposición, comomy-overlay.png
. En este campo se deben tener en cuenta las carpetas que hayas creado en el segmento (por ejemplo,input/my-overlay.png
).STORAGE_OUTPUT_FOLDER
: nombre de la carpeta de Cloud Storage en la que quieres guardar las salidas de vídeo codificadas.
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
:- STORAGE_BUCKET_NAME: el nombre del segmento de Cloud Storage que has creado.
- STORAGE_INPUT_VIDEO: el nombre del vídeo del 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 segmento (por ejemplo,input/my-vid.mp4
). - STORAGE_INPUT_OVERLAY: el nombre del archivo de imagen de tu segmento de Cloud Storage que vas a usar para la superposición, como
my-overlay.png
. En este campo se deben tener en cuenta las carpetas que hayas creado en el segmento (por ejemplo,input/my-overlay.png
). - LOCATION: la ubicación en la que se ejecutará el trabajo. Usa una ubicación de la siguiente lista.
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_OUTPUT_FOLDER: nombre de la carpeta de Cloud Storage en la que quieres guardar los resultados de vídeo 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í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.
En el vídeo de salida, la superposición estática tiene las siguientes características:
- Aparece al principio de la línea de tiempo y se muestra durante 10 segundos.
- Se estira a lo ancho y a la mitad de la altura del vídeo de salida.
- Se coloca en la esquina superior izquierda del vídeo de salida.
Consulta el vídeo de salida de ejemplo de esta configuración. Este vídeo usa una imagen de superposición de muestra.
Crear una superposición animada
En el objeto image
, usa el campo uri
para especificar la imagen superpuesta en Cloud Storage. En el objeto resolution
, asigna a los valores x e y un valor entre 0 y 1.0. Si el valor es 0, se mantiene la resolución de la imagen de origen en esa dimensión.Si el valor es 1,0, la imagen se estirará para que coincida con la dimensión del vídeo de salida. Por ejemplo, usa los valores x: 0
y y: 0
para mantener la resolución original de la imagen superpuesta.
En la matriz animations
, crea un objeto animationFade
con un fadeType
de
FADE_IN
. Define las coordenadas x e y entre 0 y 1.0. Estas coordenadas se basan en la resolución del vídeo de salida. Usa los valores x: 0.5
y y: 0.5
para colocar la esquina superior izquierda de la superposición en el centro del vídeo de salida.
Especifica cuándo debe empezar a aparecer la superposición en la línea de tiempo del vídeo de salida mediante el campo startTimeOffset
. La superposición debe ser totalmente visible en el momento indicado en el campo endTimeOffset
.
Para atenuar la superposición, crea otro objeto animationFade
. Esta vez, asigna el valor FADE_OUT
a fadeType
. Introduce las coordenadas de la posición y las horas de inicio y finalización como antes.
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_VIDEO
: el nombre del vídeo de tu cubo de Cloud Storage que quieres transcodificar, comomy-vid.mp4
. En este campo se deben tener en cuenta las carpetas que hayas creado en el segmento (por ejemplo,input/my-vid.mp4
).STORAGE_INPUT_OVERLAY
: el nombre de la imagen del segmento de Cloud Storage que vas a usar para la superposición, comomy-overlay.png
. En este campo se deben tener en cuenta las carpetas que hayas creado en el segmento (por ejemplo,input/my-overlay.png
).STORAGE_OUTPUT_FOLDER
: nombre de la carpeta de Cloud Storage en la que quieres guardar las salidas de vídeo codificadas.
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
:- STORAGE_BUCKET_NAME: el nombre del segmento de Cloud Storage que has creado.
- STORAGE_INPUT_VIDEO: el nombre del vídeo del 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 segmento (por ejemplo,input/my-vid.mp4
). - STORAGE_INPUT_OVERLAY: el nombre del archivo de imagen de tu segmento de Cloud Storage que vas a usar para la superposición, como
my-overlay.png
. En este campo se deben tener en cuenta las carpetas que hayas creado en el segmento (por ejemplo,input/my-overlay.png
). - LOCATION: la ubicación en la que se ejecutará el trabajo. Usa una ubicación de la siguiente lista.
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_OUTPUT_FOLDER: nombre de la carpeta de Cloud Storage en la que quieres guardar los resultados de vídeo 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í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.
En el vídeo resultante, la superposición animada tiene las siguientes características:
- Empieza a aparecer gradualmente en el segundo 5 del vídeo de salida. El valor alfa de la superposición empieza en 0 y termina en 1.0. La esquina superior izquierda de la superposición aparece en el centro del vídeo de salida. La superposición aparece con la resolución original de la imagen superpuesta.
- Después de aparecer, la superposición se muestra durante 2 segundos.
- Empieza a desaparecer en el segundo 12 del vídeo de salida. El valor alfa de la superposición empieza en 1,0 y termina en 0.
- La animación desaparece a los 15 segundos.
Consulta el vídeo de salida de ejemplo de esta configuración. Este vídeo usa una imagen de superposición de muestra.