Um snapshot de vídeo é uma imagem capturada de um vídeo em um momento específico e com dimensões definidas. Os snapshots servem para criar ativos como capas de vídeo, sprites e miniaturas para barras de progresso do player. Este tópico descreve como enviar um job de snapshot no ApsaraVideo Media Processing (MPS).
Visão geral
Casos de uso
Capas de vídeo: selecione o primeiro quadro de um vídeo curto em um feed como capa ou capture um quadro em um ponto específico do tempo para usar como capa.
Pré-visualizações de vídeo: crie miniaturas a partir do conteúdo de vídeo. Ao passar o mouse sobre a linha do tempo do player, o usuário visualiza uma miniatura estática daquele ponto. Isso facilita a navegação rápida pelo conteúdo e o salto para seções de interesse.
Moderação de vídeo: faça amostragem do conteúdo de vídeo capturando snapshots para revisão manual ou automatizada.
Recursos
|
Recurso |
Descrição |
Parâmetros de API relacionados |
Operação no console |
|
Snapshot estático |
Captura snapshots JPG de tamanho especificado em pontos de tempo definidos no vídeo. Estão disponíveis os seguintes métodos de amostragem:
|
SnapshotConfig |
Compatível |
|
Snapshot sprite |
Une snapshots estáticos em uma única imagem grande (sprite) com base em regras de layout. A saída é no formato JPG. Aceita apenas chamadas assíncronas. Uma única solicitação de sprite recupera várias imagens, o que reduz o número de requisições e melhora o desempenho do cliente. |
TileOut, TileOutputFile |
Não compatível |
|
Snapshot WebVTT |
Gera um arquivo VTT para snapshots estáticos ou um sprite, contendo carimbos de data/hora, URLs de arquivos e informações de coordenadas. Para exibir uma imagem, recupere e analise o arquivo VTT primeiro. Útil para miniaturas na barra de progresso do player. |
SubOut |
Compatível |
|
Snapshot de keyframe |
Este recurso captura snapshots apenas em keyframes. Se um ponto de tempo especificado não for um keyframe, o serviço usa o keyframe mais próximo. |
FrameType |
Compatível |
|
Detecção de tela preta no primeiro quadro |
Ative a detecção de tela preta para o primeiro quadro (tempo=0). Uma tela preta é definida pela porcentagem de pixels pretos e um limiar de valor de cor. O serviço verifica os primeiros 5 segundos: se encontrar um quadro que não seja preto, ele será capturado. Caso contrário, um job de snapshot único falha; já um job com múltiplos snapshots captura o primeiro quadro preto. |
BlackLevel, PixelBlackThreshold |
Compatível |
Faturamento
A cobrança pelas chamadas de API baseia-se no número de snapshots gerados. Para mais informações, consulte Preços para chamadas de API.
Enviar jobs de snapshot no console
No console do MPS, envie jobs de snapshot apenas usando um workflow.
Faça login no console do MPS.
Na barra de navegação superior, selecione uma região na lista suspensa.

