Gerencie modelos de snapshot com o ApsaraVideo VOD SDK for Python. Os exemplos nesta página usam o pacote aliyunsdkvod para criar, modificar, consultar e excluir modelos de snapshot.
Pré-requisitos
Antes de começar, verifique se você tem:
Python 3.x instalado
O pacote
aliyunsdkvodinstaladoUm par de AccessKey com permissões no ApsaraVideo VOD
Um cliente VOD inicializado. Para mais detalhes, consulte Inicialização
Todos os exemplos nesta página inicializam o cliente chamando init_vod_client() . Para a implementação, consulte o guia de inicialização vinculado acima.
Observações de uso
Todos os exemplos usam autenticação com um par de AccessKey.
Para obter detalhes sobre os parâmetros de solicitação e resposta, consulte a referência da API no OpenAPI Explorer. Clique em API Documentation na barra de navegação superior para ver os detalhes.
Para obter códigos de exemplo de outras operações de API, abra o OpenAPI Explorer, selecione uma operação no painel de navegação à esquerda, especifique os parâmetros na aba Parameters, clique em Initiate Call e baixe o código na aba SDK Sample Code.
Parâmetros de configuração de snapshot
Os exemplos de criação e modificação compartilham a mesma estrutura de configuração. As tabelas a seguir descrevem cada parâmetro.
SnapshotConfig
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
Long |
Sim |
Quantidade de snapshots a capturar. |
|
|
|
Long |
Sim |
Intervalo entre as capturas de snapshot, em segundos. O valor 0 indica que os snapshots são capturados em intervalos uniformes, com base na duração do vídeo e no valor de Count. |
|
|
|
Long |
Sim |
Tempo inicial para captura dos snapshots, em milissegundos. |
|
|
|
Integer |
Não |
Largura do snapshot, em pixels. Valores válidos: [8, 4096]. Valor padrão: largura do vídeo de source. |
|
|
|
Integer |
Não |
Altura do snapshot, em pixels. Valores válidos: [8, 4096]. Valor padrão: altura do vídeo de source. |
|
|
|
String |
Sim |
Tipo de quadro para os snapshots. Valores válidos: |
|
TemplateConfig
|
Parâmetro |
Tipo |
Descrição |
Valores válidos |
|
|
Object |
Objeto de configuração de snapshot. |
Consulte a tabela acima |
|
|
String |
Tipo de snapshot. |
|
SpriteSnapshotConfig (opcional)
Para criar um modelo de sprite snapshot, adicione SpriteSnapshotConfig dentro de SnapshotConfig e defina SnapshotType como SpriteSnapshot.
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
Exemplo |
|
|
String |
Não |
Largura de cada imagem pequena no sprite, em pixels. Valor padrão: largura de um snapshot normal. |
|
|
|
String |
Não |
Altura de cada imagem pequena no sprite, em pixels. Valor padrão: altura de um snapshot normal. |
|
|
|
String |
Sim |
Número de colunas de imagens pequenas. Valores válidos: [1, 10000]. |
|
|
|
String |
Sim |
Número de linhas de imagens pequenas. Valores válidos: [1, 10000]. |
|
|
|
String |
Sim |
Preenchimento interno de cada imagem pequena, em pixels. |
|
|
|
String |
Sim |
Margem externa de cada imagem pequena, em pixels. |
|
|
|
String |
Sim |
Define se as imagens individuais das células devem ser mantidas. Valores válidos: |
|
|
|
String |
Sim |
Cor de fundo da imagem do sprite. Para mais informações, consulte Configurações de cor. Não há suporte para definição de cor por valores RGB. |
|
Crie um modelo de snapshot
Chame AddVodTemplate para criar um modelo de snapshot. Defina TemplateType como Snapshot.
Para detalhes da API, consulte AddVodTemplate.
Modelo de snapshot normal
from aliyunsdkvod.request.v20170321 import AddVodTemplateRequest
import json
import traceback
def add_vod_template(clt):
request = AddVodTemplateRequest.AddVodTemplateRequest()
# Template name
request.set_Name('Sample Snapshot Template')
# Template type: must be "Snapshot"
request.set_TemplateType('Snapshot')
# Snapshot configuration
snapshotConfig = {'Count': 50, 'Interval': 1, 'SpecifiedOffsetTime': 0, 'Width': 200, 'Height': 200,
'FrameType': 'normal'}
templateConfig = {'SnapshotConfig': snapshotConfig, 'SnapshotType': 'NormalSnapshot'}
request.set_TemplateConfig(json.dumps(templateConfig))
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
template = add_vod_template(clt)
# The response contains the template ID
print(template['VodTemplateId'])
print(json.dumps(template, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
Modelo de sprite snapshot
Para criar um modelo de sprite snapshot, adicione SpriteSnapshotConfig à configuração de snapshot e defina SnapshotType como SpriteSnapshot:
# Sprite snapshot configuration (includes normal snapshot config)
snapshotConfig = {'Count': 50, 'Interval': 1, 'SpecifiedOffsetTime': 0, 'Width': 200, 'Height': 200,
'FrameType': 'normal'}
# Add sprite-specific settings
spriteSnapshotConfig = {'CellWidth': 120, 'CellHeight': 68, 'Columns': 3, 'Lines': 10, 'Padding': 20,
'Margin': 50, 'KeepCellPic': 'keep', 'Color': 'tomato'}
snapshotConfig['SpriteSnapshotConfig'] = spriteSnapshotConfig
templateConfig = {'SnapshotConfig': snapshotConfig, 'SnapshotType': 'SpriteSnapshot'}
Substitua as variáveis snapshotConfig e templateConfig no exemplo de snapshot normal acima para criar um modelo de sprite snapshot.
Modifique um modelo de snapshot
Chame UpdateVodTemplate para atualizar um modelo de snapshot existente. Especifique o id do modelo com VodTemplateId.
Para detalhes da API, consulte UpdateVodTemplate.
from aliyunsdkvod.request.v20170321 import UpdateVodTemplateRequest
import json
import traceback
def update_vod_template(clt):
request = UpdateVodTemplateRequest.UpdateVodTemplateRequest()
# Specify the template to update
request.set_VodTemplateId('<templateId>')
# Update the template name
request.set_Name('New Snapshot Template Name')
# Update the snapshot configuration
snapshotConfig = {'Count': 50, 'Interval': 1, 'SpecifiedOffsetTime': 0, 'Width': 200, 'Height': 200,
'FrameType': 'normal'}
templateConfig = {'SnapshotConfig': snapshotConfig, 'SnapshotType': 'NormalSnapshot'}
request.set_TemplateConfig(json.dumps(templateConfig))
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
template = update_vod_template(clt)
print(json.dumps(template, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
Substitua <templateId> pelo id real do modelo retornado durante a criação.
Consultar modelos de snapshot
O ApsaraVideo VOD oferece duas operações de consulta:
GetVodTemplate: Recupera um único modelo pelo id. Consulte GetVodTemplate.
ListVodTemplate: Lista todos os modelos de um determinado tipo. Consulte ListVodTemplate.
Consultar um único modelo
from aliyunsdkvod.request.v20170321 import GetVodTemplateRequest
import json
import traceback
def get_vod_template(clt):
request = GetVodTemplateRequest.GetVodTemplateRequest()
request.set_VodTemplateId('<templateId>')
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
template = get_vod_template(clt)
print(json.dumps(template, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
Listar todos os modelos de snapshot
from aliyunsdkvod.request.v20170321 import ListVodTemplateRequest
import json
import traceback
def list_vod_template(clt):
request = ListVodTemplateRequest.ListVodTemplateRequest()
# Filter by template type
request.set_TemplateType('Snapshot')
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
templates = list_vod_template(clt)
print(json.dumps(templates, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
Exclua um modelo de snapshot
Chame DeleteVodTemplate para excluir um modelo de snapshot pelo id.
Para detalhes da API, consulte DeleteVodTemplate.
from aliyunsdkvod.request.v20170321 import DeleteVodTemplateRequest
import json
import traceback
def delete_vod_template(clt):
request = DeleteVodTemplateRequest.DeleteVodTemplateRequest()
request.set_VodTemplateId('<templateId>')
request.set_accept_format('JSON')
response = json.loads(clt.do_action_with_exception(request))
return response
try:
clt = init_vod_client()
result = delete_vod_template(clt)
print(json.dumps(result, ensure_ascii=False, indent=4))
except Exception as e:
print(e)
print(traceback.format_exc())
Referências
Inicialização: Configure o cliente VOD
OpenAPI Explorer: Navegue e teste outras operações da API do ApsaraVideo VOD
Parâmetros para processamento de mídia: Descrições detalhadas dos parâmetros para modelos de snapshot