Este tópico apresenta exemplos detalhados de como usar o SDK de envio server-side para Python para enviar diversos arquivos de mídia ao ApsaraVideo VOD.
Visão geral
O SDK de envio para Python segue o fluxo geral do SDK server-side do ApsaraVideo VOD. Para mais informações, consulte Processo de envio. O fluxo básico de uso do SDK de envio para Python é:
Atenda aos pré-requisitos. Para mais informações, consulte Pré-requisitos.
Integre o SDK de envio para Python. Para mais informações, consulte Integrar o SDK de envio para Python.
-
Implemente a lógica de envio. Esta etapa envolve configurar as informações de envio.
Para envios de áudio e vídeo, consulte Cenário 1: Envio de arquivos de áudio e vídeo.
Para envios de imagens, consulte Cenário 2: Envio de imagens.
Para envios de ativos de mídia auxiliares, consulte Cenário 3: Envio de ativos de mídia auxiliares.
-
O endpoint padrão do SDK de envio para Python é
cn-shanghai(Xangai). Para enviar arquivos de mídia a outras regiões, especifique a região comApiRegionemAliyunVodUploader.py. Para mais informações sobre os endpoints compatíveis com o ApsaraVideo VOD, consulte Endpoints.O exemplo a seguir mostra como definir a região de envio como
cn-beijing(Pequim):self.setApiRegion('cn-beijing')
Pré-requisitos
O ApsaraVideo VOD está ativado. Para mais informações, consulte Ativar o ApsaraVideo VOD.
As configurações de sistema necessárias para o envio estão definidas, incluindo o caminho de armazenamento na região especificada e as configurações de callback. Para mais informações, consulte Gerenciar buckets de armazenamento e Configurar callbacks.
Um usuário RAM foi criado para acessar o ApsaraVideo VOD. Para evitar riscos de segurança causados pelo vazamento do par de AccessKey da sua conta Alibaba Cloud, recomendamos criar um usuário RAM e conceder a ele as permissões necessárias para acessar o ApsaraVideo VOD. Em seguida, use o par de AccessKey desse usuário RAM para acessar o serviço. Para mais informações, consulte Criar um usuário RAM e conceder permissões.
-
Configure as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET. Para mais informações, consulte Configurar variáveis de ambiente no Linux, macOS e Windows.
ImportanteO par de AccessKey de uma conta Alibaba Cloud tem permissões em todas as operações de API. Use o par de AccessKey de um usuário RAM para chamar operações de API ou executar tarefas rotineiras de O&M.
Não codifique rigidamente (hard-code) seu AccessKey ID e AccessKey secret no código do projeto. Em caso de vazamento, todos os recursos da sua conta ficarão comprometidos.
(Opcional) Caso deseje acessar o ApsaraVideo VOD por meio do Security Token Service (STS), crie uma função para o usuário RAM e conceda a essa função as permissões necessárias para acesso ao serviço. Para mais informações, consulte Obter um token STS.
Integrar o SDK de envio para Python
Para obter uma descrição detalhada dos diretórios do SDK de envio, consulte Estrutura de diretórios.
Este tópico usa um usuário comum como exemplo para descrever as operações.
-
Execute os comandos a seguir para instalar os pacotes de dependência.
sudo pip install aliyun-python-sdk-core
sudo pip install aliyun-python-sdk-vod
sudo pip install oss2
NotaSe você usa Python 3, altere sudo pip install aliyun-python-sdk-core para sudo pip install aliyun-python-sdk-core-v3. Caso tenha várias versões do Python instaladas, use o comando
pip3. Se encontrar problemas de integração, consulte as Perguntas frequentes para solucionar o problema. -
Baixe o SDK de envio para Python e o código de exemplo.
Versão do SDK: 1.3.2.2
Data de atualização: 24/02/2022
Endereço para download: Código-fonte do SDK V1.3.2.2 e demonstração
Descompacte o arquivo VodUploadSDK-Python_1.3.*.zip e copie a pasta voduploadsdk do diretório VodUploadSDK-Python_1.3.* para o diretório do seu projeto local (recomendado) ou para o diretório site-packages.
Atualizar o SDK de envio para Python
Caso note que novas APIs ou novos recursos de APIs existentes não estejam disponíveis na sua versão atual do SDK, atualize-o para a versão mais recente.
-
Execute os comandos a seguir para atualizar os pacotes de dependência.
sudo pip install --upgrade aliyun-python-sdk-vod
sudo pip install --upgrade oss2
-
Baixe a versão mais recente do SDK de envio para Python e substitua os arquivos locais do SDK. Para mais informações, consulte Download do SDK.
NotaAbra o arquivo ChangeLog.txt no diretório voduploadsdk para visualizar o número da versão atual do SDK e a data de lançamento.
Estrutura de diretórios do SDK de envio para Python
Diretório voduploadsdk
-
AliyunVodUtils.py
Diretório
Descrição
AliyunVodLog
Classe de log do SDK de envio. Implementada com base no módulo logging.
AliyunVodUtils
Classe utilitária do SDK de envio.
AliyunVodException
Classe de exceção do SDK de envio. Oferece tratamento unificado de exceções e permite captura externa.
-
UploadVideoRequest.py
Diretório
Descrição
UploadVideoRequest
Classe de requisição para envio de vídeos. Para detalhes sobre os campos, consulte CreateUploadVideo.
-
UploadImageRequest.py
Diretório
Descrição
UploadImageRequest
Classe de requisição para envio de imagens. Para detalhes sobre os campos, consulte CreateUploadImage.
-
UploadAttachedMediaRequest.py
Diretório
Descrição
UploadAttachedMediaRequest
Classe de requisição para envio de ativos de mídia auxiliares. Para detalhes sobre os campos, consulte CreateUploadAttachedMedia.
-
AliyunVodUploader.py
Diretório
Descrição
uploadLocalVideo
API para envio de vídeos locais.
uploadWebVideo
API para envio de vídeos da web.
uploadLocalM3u8
Envia vídeos M3U8 locais.
uploadWebM3u8
Envia vídeos M3U8 da web.
uploadImage
Envia arquivos de imagem locais ou da web.
uploadAttachedMedia
Envia arquivos de ativos de mídia auxiliares locais ou da web.
parseWebM3u8
Analisa as informações de shard de um arquivo M3U8 da web.
parseLocalM3u8
Analisa as informações de shard de um arquivo M3U8 local.
setApiRegion
Define o endpoint para o VOD. O valor padrão é cn-shanghai (Xangai). Regiões fora da China, como ap-southeast-1 (Singapura), também são compatíveis. Para mais informações, consulte IDs de região do VOD.
setMultipartUpload
Define o limiar e o tamanho da parte para envio multipart.
uploadProgressCallback
Função de callback para progresso do envio. Pode ser reescrita conforme necessário.
setEnableCrc
Especifica se a verificação de redundância cíclica (CRC) deve ser ativada durante o envio. Ativada por padrão.
ChangeLog.txt: Contém o histórico de lançamentos. A primeira linha indica o número da versão atual do SDK e a data de lançamento.
Diretório samples
uploadVideo.py: Código de exemplo para envio de vídeos.
uploadImage.py: Código de exemplo para envio de imagens.
uploadAttachedMedia.py: Código de exemplo para envio de arquivos de ativos de mídia auxiliares.
Cenário 1: Envio de arquivos de áudio e vídeo
Envio de arquivos comuns
É possível enviar os seguintes tipos de arquivos de áudio e vídeo:
Arquivos locais: Usa envio multipart. O tamanho máximo de um único arquivo é 48,8 TB. Não há suporte para envio retomável. Para mais informações, consulte a função
testUploadLocalVideono código de exemplo.Arquivos da web: Permite especificar uma URL de arquivo para envio. O tamanho máximo de um único arquivo é 48,8 TB. Este método exige baixar o arquivo da web para um disco local antes do envio. Certifique-se de que há espaço suficiente no disco local. Para mais informações, consulte a função
testUploadWebVideono código de exemplo.
Envio de arquivos M3U8
Aceleração de envio
Para enviar arquivos grandes (na ordem de GB ou TB) ou realizar envios entre regiões, como enviar um vídeo da China continental para um endereço de armazenamento na região de Singapura, ative o recurso de aceleração de envio. Para mais informações, consulte Ativar aceleração de envio. Após ativar esse recurso, adicione o par AccelerateConfig chave-valor ao objeto UserData na configuração de envio. Se o objeto UserData não existir, crie-o. Veja um exemplo:
uploadVideoRequest.setUserData("{\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
Descrição dos parâmetros
|
Nome |
Tipo |
Descrição |
|
Type |
string |
Tipo de aceleração de envio a ser ativado. Apenas |
|
Domain |
string |
Nome de domínio acelerado do seu bucket. O protocolo padrão é HTTPS. Nota
Use um nome de domínio acelerado atribuído após a ativação, por exemplo, |
Cenário 2: Envio de imagens
Cenário 3: Envio de ativos de mídia auxiliares
Perguntas frequentes
Ao usar o código de exemplo para enviar um fluxo de vídeo da web, caso ocorra o erro ERROR:root:Download fail: [Errno 2] No such file or directory, resolva o problema criando manualmente uma pasta dlfiles no mesmo diretório da pasta voduploadsdk.
/Users/fulin/Documents/Code/PythonProject/VodPythonUploadSdkTest/venv/bin/python /Users/fulin/Documents/Code/PythonProject/VodPythonUploadSdkTest/uploadVideo.py
[2022-02-16 20:54:59]Download https://img.a... To /Users/fulin/Documents/Code/PythonProject/
/Users/fulin... : InsecureRequestWarning: Unverifi...
warnings.warn(...)
[2022-02-16 20:54:59]Download fail: [Errno 2] No such file or directory: '/Users/fulin/Documents/Code/PythonProject/VodPythonUploadSdkTest/dlfiles/115...
Type: FileDownloadError, Code: Download File Error, Message: , HTTPStatus: NULL, RequestId: NULL
ERROR:root:Download fail: [Errno 2] No such file or directory: '/Users/fulin/Documents/Code/PythonProject/VodPythonUploadSdkTest/dlfiles/115310cd4d...
Process finished with exit code 0