No painel de navegação à esquerda, escolha .
Clique em Create Workflow.
Configure o nó Input conforme necessário.
Adicione um nó Snapshot. Clique no ícone + à direita do nó Input e selecione Snapshot no menu suspenso.
-
Clique no ícone de caneta à direita do nó Snapshot para configurar seus parâmetros.
Parâmetro
Obrigatório
Descrição
Snapshot Mode
Sim
-
Single: captura um único quadro em um momento específico.
-
Multiple: captura quadros em um intervalo definido.
-
Average: captura um número especificado de quadros, distribuídos uniformemente ao longo do vídeo.
Snapshot interval (seconds)
Obrigatório para o modo 'Multiple'
Insira o intervalo entre snapshots em segundos.
Snapshots
Obrigatório para o modo 'Average'
Insira o número de snapshots.
Nota-
Se este parâmetro não for definido, os snapshots serão capturados no intervalo especificado até o final do vídeo.
-
Se o número de snapshots for maior que 1, eles serão capturados no intervalo especificado até que a quantidade definida de imagens seja atingida.
-
Se apenas o número de snapshots for definido, a captura ocorrerá em um intervalo igual a Duração Total / Número de Snapshots.
Name
Sim
Insira um nome para este nó.
Output Path
Sim
Clique em Select. Na lista suspensa Bucket, selecione um bucket. A seção Path mostra as pastas criadas no bucket. Selecione uma pasta como caminho de saída.
Nota-
Formato de caminho para snapshot único:
http://bucket.oss-cn-hangzhou.aliyuncs.com/path/{RunId}/{SnapshotTime}.jpg. -
Formato de caminho para snapshot Múltiplo ou Médio: requer o placeholder {Count}. O caminho deve terminar com
/{RunId}/{SnapshotTime}/{Count}.jpg.
Start Time
Não
Selecione o horário nas listas suspensas de hora, minuto e segundo.
Width x Height
Não
Insira os valores de largura e altura nas respectivas caixas de entrada.
Nota-
Se os campos de largura e altura permanecerem em branco, a resolução do snapshot corresponderá à do vídeo original.
-
Se você definir apenas a largura ou a altura, a outra dimensão será dimensionada automaticamente para manter a proporção original.
Generate WebVTT Index File
Opcional para os modos Multiple e Average
Ative esta opção para gerar um arquivo de índice WebVTT.
Set as Thumbnail
Não
Ative esta opção para definir a imagem capturada como capa do ativo de mídia na biblioteca. Se houver múltiplos snapshots, o primeiro será definido como capa por padrão.
Keyframe
Não
Ative esta opção para garantir que os snapshots sejam capturados apenas em keyframes. Se um ponto de tempo especificado não for um keyframe, o mais próximo será usado.
Black Screen Detection
Opcional para os modos Multiple e Average
Ative esta opção para detectar e ignorar quadros pretos no início do vídeo. Se um quadro não preto for detectado nos primeiros cinco segundos, o MPS capturará o primeiro quadro não preto.
-
Clique em OK para concluir a configuração do nó de snapshot.
-
Clique em Save para finalizar a configuração do workflow.
NotaApós a criação do workflow, ele é acionado automaticamente quando um novo arquivo que atende aos critérios de entrada é carregado no caminho especificado. Para mais informações sobre como acionar um workflow, consulte Acionar um workflow.
Enviar jobs de snapshot por API
Carregue um vídeo no OSS.
-
Envie um job de snapshot. Chame a API SubmitSnapshotJob e configure o parâmetro SnapshotConfig para enviar jobs de snapshot único síncrono, snapshot único assíncrono, sprites ou snapshots WebVTT. As seções a seguir mostram exemplos da estrutura do parâmetro SnapshotConfig. Para mais informações, consulte Detalhes dos parâmetros.
Snapshot único síncrono
// Capture one keyframe at 100 ms into the video. The output image width is 1280 px, and the height is adaptive. The image is saved in JPG format. // Synchronous mode does not support the Num or Interval parameters, nor does it support sprite or WebVTT output. { "Time":"100", "FrameType":"intra", "Width":"1280", "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example.jpg" } }Snapshot único assíncrono
// Capture one keyframe at the beginning of the video, with first-frame black screen detection enabled. The output image has the same dimensions as the source video and is saved in JPG format. { "Num":"1", "Time":"0", "FrameType":"intra", "BlackLevel":"100", "PixelBlackThreshold":"30", "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example.jpg" } }Snapshot amostrado
// Starting from the beginning of the video, capture one normal frame every 10 seconds for a maximum of 200 frames or until the video ends. // First-frame black screen detection is enabled. The output images have the same dimensions as the source video and are saved as example{Count}.jpg. { "Num":"200", "Time":"0", "Interval":"10", "FrameType":"normal", "BlackLevel":"100", "PixelBlackThreshold":"30", // To prevent files from being overwritten, you must use the {Count} placeholder in the OutputFile object for multiple snapshots. "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example{Count}.jpg" } }Snapshot uniformemente espaçado
// Capture 200 normal frames, spaced evenly, from 100 ms to the end of the video. The output images are 1280 px wide and 720 px high. The images are saved as example{Count}.jpg. { "Num":"200", "Time":"100", "Interval":"0", "FrameType":"normal", "Width":"1280", "Height":"720", // To prevent files from being overwritten, you must use the {Count} placeholder in the OutputFile object for multiple snapshots. "OutputFile":{ "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example{Count}.jpg" } }Sprite
// Capture 200 normal frames, spaced evenly, from 100 ms to the end of the video. The output images are 1280 px wide and 720 px high. // The small images are stitched into a sprite with a 10x10 layout. The sprite is saved in example-bucket002, and the individual small images are saved in example-bucket001. { "Num":"200", "Time":"100", "Interval":"0", "FrameType":"normal", "Width":"1280", "Height":"720", // To prevent files from being overwritten, you must use the {Count} placeholder in the OutputFile object for multiple snapshots. "OutputFile":{ "Bucket":"example-bucket001", "Location":"oss-cn-hangzhou", "Object":"example{Count}.jpg" }, "TileOut":{ "Lines":10, "Columns":10, "Padding":"2", "Margin":"4", "Color":"black", "IsKeepCellPic":"true" }, // To prevent files from being overwritten, set OutputFile and TileOutputFile to different buckets or object paths. You must also use the {TileCount} placeholder in the TileOutputFile object for the sprite. "TileOutputFile":{ "Bucket":"example-bucket002", "Location":"oss-cn-hangzhou", "Object":"example{TileCount}.jpg" } }Snapshot WebVTT
// Capture 200 normal frames, spaced evenly, from 100 ms to the end of the video. The output images are 1280 px wide and 720 px high. A VTT file is generated. { "Num":"200", "Time":"100", "Interval":"0", "FrameType":"normal", "Width":"1280", "Height":"720", // To output a VTT file, the Object must have a .vtt extension. The corresponding image path is example/snapshot-tile-{Count}.jpg. "OutputFile": { "Bucket":"example-bucket", "Location":"oss-cn-hangzhou", "Object":"example.vtt" }, "Format":"vtt", "SubOut":{ "IsSptFrag":"true" } } -
Para um job de snapshot único síncrono, a API retorna o resultado diretamente na resposta. Para jobs assíncronos, configure notificações de mensagem ou consulte proativamente os resultados.
NotaSe o arquivo de entrada for muito grande, o job poderá atingir o tempo limite e falhar. Recomendamos implementar um mecanismo de nova tentativa.
-
(Recomendado) Receba notificações de callback.
Após a conclusão de um job assíncrono, se as notificações de mensagem estiverem configuradas, o sistema envia uma mensagem para a fila ou tópico especificado no Simple Message Queue (anteriormente MNS). Para mais informações, consulte Receber notificações de mensagem.
-
Consulte os resultados do job.
Chame a API QuerySnapshotJobList para consultar os resultados de um ou mais jobs de snapshot especificando seus IDs. Alternativamente, realize uma consulta paginada filtrando jobs com base no status, horário de criação ou fila do MPS, sem especificar IDs de job.
Enviar jobs de snapshot por SDK
|
SDK |
Guias |
|
Java SDK |
|
|
Python SDK |
|
|
PHP SDK |
|
|
PHP SDK (nova versão) |
|
|
Node.js SDK |
|
|
Go SDK |
Perguntas frequentes
Para perguntas frequentes sobre snapshots, consulte FAQ sobre Snapshot.