Este tópico fornece exemplos detalhados de como usar o SDK de upload no lado do servidor em Python para fazer upload de vários arquivos de mídia no ApsaraVideo VOD.
Visão geral
O SDK de upload para Python segue o processo geral do SDK no lado do servidor do ApsaraVideo VOD. Para mais informações, consulte Upload process. O processo básico de uso do SDK de upload para Python é o seguinte:
Cumpra os pré-requisitos. Para mais informações, consulte Prerequisites.
Integre o SDK de upload para Python. Para mais informações, consulte Integrate the Python upload SDK.
-
Implemente a lógica de upload. Esta etapa envolve a configuração das informações de upload.
Para uploads de áudio e vídeo, consulte Scenario 1: Upload audio and video files.
Para uploads de imagens, consulte Scenario 2: Upload images.
Para uploads de ativos de mídia auxiliares, consulte Scenario 3: Upload auxiliary media assets.
-
O endpoint padrão do SDK de upload para Python é
cn-shanghai(Shanghai). Para fazer upload de arquivos de mídia em 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 upload como
cn-beijing(Beijing):self.setApiRegion('cn-beijing')
Pré-requisitos
O ApsaraVideo VOD está ativado. Para mais informações, consulte Activate ApsaraVideo VOD.
Configure as definições de sistema necessárias para o upload, incluindo o caminho de armazenamento na região especificada e as configurações de callback. Para mais informações, consulte Manage storage buckets e Configure callbacks.
Crie um usuário do RAM e use-o para acessar o ApsaraVideo VOD. Para evitar riscos de segurança causados pelo vazamento do par de AccessKey da sua conta Alibaba Cloud, recomendamos a criação de um usuário do RAM com as permissões necessárias para acessar o ApsaraVideo VOD. Em seguida, use o par de AccessKey desse usuário do RAM para o acesso. Para mais informações, consulte Create a RAM user and grant permissions.
-
Configure as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET. Para mais informações, consulte Configure environment variables on Linux, macOS, and Windows.
ImportanteO par de AccessKey de uma conta Alibaba Cloud tem permissões para todas as operações de API. Use o par de AccessKey de um usuário do RAM para chamar operações de API ou executar operações e manutenção (O&M) de rotina.
Não codifique seu AccessKey ID e AccessKey Secret diretamente no código do projeto. Se houver vazamento, todos os recursos da sua conta serão comprometidos.
Opcional. Crie uma função para o usuário do RAM e conceda a ela as permissões necessárias para acessar o ApsaraVideo VOD, caso queira usar o Security Token Service (STS) para esse acesso. Para mais informações, consulte Obtain an STS token.
Integrar o SDK de upload para Python
Para uma descrição detalhada dos diretórios do SDK de upload, consulte Directory structure.
Este tópico usa um usuário comum como exemplo para descrever as operações.
-
Execute os seguintes comandos 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 usar o Python 3, altere sudo pip install aliyun-python-sdk-core para sudo pip install aliyun-python-sdk-core-v3. Se houver várias versões do Python instaladas, use o comando
pip3. Se encontrar problemas de integração, consulte FAQ para solucioná-los. -
Baixe o SDK de upload para Python e o código de exemplo.
Versão do SDK: 1.3.2.2
Data de atualização: 2022-02-24
Endereço de download: V1.3.2.2 SDK and demo source code
Descompacte 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 upload para Python
Se notar que novas APIs ou novos recursos de APIs existentes não estão disponíveis no seu SDK atual, atualize o SDK para a versão mais recente.
-
Execute os seguintes comandos para atualizar os pacotes de dependência.
sudo pip install --upgrade aliyun-python-sdk-vod
sudo pip install --upgrade oss2
-
Baixe o SDK de upload para Python mais recente e substitua os arquivos locais do SDK. Para mais informações, consulte SDK download.
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 upload para Python
O diretório voduploadsdk
-
AliyunVodUtils.py
Diretório
Descrição
AliyunVodLog
A classe de log do SDK de upload, implementada com base no logging.
AliyunVodUtils
A classe utilitária do SDK de upload.
AliyunVodException
A classe de exceção do SDK de upload. Fornece tratamento unificado de exceções, que podem ser capturadas externamente.
-
UploadVideoRequest.py
Diretório
Descrição
UploadVideoRequest
A classe de solicitação para upload de vídeos. Para mais informações sobre os campos, consulte CreateUploadVideo.
-
UploadImageRequest.py
Diretório
Descrição
UploadImageRequest
A classe de solicitação para upload de imagens. Para mais informações sobre os campos, consulte CreateUploadImage.
-
UploadAttachedMediaRequest.py
Diretório
Descrição
UploadAttachedMediaRequest
A classe de solicitação para upload de ativos de mídia auxiliares. Para mais informações sobre os campos, consulte CreateUploadAttachedMedia.
-
AliyunVodUploader.py
Diretório
Descrição
uploadLocalVideo
A API para upload de vídeos locais.
uploadWebVideo
A API para upload de vídeos da web.
uploadLocalM3u8
Faz upload de vídeos M3U8 locais.
uploadWebM3u8
Faz upload de vídeos M3U8 da web.
uploadImage
Faz upload de arquivos de imagem locais ou da web.
uploadAttachedMedia
Faz upload de 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 do VOD. O valor padrão é cn-shanghai (Shanghai). Regiões fora da China, como ap-southeast-1 (Singapore), também são compatíveis. Para mais informações, consulte VOD region IDs.
setMultipartUpload
Define o limiar e o tamanho da parte para upload multipart.
uploadProgressCallback
A função de callback para o progresso do upload. Você pode reescrever essa função.
setEnableCrc
Define se a verificação de redundância cíclica (CRC) será ativada durante o upload. Vem 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.
O diretório samples
uploadVideo.py: Código de exemplo para upload de vídeos.
uploadImage.py: Código de exemplo para upload de imagens.
uploadAttachedMedia.py: Código de exemplo para upload de arquivos de ativos de mídia auxiliares.
Cenário 1: Upload de arquivos de áudio e vídeo
Upload de arquivos comuns
É possível fazer upload dos seguintes tipos de arquivos de áudio e vídeo:
Arquivos locais: usa o upload multipart. O tamanho máximo de um único arquivo é de 48,8 TB. Não há suporte para upload retomável. Para mais informações, consulte a função
testUploadLocalVideono código de exemplo.Arquivos da web: especifique uma URL de arquivo para o upload. O tamanho máximo de um único arquivo é de 48,8 TB. Este método exige o download do arquivo da web para um disco local antes do upload. Certifique-se de que o disco local tenha espaço suficiente. Para mais informações, consulte a função
testUploadWebVideono código de exemplo.
Upload de arquivos M3U8
Aceleração de upload
Para fazer upload de arquivos grandes (na ordem de GB ou TB) ou realizar uploads entre regiões, como enviar um vídeo da China continental para um endereço de armazenamento na região de Singapore, ative o recurso de aceleração de upload. Para mais informações, consulte Enable upload acceleration. Após ativar esse recurso, adicione o par AccelerateConfig chave-valor ao objeto UserData na configuração de upload. 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 |
O tipo de aceleração de upload a ser ativado. Apenas |
|
Domain |
string |
O 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: Upload de imagens
Cenário 3: Upload de ativos de mídia auxiliares
Perguntas frequentes
Ao usar o código de exemplo para fazer upload de um fluxo de vídeo da web, se o erro ERROR:root:Download fail: [Errno 2] No such file or directory for relatado, 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