Esta página explica como gerar uma spritesheet que contém frames de um
vídeo que você transcodifica. Esses frames de tamanho reduzido, também conhecidos como miniaturas, são
úteis para organizar e visualizar o conteúdo. Para gerar a spritesheet, use a matriz spriteSheets
no modelo JobConfig
.
Você tem duas opções para gerar a spritesheet:
- Gere um número definido de imagens em miniatura distribuídas uniformemente durante o cronograma do vídeo de entrada.
- Gere uma imagem em miniatura periodicamente, ou seja, a cada n segundos, em toda a linha do tempo do vídeo de entrada.
Gere um número definido de imagens em miniatura
A seguinte configuração gera uma spritesheet de 10x10 de imagens grandes e uma spritesheet de 10x10 de imagens pequenas, cada uma com 100 miniaturas.
É possível adicionar essa configuração a um modelo de job ou incluí-la em uma configuração de job ad-hoc:
REST e LINHA DE CMD
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud listado nas Configurações do IAM
- LOCATION: o local onde seu job será executado. Use
uma das regiões compatíveis:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- GCS_BUCKET_NAME: o nome do bucket do Cloud Storage criado.
- GCS_INPUT_VIDEO: o nome do vídeo no
bucket do Cloud Storage que você está transcodificando, como
my-vid.mp4
. Este campo precisa considerar todas as pastas criadas no bucket (por exemplo,input/my-vid.mp4
). - GCS_OUTPUT_FOLDER: nome da pasta do Cloud Storage em que você quer salvar as saídas de vídeo codificadas.
Corpo JSON da solicitação:
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://GCS_BUCKET_NAME/GCS_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://GCS_BUCKET_NAME/GCS_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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Antes de testar esta amostra, siga as instruções de configuração do C# no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder para C#.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder Go
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder para Java.
Node.js
Antes de tentar esse exemplo, siga as instruções de configuração do Node.js no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder Node.js
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder para PHP.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder Python
Ruby
Antes de testar esta amostra, siga as instruções de configuração do Ruby no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder para Ruby.
Use essa configuração no vídeo de amostra para gerar as seguintes spritesheets:
Figura 1. Spritesheet de imagem pequena (100 miniaturas)
Figura 2. Spritesheet de imagem grande (100 miniaturas)
Gera uma imagem em miniatura periodicamente
A configuração a seguir gera uma spritesheet de imagens pequenas e uma spritesheet de imagens grandes. Cada spritesheet contém miniaturas geradas a cada sete segundos do vídeo de entrada.
É possível adicionar essa configuração a um modelo de job ou incluí-la em uma configuração de job ad-hoc:
REST e LINHA DE CMD
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud listado nas Configurações do IAM
- LOCATION: o local onde seu job será executado. Use
uma das regiões compatíveis:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- GCS_BUCKET_NAME: o nome do bucket do Cloud Storage criado.
- GCS_INPUT_VIDEO: o nome do vídeo no
bucket do Cloud Storage que você está transcodificando, como
my-vid.mp4
. Este campo precisa considerar todas as pastas criadas no bucket (por exemplo,input/my-vid.mp4
). - GCS_OUTPUT_FOLDER: nome da pasta do Cloud Storage em que você quer salvar as saídas de vídeo codificadas.
Corpo JSON da solicitação:
{ "config": { "inputs": [ { "key": "input0", "uri": "gs://GCS_BUCKET_NAME/GCS_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://GCS_BUCKET_NAME/GCS_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 a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { ... }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Antes de testar esta amostra, siga as instruções de configuração do C# no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder para C#.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder Go
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder para Java.
Node.js
Antes de tentar esse exemplo, siga as instruções de configuração do Node.js no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder Node.js
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder para PHP.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder Python
Ruby
Antes de testar esta amostra, siga as instruções de configuração do Ruby no Guia de início rápido da API Transcoder: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Transcoder para Ruby.
Use essa configuração no vídeo de amostra para gerar as seguintes spritesheets:
Figura 3. Spritesheet de imagem pequena (1 miniatura a cada 7 segundos)
Figura 4. Spritesheet de imagem grande (1 miniatura a cada 7 segundos)
Oito miniaturas são geradas a partir da amostra de vídeo, que tem 60 segundos de duração.