Este tópico apresenta exemplos detalhados de uso do kit de desenvolvimento de software (SDK) de envio server-side para PHP no upload de diversos arquivos de mídia para o armazenamento do ApsaraVideo VOD.
Visão geral
Recomenda-se a arquitetura B/S (Browser/Server) para desenvolvimento em PHP.
O SDK de upload para PHP segue o fluxo geral do SDK server-side do ApsaraVideo VOD. Para mais detalhes, consulte Upload process. O processo básico de uso do SDK de upload para PHP é:
Cumpra os pré-requisitos. Para mais informações, consulte Prerequisites.
Integre o SDK de upload para PHP. Consulte Integrate the PHP upload SDK para obter instruções.
-
Implemente a lógica de upload, incluindo a configuração das informações de envio.
Para enviar arquivos de áudio e vídeo, consulte Scenario 1: Upload audio and video files.
Para enviar imagens, consulte Scenario 2: Upload images.
Para enviar 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 enviar arquivos de mídia para outras regiões, especifique a região desejada ao inicializar oAliyunVodUploader. Para verificar os endpoints compatíveis com o ApsaraVideo VOD, consulte Endpoints.O exemplo abaixo demonstra como definir 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
Ative o ApsaraVideo VOD. 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. Consulte Manage storage buckets e Configure callbacks para mais detalhes.
Crie um usuário RAM para acessar o ApsaraVideo VOD. Para evitar riscos de segurança decorrentes do vazamento do par AccessKey da sua conta Alibaba Cloud, recomendamos criar um usuário RAM e conceder-lhe as permissões necessárias para acessar o ApsaraVideo VOD. Em seguida, utilize o par AccessKey desse usuário RAM para acessar o service. 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 detalhes, consulte Configure environment variables in Linux, macOS, and Windows.
ImportanteO par AccessKey de uma conta Alibaba Cloud possui permissões em todas as operações de API. Utilize o par 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) Crie uma função para o usuário RAM e conceda as permissões necessárias para acessar o ApsaraVideo VOD se você pretender acessar o service por meio do Security Token Service (STS). Para mais informações, consulte Obtain an STS token.
Integração do SDK de upload para PHP
-
Baixe o SDK e a demonstração.
Versão do SDK: 1.0.3
Data de atualização: 19-04-2022
Endereço para download: V1.0.3 SDK and demo source code
Descompacte o arquivo 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 envio de vídeos. Para detalhes sobre os campos, consulte CreateUploadVideo.
-
UploadImageRequest.php
Diretório
Descrição
UploadImageRequest
Classe de solicitação para envio de imagens. Para detalhes sobre os campos, consulte CreateUploadImage.
-
UploadAttachedMediaRequest.php
Diretório
Descrição
UploadAttachedMediaRequest
Classe de solicitação para envio de ativos de mídia auxiliares. Para detalhes sobre os campos, consulte CreateUploadAttachedMedia.
-
AliyunVodUploader.php
Diretório
Descrição
__construct
Define o AccessKey para uploads, o centro do ApsaraVideo VOD e o endpoint. Para mais informações, consulte AccessKey e ApsaraVideo VOD region IDs.
uploadLocalVideo
Interface para envio de vídeos locais.
uploadWebVideo
Interface para envio de vídeos via web.
uploadLocalImage
Envia imagens locais.
uploadWebImage
Envia imagens via web.
uploadLocalAttachedMedia
Envia ativos de mídia auxiliares locais.
uploadWebAttachedMedia
Envia ativos de mídia auxiliares via web.
uploadLocalM3u8
Envia arquivos M3U8 locais.
uploadWebM3u8
Envia arquivos M3U8 via web.
parseM3u8File
Analisa um manifesto M3U8 para obter a lista de endereços dos shards.
setEcsRegionId
Define a região onde o script de upload está implantado em uma instância ECS, se aplicável. Se a região for a mesma do armazenamento do ApsaraVideo VOD, o upload via rede interna será ativado automaticamente.
setEnableSSL
Especifica se o SSL deve ser ativado (uso de HTTPS para requisições de rede). Por padrão, permanece desativado para evitar problemas quando extensões relacionadas não estão instaladas ou configuradas incorretamente.
uploadProgressCallback
Função de callback para o progresso do upload. Você pode reescrever esta função. Para a assinatura do método e um exemplo de substituição, veja abaixo.
Assinatura do método uploadProgressCallback
public function uploadProgressCallback($mediaId, $consumedBytes, $totalBytes)$mediaId: O ID da mídia.$consumedBytes: O número de bytes enviados até o momento.$totalBytes: O tamanho total do arquivo em bytes.
Para calcular a porcentagem de progresso do upload, utilize
100 * ($consumedBytes / $totalBytes). Verifique se$totalBytesé maior que 0 antes de dividir para evitar divisão por zero.Para exibir um progresso de upload personalizado, estenda a classe
AliyunVodUploadere sobrescreva este método. O exemplo a seguir demonstra como fazer isso: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 truncamento de strings, obtenção de extensões de arquivo e nomes de arquivo.
AliyunVodLog
Classe de log para impressão simples.
logSwitché o interruptor de log.AliyunVodDownloader
Baixa arquivos da web.
AliyunVodReportUpload
Reporta o progresso do upload.
AliyunVodError
Define 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. Encapsula a assinatura de API da Alibaba Cloud, requisições HTTP e outras funcionalidades essenciais.
aliyun-php-sdk-vod: SDK de API server-side para o ApsaraVideo VOD. Encapsula as requisições para as APIs do ApsaraVideo VOD.
aliyun-php-sdk-oss: Dependência que fornece a classe OSS para o SDK de upload. 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 envio de vídeos.
uploadImage.php: Código de exemplo para envio de imagens.
uploadAttachedMedia.php: Código de exemplo para envio de ativos de mídia auxiliares.
Cenário 1: Envio de arquivos de áudio e vídeo
Arquivos padrão de áudio e vídeo
É possível enviar os seguintes tipos de arquivos de áudio e vídeo:
Envie arquivos locais utilizando upload multipartido. Um único arquivo pode ter até 48,8 TB. Não há suporte para upload retomável. Para mais informações, consulte a função
testUploadLocalVideo.Envie arquivos da web especificando uma URL de arquivo. Um único arquivo pode ter até 48,8 TB. Este método exige o download do arquivo da web para um disco local antes do envio. Certifique-se de que há espaço suficiente em seu disco local. Para mais informações, consulte a função
testUploadWebVideo.
O método uploadLocalVideo permite especificar um grupo de modelos de transcodificação durante o envio do vídeo chamando setTemplateGroupId(). Ao especificar o ID do grupo de modelos de transcodificação, o vídeo é transcoded automaticamente assim que o upload é concluído, eliminando a necessidade de chamar separadamente a operação SubmitTranscodeJobs. 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 VOD.
Arquivos de vídeo M3U8
O código a seguir fornece um exemplo:
Aceleração de upload
Para enviar arquivos grandes (na casa de GBs ou TBs) 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 Activation method. Após ativar esse recurso, adicione o par AccelerateConfig chave-valor ao objeto UserData na configuração de upload. Caso o objeto UserData não exista, crie-o. O código a seguir apresenta um exemplo:
$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 | O tipo de aceleração de upload a ser ativado. Apenas |
Domain | string | O endpoint de aceleração para o bucket do usuário. HTTPS é utilizado por padrão. Nota Utilize um endpoint de aceleração 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
O código a seguir fornece um exemplo: