O ApsaraVideo VOD permite migrar recursos de vídeo de plataformas de terceiros e entre diferentes contas da Alibaba Cloud. Este tópico descreve os métodos de migração disponíveis.
Cenários e métodos de migração
O ApsaraVideo VOD oferece diversos métodos para migração de recursos. É possível migrar recursos de fontes externas, como sites pessoais ou outros serviços em nuvem, além de recursos do OSS e do ApsaraVideo VOD na mesma conta da Alibaba Cloud ou entre contas diferentes.
Após uma migração bem-sucedida, o ApsaraVideo VOD gera um novo ID de vídeo, URL de reprodução, URL de miniatura e outras informações para cada recurso. Em seguida, associe os recursos originais aos novos.
Cenário de migração | Método de migração | Ferramenta de migração |
Migrar recursos de terceiros para o ApsaraVideo VOD |
| |
Migrar recursos do OSS para o ApsaraVideo VOD na mesma conta da Alibaba Cloud |
| |
Migrar recursos do OSS para o ApsaraVideo VOD entre contas diferentes da Alibaba Cloud |
| |
Migrar recursos do ApsaraVideo VOD para o ApsaraVideo VOD entre contas diferentes da Alibaba Cloud |
|
Preparações
-
Crie uma conta da Alibaba Cloud e conclua a verificação de identidade. Para criar uma conta, visite o site oficial da Alibaba Cloud. Para mais informações, consulte Criar uma conta da Alibaba Cloud.
-
Obtenha um par de AccessKey para concluir a verificação de identidade e chamar operações da API do ApsaraVideo VOD. Para mais informações sobre como obter um par de AccessKey, consulte Criar um par de AccessKey.
NotaSe utilizar um usuário do Resource Access Management (RAM) para a migração, crie primeiro o usuário RAM e depois obtenha seu AccessKey. Para mais informações, consulte Acessar o ApsaraVideo VOD como usuário RAM.
Upload em lote por pull de URLs (Recomendado)
Cenários
Use o método de pull em lote de URLs quando os arquivos a serem migrados não estiverem armazenados em um servidor ou dispositivo local e precisarem ser acessados por meio de URLs públicas. Esse método permite enviar muitos arquivos rapidamente. O processo utiliza a rede interna, o que ajuda a reduzir custos de tráfego.
Limites
O upload em lote por pull de URLs está disponível nas regiões China (Shanghai), China (Beijing), China (Shenzhen), Singapore e US (Silicon Valley). Caso seu serviço esteja em outra região, utilize um método de migração diferente. Para mais informações sobre IDs de região, consulte Regiões e endpoints.
Observações
O upload em lote por pull de URLs é uma tarefa assíncrona. Ela não ocorre em tempo real e não possui tempo de conclusão garantido. Uma tarefa pode levar várias horas ou até dias para ser concluída. Se precisar de uploads em tempo real, use o SDK de upload.
Sempre que você envia uma tarefa de upload para a mesma URL de arquivo de mídia, o ApsaraVideo VOD cria um novo ativo de mídia com um novo ID de mídia.
Fluxo de migração
Procedimento
-
Integre o SDK server-side do ApsaraVideo VOD.
Este tópico usa o SDK Java como exemplo. Para informações sobre outras linguagens, consulte SDKs server-side.
Para mais informações sobre como baixar o SDK Java, consulte SDKs server-side. Para instalar o SDK Java, consulte Instalação.
-
Prepare os recursos que deseja migrar.
NotaPrepare as URLs de download de todos os arquivos que deseja migrar. Se uma URL exigir autenticação, garanta que ela seja válida por um período suficiente para evitar que expire durante o download.
A URL de download deve ser um caminho completo que inclua a extensão do nome do arquivo. Por exemplo,
https://****.mp4.
-
Use o SDK server-side do ApsaraVideo VOD para chamar a operação UploadMediaByURL e realizar o upload em lote.
O código a seguir fornece um exemplo em Java. Para exemplos em outras linguagens, consulte UploadMediaByURL.
Também é possível depurar essa operação online no OpenAPI Explorer.
-
Recupere o resultado do upload.
Método 1: Notificações de eventos
O ApsaraVideo VOD suporta notificações de eventos enviadas por meio de webhooks HTTP ou webhooks do Message Service (MNS). Configure as notificações de eventos antes de iniciar a migração. Após o processamento de um arquivo de mídia, como upload ou transcodificação, o ApsaraVideo VOD envia uma notificação com base no método de callback configurado. Para mais informações, consulte Notificações de eventos.
O tipo de evento para upload em lote por pull de URLs é UploadByURLComplete. Recupere o status da tarefa de upload a partir do resultado do callback.
-
Exemplo de callback para upload bem-sucedido
{ "Status": "success", "EventTime": "2017-03-20T07:49:17Z", "EventType": "UploadByURLComplete", "VideoId": "43q9fjdun3f****", "JobId": "4c815bjs83j1****", "SourceURL ": "http://example.aliyundoc.com/27ffc438-164d55217ef-0005-6884-51a-1****.mp4", "Size":"123456" } -
Exemplo de callback para upload com falha
{ "Status": "fail", "EventTime": "2017-03-20T07:49:17Z", "EventType": "UploadByURLComplete", "ErrorCode ": "URLInvalidError ", "ErrorMessage ": "download video failed by the url, please check it", "JobId": "4c815bjsued****" , "SourceURL ": "http://example.aliyundoc.com/27ffc438-164d55217ef-0005-6884-51a-1****.mp4", }
Método 2: Chamar uma API para consultar o resultado
Chame a operação GetURLUploadInfos para consultar o status de execução de uma tarefa específica de pull e upload por URL.
-
Baixe arquivos e crie um serviço de upload
Se o upload em lote por pull de URLs não for suportado na região do seu serviço, ou se você precisar de uploads em tempo real, baixe os arquivos e use o SDK de upload do ApsaraVideo VOD para enviá-los. Ao implantar o serviço de upload em uma instância do Elastic Compute Service (ECS), envie recursos pela rede interna ou pela rede pública. A opção escolhida depende da região da sua instância ECS.
Download e upload pela rede interna
Cenários
Quando o serviço de upload estiver implantado em uma instância ECS na mesma região dos arquivos de vídeo de origem, migre recursos do OSS ou do ApsaraVideo VOD para o ApsaraVideo VOD pela rede interna. Este método aplica-se a migrações dentro da mesma conta ou entre contas diferentes.
Fluxo de migração
Pré-requisitos
Implante o serviço de upload em uma instância ECS localizada na mesma região dos arquivos de vídeo de origem.
Procedimento
-
Recupere e salve as URLs de rede interna dos recursos do OSS ou do ApsaraVideo VOD que deseja migrar.
NotaSe a URL de um arquivo de recurso exigir autenticação, garanta que ela seja válida por um período suficiente para evitar que expire durante o download.
-
Recursos de vídeo sob demanda
Chame a operação server-side GetMezzanineInfo do ApsaraVideo VOD para recuperar a URL do OSS do arquivo. Defina o parâmetro
OutputTypecomooss.Modifique a URL do OSS recuperada para uma URL de rede interna adicionando
-internalapós a região do OSS.
-
Recursos do OSS
Chame a operação ListObjects para recuperar uma lista de objetos e salvar as URLs dos arquivos de origem.
Modifique as URLs do OSS recuperadas para URLs de rede interna adicionando
-internalapós a região do OSS.
O exemplo a seguir mostra um endereço antes e depois da modificação:
URL de origem do OSS obtida
URL de rede interna modificada
outin-67870fd5b29**98a3900163e1c35d5.oss-cn-shanghai.aliyuncs.com/customerTrans/2a13b91506f9158f7317f4a9d4c9/30f24681-1718d5c6237-4bd.mp4
outin-67870fd5b29**98a3900163e1c35d5.oss-cn-shanghai-internal.aliyuncs.com/customerTrans/2a13b91506f9158f7317f4a9d4c9/30f24681-1718d5c6237-4bd.mp4
Para mais informações sobre como acessar recursos do OSS a partir de uma instância ECS pela rede interna, consulte Acessar recursos do OSS a partir de uma instância ECS pela rede interna.
-
-
Crie um serviço de upload.
NotaImplante o serviço de upload em uma instância ECS que esteja na mesma região do bucket do OSS do ApsaraVideo VOD. A região padrão na China continental é China (Shanghai). Após a implantação, ao usar o SDK de upload, especifique o parâmetro
regionIde defina-o para esta região. O upload usará automaticamente a rede interna.Para códigos de exemplo, consulte Criar um serviço de upload e visualize código de exemplo. Recomendamos o uso do SDK de upload do ApsaraVideo VOD para a migração.
-
Execute o código de upload da etapa 2 para enviar os vídeos ao ApsaraVideo VOD.
Use as URLs de rede interna modificadas como URLs de arquivo para a operação de upload.
Download e upload pela rede pública
Cenários
Caso não tenha implantado o serviço de upload em uma instância ECS, ou se a instância ECS estiver em uma região diferente dos arquivos de vídeo de origem, baixe e envie os recursos pela rede pública.
Fluxo de migração
Procedimento
-
Recupere e salve as URLs dos arquivos de origem dos recursos que deseja migrar.
NotaSe a URL de um arquivo de recurso exigir autenticação, garanta que ela seja válida por um período suficiente para evitar que expire durante o download.
A URL do arquivo de recurso deve ser um caminho completo que inclua a extensão do nome do arquivo. Por exemplo,
https://****.mp4.
-
Recursos de Vídeo Sob Demanda
Chame a operação SearchMedia do ApsaraVideo VOD para filtrar os vídeos que deseja migrar e recuperar seus VideoIds.
-
Chame a operação GetMezzanineInfo para recuperar e salvar as URLs dos arquivos de origem de todos os vídeos que deseja migrar.
NotaEste procedimento fornece um exemplo de chamada de API para recuperar URLs de arquivos de origem. Também é possível recuperar essas URLs no console do ApsaraVideo VOD. Para mais informações, consulte Exportar ativos de mídia.
Para usar um fluxo transcodificado como arquivo de origem para migração, utilize o serviço ApsaraVideo VOD. Para mais informações, consulte Gerenciamento de ativos de mídia.
-
Recursos do OSS
Chame a operação ListObjects para recuperar uma lista de objetos e salvar as URLs dos arquivos de origem.
-
Recursos de terceiros (como vídeos armazenados em sites pessoais ou na nuvem)
Prepare as URLs de download de todos os arquivos que deseja migrar. Salve as URLs de download de acordo com suas preferências de processamento de dados.
-
Crie um serviço de upload.
Para códigos de exemplo, consulte Criar um serviço de upload e visualize código de exemplo. Recomendamos o uso do SDK de upload do ApsaraVideo VOD para a migração.
NotaPara gerenciar as relações entre recursos antes e depois da migração, seu programa de upload deve registrar a associação entre a URL do arquivo de origem e o VideoId após a conclusão do upload. Por exemplo, registre essas informações usando impressão de log durante o upload ou gravando a URL do arquivo de origem nas informações de mídia do vídeo. O método específico de registro depende do seu cenário. Se usar o método de pull em lote de URLs, a resposta síncrona da operação conterá a URL correspondente do arquivo de origem, que poderá ser usada conforme necessário.
-
Execute o código de upload da etapa 2 para enviar os vídeos ao ApsaraVideo VOD.
Use as URLs dos arquivos de origem como URLs de arquivo para a operação de upload. Nenhuma modificação é necessária.
-
(Opcional) Organize as relações de recursos do ApsaraVideo VOD.
Após a conclusão da migração de dados, organize os recursos com base no mapeamento registrado entre as URLs dos arquivos de origem e os novos VideoIds no ApsaraVideo VOD.
Adicionar bucket do OSS ao ApsaraVideo VOD e registrar recursos
Cenários
Este método é adequado quando seus recursos estão armazenados em um bucket do OSS pertencente à mesma conta. Não é necessário reenviar os arquivos. Em vez disso, adicione seu bucket do OSS ao ApsaraVideo VOD e registre os recursos para concluir a migração.
Limites
Apenas buckets do OSS da classe de armazenamento Standard podem ser adicionados ao ApsaraVideo VOD.
É possível adicionar no máximo 10 buckets do OSS próprios em cada região de serviço.
Procedimento
-
Adicione ao ApsaraVideo VOD o bucket do OSS que contém os recursos que deseja migrar.
Para etapas detalhadas e descrições de parâmetros, consulte Gerencie buckets de armazenamento.
-
Chame uma API para registrar os recursos do OSS no ApsaraVideo VOD.
Use a API ou SDK do OSS para listar todos os arquivos no bucket e recuperar uma lista de objetos. Para mais informações, consulte ListObjects.
-
Chame a operação RegisterMedia para registrar os arquivos de mídia e gerar IDs de áudio ou vídeo. O parâmetro
RegisterMetadatas.FileURL deve ser o caminho completo do objeto recuperado pela listagem dos arquivos do OSS. Isso significa que você deve incluir o nome de domínio do OSS. Por exemplo:https://oss-cn-hangzhou.aliyuncs.com/video/example.mp4
Crie um serviço de upload e visualize código de exemplo
Ao migrar recursos de terceiros ou recursos entre contas da Alibaba Cloud, baixe os vídeos originais e envie-os ao ApsaraVideo VOD usando uma ferramenta de upload. O ApsaraVideo VOD fornece o SDK de upload e APIs server-side que servem como ferramentas de upload. Crie seu serviço de upload usando qualquer uma dessas ferramentas. O SDK de upload realiza uploads síncronos e é mais adequado para cenários em tempo real. Portanto, recomendamos o uso do SDK de upload. O uso de APIs server-side é mais complexo e não é recomendado.
Etapas para criar um serviço de upload
-
Integre o SDK de upload ou o SDK server-side.
Com base na sua linguagem de programação, consulte SDKs de upload para integrar o SDK de upload, ou consulte SDKs server-side para integrar o SDK server-side.
Escreva o código para o serviço de upload. Para orientação, consulte o código de exemplo abaixo.
Código de exemplo do SDK de upload (Recomendado)
O código a seguir fornece um exemplo que usa o SDK de upload Java. Para informações sobre SDKs de upload em outras linguagens e mais exemplos de operações, consulte SDKs de upload.
import com.aliyun.vod.upload.impl.UploadVideoImpl;
import com.aliyun.vod.upload.req.UploadStreamRequest;
import com.aliyun.vod.upload.resp.UploadStreamResponse;
import java.io.*;
import java.net.URL;
/**
* Use the upload SDK to upload a video file
*/
public class UploadStreamDemo {
/**
* Streaming upload operation
*
* @param accessKeyId
* @param accessKeySecret
* @param title
* @param fileName
* @param inputStream
*/
private static void testUploadStream(String accessKeyId, String accessKeySecret, String title, String fileName, InputStream inputStream) {
UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName, inputStream);
/* Custom message callback settings. For parameter descriptions, see Basic data types. */
//request.setUserData(""{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://example.aliyundoc.com\"}}"");
/* Video category ID (optional) */
//request.setCateId(0);
/* Video tags, separated by commas (optional) */
//request.setTags("Tag1,Tag2");
/* Video description (optional) */
//request.setDescription("Video description");
/* Thumbnail URL (optional), such as http://****.example.com/image_01.jpg*/
//request.setCoverURL("<Your CoverURL>");
/* Template group ID (optional) */
//request.setTemplateGroupId("8c4792cbc8694e****fd5330e56a33d");
/* Workflow ID (optional) */
//request.setWorkflowId("d4430d07361f****1339577859b0177b");
/* Storage location (optional) */
//request.setStorageLocation("outin-20170323****266-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
/* ApsaraVideo VOD endpoint */
request.setApiRegionId("cn-shanghai");
/* ECS deployment region */
// request.setEcsRegionId("cn-shanghai");
UploadVideoImpl uploader = new UploadVideoImpl();
UploadStreamResponse response = uploader.uploadStream(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // The ID of the request sent to ApsaraVideo VOD
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else { // If the specified webhook address is invalid, the video upload is not affected. A VideoId and an error code are returned. In other cases of upload failure, the VideoId is empty. You need to analyze the specific cause of the error based on the returned error code.
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
public static void main(String[] args) {
/**
* You can add a URL data source, pass in the media asset information, and upload the video resource.
*/
InputStream inputStream = null;
// The URL of your video. For example, http://example.aliyundoc.com/video/****.mp4
String url = "<Your File URL>";
try {
inputStream = new URL(url).openStream();
} catch (IOException e) {
e.printStackTrace();
}
// An Alibaba Cloud account AccessKey has full permissions on all APIs. We recommend using a RAM user for API calls and routine O&M.
// For security reasons, do not hard-code the AccessKey ID and AccessKey secret in your project. Otherwise, the AccessKey pair may be leaked and all resources in your account are exposed to risks.
// This example demonstrates how to obtain the AccessKey pair from environment variables to verify the identity. Before you run the sample code, configure the ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variables.
String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// The AccessKey ID and AccessKey secret parameters are the prepared AccessKey information. <Your Video Title> is the video title. <Your Video with File Extension> is the video file name with its extension, such as video-1.mp4.
testUploadStream(accessKeyId, accessKeySecret, "<Your Video Title>", "<Your Video with File Extension>", inputStream);
}
}
Código de exemplo da API server-side (Não recomendado)
Para integrar o SDK server-side e realizar uploads, implemente toda a lógica de upload. Isso inclui recuperar a URL de upload e a credencial do ApsaraVideo VOD, decodificar a credencial e a URL em Base64 e chamar operações do OSS para concluir o upload. Este método é complexo, propenso a erros e não é recomendado. Para mais informações sobre a lógica completa de upload, consulte Enviar arquivos de mídia usando APIs do ApsaraVideo VOD.