En esta página, se explica cómo generar una hoja de sprites que contiene fotogramas de un video que transcodificas. Estos marcos de tamaño reducido, también conocidos como miniaturas, son útiles para organizar y obtener una vista previa del contenido. Para generar la hoja de Sprite, usa el arreglo spriteSheets
en la plantilla JobConfig
.
Tienes dos opciones para generar la hoja de sprites:
- Genera una cantidad determinada de imágenes en miniatura distribuidas de manera uniforme en el cronograma de video de entrada.
- Genera una imagen en miniatura periódicamente, es decir, cada n segundos, en el cronograma de video de entrada.
Genera una cantidad determinada de imágenes en miniatura
La siguiente configuración genera una hoja de 10 × 10 de imágenes grandes y otra de 10 × 10 con imágenes pequeñas, cada una con 100 miniaturas. Ten en cuenta que las hojas de sprites requieren al menos un VideoStream
en la configuración del trabajo.
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:
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_VIDEO: Es el nombre del video en tu bucket de Cloud Storage que se transcodificará, 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_OUTPUT_FOLDER: Es el nombre de la carpeta de Cloud Storage en la que deseas guardar los resultados del video codificado.
Cuerpo JSON de la solicitud:
{ "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/" }, "spriteSheets": [ { "filePrefix": "small-sprite-sheet", "spriteHeightPixels": 32, "spriteWidthPixels": 64, "columnCount": 10, "rowCount": 10, "totalCount": 100 }, { "filePrefix": "large-sprite-sheet", "spriteHeightPixels": 72, "spriteWidthPixels": 128, "columnCount": 10, "rowCount": 10, "totalCount": 100 } ] } }
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 CLI
- Crea un archivo
request.json
que defina los campos del trabajo. Realiza los siguientes reemplazos para el comandogcloud
:- STORAGE_BUCKET_NAME: El nombre del depósito de Cloud Storage que creaste.
- STORAGE_INPUT_VIDEO: El nombre del video en el bucket de Cloud Storage que transcodificas, como
my-vid.mp4
. Este campo debe tener en cuenta las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). - LOCATION: Es la ubicación en la que se ejecutará el trabajo. Usa una ubicación de la siguiente lista:
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_OUTPUT_FOLDER: Es el nombre de la carpeta de Cloud Storage en la que deseas guardar las salidas de video codificadas.
{ "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/" }, "spriteSheets": [ { "filePrefix": "small-sprite-sheet", "spriteHeightPixels": 32, "spriteWidthPixels": 64, "columnCount": 10, "rowCount": 10, "totalCount": 100 }, { "filePrefix": "large-sprite-sheet", "spriteHeightPixels": 72, "spriteWidthPixels": 128, "columnCount": 10, "rowCount": 10, "totalCount": 100 } ] } }
- Ejecuta el siguiente comando:
gcloud transcoder jobs create --location=LOCATION --file="request.json"
Debería 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 la guía de inicio rápido sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de C# para la API de Transcoder.
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 sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Go para la API de Transcoder.
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 sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Java para la API de Transcoder.
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 sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Node.js para la API de Transcoder.
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 sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de PHP para la API de Transcoder.
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 sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Python para la API de Transcoder.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby que se encuentran en la guía de inicio rápido sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Ruby para la API de Transcoder.
Usa esta configuración en el video de muestra para generar las siguientes hojas de sprites:
Figura 1: Hoja de sprite de imagen pequeña (100 miniaturas)
Figura 2: Hoja de sprite de imagen grande (100 miniaturas)
Genera una imagen en miniatura periódicamente
La siguiente configuración genera una hoja de sprites de imágenes pequeñas y una hoja de sprites de imágenes grandes. Cada hoja de sprites contiene miniaturas que se generaron cada 7 segundos desde el video de entrada. Ten en cuenta que las hojas de sprites requieren al menos un VideoStream
en la configuración del trabajo.
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:
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_VIDEO: Es el nombre del video en tu bucket de Cloud Storage que se transcodificará, 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_OUTPUT_FOLDER: Es el nombre de la carpeta de Cloud Storage en la que deseas guardar los resultados del video codificado.
Cuerpo JSON de la solicitud:
{ "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/" }, "spriteSheets": [ { "filePrefix": "small-sprite-sheet", "spriteHeightPixels": 32, "spriteWidthPixels": 64, "interval": "7s" }, { "filePrefix": "large-sprite-sheet", "spriteHeightPixels": 72, "spriteWidthPixels": 128, "interval": "7s" } ] } }
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 CLI
- Crea un archivo
request.json
que defina los campos del trabajo. Realiza los siguientes reemplazos para el comandogcloud
:- STORAGE_BUCKET_NAME: El nombre del depósito de Cloud Storage que creaste.
- STORAGE_INPUT_VIDEO: El nombre del video en el bucket de Cloud Storage que transcodificas, como
my-vid.mp4
. Este campo debe tener en cuenta las carpetas que creaste en el bucket (por ejemplo,input/my-vid.mp4
). - LOCATION: Es la ubicación en la que se ejecutará el trabajo. Usa una ubicación de la siguiente lista:
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_OUTPUT_FOLDER: Es el nombre de la carpeta de Cloud Storage en la que deseas guardar las salidas de video codificadas.
{ "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/" }, "spriteSheets": [ { "filePrefix": "small-sprite-sheet", "spriteHeightPixels": 32, "spriteWidthPixels": 64, "interval": "7s" }, { "filePrefix": "large-sprite-sheet", "spriteHeightPixels": 72, "spriteWidthPixels": 128, "interval": "7s" } ] } }
- Ejecuta el siguiente comando:
gcloud transcoder jobs create --location=LOCATION --file="request.json"
Debería 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 la guía de inicio rápido sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de C# para la API de Transcoder.
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 sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Go para la API de Transcoder.
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 sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Java para la API de Transcoder.
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 sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Node.js para la API de Transcoder.
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 sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de PHP para la API de Transcoder.
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 sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Python para la API de Transcoder.
Ruby
Antes de probar esta muestra, sigue las instrucciones de configuración de Ruby que se encuentran en la guía de inicio rápido sobre la API de Transcoder mediante bibliotecas cliente. Si quieres obtener más información, consulta la documentación de referencia de la API de Ruby para la API de Transcoder.
Usa esta configuración en el video de muestra para generar las siguientes hojas de sprites:
Figura 3: Hoja de sprite de imagen pequeña (1 miniatura cada 7 segundos)
Figura 4: Hoja de sprites de imagen grande (1 miniatura cada 7 segundos)
Se generan ocho miniaturas a partir del video de muestra, que dura 60 segundos.