Este tópico apresenta exemplos detalhados de como usar o kit de desenvolvimento de software (SDK) de upload do lado do servidor para PHP para fazer upload de diversos arquivos de mídia para o armazenamento no ApsaraVideo VOD.
Visão geral
Recomendamos uma arquitetura B/S (Browser/Server) para desenvolvimento em PHP.
O SDK de upload para PHP segue o fluxo geral do SDK do lado do servidor do ApsaraVideo VOD. Para obter mais informações, consulte Upload process. O fluxo básico para usar o SDK de upload para PHP é o seguinte:
Conclua os pré-requisitos. Para obter mais informações, consulte Prerequisites.
Integre o SDK de upload para PHP. Para obter mais informações, consulte Integrate the PHP upload SDK.
-
Implemente a lógica de upload e configure as informações de upload.
Para fazer upload de arquivos de áudio e vídeo, consulte Scenario 1: Upload audio and video files.
Para fazer upload de imagens, consulte Scenario 2: Upload images.
Para fazer upload de ativos de mídia auxiliares, consulte Scenario 3: Upload auxiliary media assets.
-
O endpoint padrão do SDK de upload para PHP é
cn-shanghai(Shanghai). Para fazer upload de arquivos de mídia para outras regiões, especifique a região ao inicializarAliyunVodUploader. Para obter mais informações sobre os endpoints compatíveis com o ApsaraVideo VOD, consulte Endpoints.O exemplo a seguir mostra: defina a região de upload como
cn-beijing(Beijing):$apiRegionId = 'cn-beijing'; // The destination region for the upload. $uploader = new AliyunVodUploader($accessKeyId, $accessKeySecret, $apiRegionId);
Pré-requisitos
Você ativou o ApsaraVideo VOD. Para obter mais informações, consulte Activate ApsaraVideo VOD.
Você configurou as definições do sistema necessárias para o upload, incluindo o caminho de armazenamento na região especificada e as configurações de callback. Para obter mais informações, consulte gerencie storage buckets e Configure callbacks.
Você criou um usuário ram 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 do usuário ram para acessar o ApsaraVideo VOD. Para obter mais informações, consulte crie a RAM user and grant permissions.
-
Configure as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET. Para obter mais informações, consulte Configure environment variables on Linux, macOS, and Windows.
ImportanteUm par de AccessKey de conta alibaba cloud tem permissões para todas as operações de api. Use o par de AccessKey de um usuário ram para chamar operações de api ou execute tarefas rotineiras de O&M.
Não codifique o AccessKey id nem o AccessKey secret diretamente no código do projeto. Em caso de vazamento, todos os recursos da sua conta ficam comprometidos.
Opcional. Para acessar o ApsaraVideo VOD com o Security Token service (STS), crie uma função para o usuário ram e conceda à função as permissões necessárias para acessar o ApsaraVideo VOD. Para obter mais informações, consulte Obtain an STS token.
Integrar o SDK de upload para PHP
-
baixe o SDK e a demonstração.
Versão do SDK: 1.0.3
Data de atualize: 2022-04-19
Endereço de download: V1.0.3 SDK and demo source code
Descompacte VodUploadSDK-PHP_1.0.3.zip e copie a pasta voduploadsdk do diretório VodUploadSDK-PHP_1.0.3 para o seu projeto.
Estrutura de diretórios do SDK de upload para PHP
Caminho: VodUploadSDK-PHP_1.0.3/voduploadsdk/uploader
-
UploadVideoRequest.php
Diretório
Descrição
UploadVideoRequest
Classe de solicitação para upload de vídeos. Para obter mais informações sobre os campos, consulte CreateUploadVideo.
-
UploadImageRequest.php
Diretório
Descrição
UploadImageRequest
Classe de solicitação para upload de imagens. Para obter mais informações sobre os campos, consulte CreateUploadImage.
-
UploadAttachedMediaRequest.php
Diretório
Descrição
UploadAttachedMediaRequest
Classe de solicitação para upload de ativos de mídia auxiliares. Para obter mais informações sobre os campos, consulte CreateUploadAttachedMedia.
-
AliyunVodUploader.php
Diretório
Descrição
__construct
Defina a AccessKey usada nos uploads, o centro do ApsaraVideo VOD e o endpoint. Para obter mais informações, consulte AccessKey e ApsaraVideo VOD region ids.
uploadLocalVideo
Interface para upload de vídeos locais.
uploadWebVideo
Interface para upload de vídeos da web.
uploadLocalImage
Faz upload de imagens locais.
uploadWebImage
Faz upload de imagens da web.
uploadLocalAttachedMedia
Faz upload de ativos de mídia auxiliares locais.
uploadWebAttachedMedia
Faz upload de ativos de mídia auxiliares da web.
uploadLocalM3u8
Faz upload de arquivos M3U8 locais.
uploadWebM3u8
Faz upload de arquivos M3U8 da web.
parseM3u8File
Analisa um manifesto M3U8 para obter uma lista de endereços de shards.
setEcsRegionId
Define a região em que o script de upload está implantado em uma instância ECS, quando aplicável. Se a região for igual à região de armazenamento do ApsaraVideo VOD, o SDK ativará automaticamente o upload pela rede interna.
setEnableSSL
Especifica se o SDK deve ativar SSL (usar HTTPS para solicitações de rede). Por padrão, o recurso fica desativado para evitar problemas quando as extensões relacionadas não estão instaladas ou estão configuradas incorretamente.
uploadProgressCallback
Função de callback para o progresso do upload. Você pode reescrever esta função. Para ver a assinatura do método e um exemplo de substituição, consulte as informações a seguir.
Assinatura do método uploadProgressCallback
public function uploadProgressCallback($mediaId, $consumedBytes, $totalBytes)$mediaId: id da mídia.$consumedBytes: número de bytes enviados até o momento.$totalBytes: tamanho total do arquivo em bytes.
Para calcular a porcentagem de progresso do upload, use
100 * ($consumedBytes / $totalBytes). Verifique se$totalBytesé maior que 0 antes da divisão para evitar divisão por zero.Para exibir um progresso de upload personalizado, estenda
AliyunVodUploadere substitua este método. Veja o exemplo a seguir:class MyAliyunVodUploader extends AliyunVodUploader { public function uploadProgressCallback($mediaId, $consumedBytes, $totalBytes) { if ($totalBytes > 0) { $rate = 100 * (floatval($consumedBytes) / floatval($totalBytes)); } else { $rate = 0; } echo round($rate, 1) . "%\n"; flush(); } } -
AliyunVodUtils.php
Diretório
Descrição
AliyunVodUtils
Classe utilitária que fornece funções estáticas, como funções para truncar strings, obter extensões de arquivo e obter nomes de arquivo.
AliyunVodLog
Classe de log para impressão simples.
logSwitché a opção que ativa ou desativa logs.AliyunVodDownloader
Baixa arquivos da web.
AliyunVodReportUpload
Informa o progresso do upload.
AliyunVodError
Defina códigos de erro.
Caminho: VodUploadSDK-PHP_1.0.3/voduploadsdk
aliyun-php-sdk-core: dependência que fornece a classe base para o SDK de upload. Ela encapsula assinatura de api do alibaba cloud, solicitações HTTP e outras funcionalidades principais.
aliyun-php-sdk-vod: SDK de api do lado do servidor para o ApsaraVideo VOD. Ele encapsula solicitações para api do ApsaraVideo VOD.
aliyun-php-sdk-oss: dependência que fornece a classe OSS para o SDK de upload. Ela encapsula operações de upload do OSS e outras funções relacionadas.
Caminho: VodUploadSDK-PHP_1.0.3/samples
uploadVideo.php: código de exemplo para upload de vídeos.
uploadImage.php: código de exemplo para upload de imagens.
uploadAttachedMedia.php: código de exemplo para upload de ativos de mídia auxiliares.
Cenário 1: fazer upload de arquivos de áudio e vídeo
Arquivos de áudio e vídeo padrão
Você pode fazer upload dos seguintes tipos de arquivos de áudio e vídeo:
O SDK envia arquivos locais por upload multipart. Um único arquivo pode ter até 48,8 TB. O upload retomável não é compatível. Para obter mais informações, consulte a função
testUploadLocalVideo.Também é possível fazer upload de arquivos da web especificando uma url de arquivo. Um único arquivo pode ter até 48,8 TB. Nesse método, o arquivo da web é baixado para um disco local antes do upload. Verifique se o disco local tem espaço suficiente. Para obter mais informações, consulte a função
testUploadWebVideo.
uploadLocalVideo permite especificar um grupo de modelos de transcodificação durante o upload de um vídeo chamando setTemplateGroupId(). Se você especificar um id de grupo de modelos de transcodificação, o service transcodificará o vídeo automaticamente assim que o upload for concluído, e não será necessário chamar a operação SubmitTranscodeJobs separadamente. Para obter o id do grupo de modelos de transcodificação, acesse a página Configuration Management > Media Processing Configuration > Transcoding Template Groups no console do VOD.
Arquivos de vídeo M3U8
Veja um exemplo no código a seguir:
Aceleração de upload
Para fazer upload de arquivos grandes (em GB ou TB) ou fazer uploads entre regiões, como enviar um vídeo da China continental para um endereço de armazenamento na região Singapore, ative o recurso de aceleração de upload. Para obter mais informações, consulte Activation method. 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 no código a seguir:
$userData = array(
"AccelerateConfig"=>array("Type"=>"oss","Domain"=>"****Bucket.oss-accelerate.aliyuncs.com"),
);
$uploadVideoRequest->setUserData(json_encode($userData));
Descrição dos parâmetros
Nome | Tipo | Descrição |
Type | string | Tipo de aceleração de upload a ser ativado. O parâmetro aceita somente |
Domain | string | Endpoint de aceleração do bucket do usuário. O endpoint usa HTTPS por padrão. Nota Use um endpoint de aceleração atribuído após a ativação, por exemplo, |
Upload em lote de vários vídeos
Cada chamada a uploadLocalVideo ou uploadWebVideo faz upload de apenas um arquivo de vídeo. O SDK não aceita upload em lote de vários vídeos em uma única chamada. Para fazer upload de vários vídeos em lote, chame a operação UploadMediaByUrl.
Quando você faz upload de vídeos em lote na página de upload no console, a página também processa os vídeos um por vez. Se precisar fazer upload de arquivos grandes ou de um lote de arquivos, recomendamos usar a ferramenta de cliente para PC.
Cenário 2: fazer upload de imagens
Cenário 3: fazer upload de ativos de mídia auxiliares
Veja um exemplo no código a seguir: