Todos os produtos
Search
Central de documentação

ApsaraVideo VOD:Migrar recursos do ApsaraVideo VOD

Última atualização: Jul 08, 2026

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

  • Pull em lote de URLs (Recomendado)

  • SDK de upload do ApsaraVideo VOD

  • API server-side do ApsaraVideo VOD

Migrar recursos do OSS para o ApsaraVideo VOD na mesma conta da Alibaba Cloud

  • Pull em lote de URLs (Recomendado)

  • SDK de upload do ApsaraVideo VOD

  • API server-side do ApsaraVideo VOD

Migrar recursos do OSS para o ApsaraVideo VOD entre contas diferentes da Alibaba Cloud

  • Pull em lote de URLs (Recomendado)

  • SDK de upload do ApsaraVideo VOD

  • API server-side do ApsaraVideo VOD

Migrar recursos do ApsaraVideo VOD para o ApsaraVideo VOD entre contas diferentes da Alibaba Cloud

  • Pull em lote de URLs (Recomendado)

  • SDK de upload do ApsaraVideo VOD

  • API server-side do ApsaraVideo VOD

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.

    Nota

    Se 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点播资源迁移-URL..png

Procedimento

  1. 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.

  2. Prepare os recursos que deseja migrar.

    Nota
    • Prepare 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.

  3. 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.

    Expandir para visualizar o código de exemplo em Java

    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.aliyuncs.DefaultAcsClient;
    import com.aliyuncs.auth.AlibabaCloudCredentials;
    import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
    import com.aliyuncs.exceptions.ClientException;
    import com.aliyuncs.profile.DefaultProfile;
    import com.aliyuncs.vod.model.v20170321.UploadMediaByURLRequest;
    import com.aliyuncs.vod.model.v20170321.UploadMediaByURLResponse;
    
    import java.net.URLEncoder;
    
    /**
     * Example of the URL-based batch upload feature.
     *
     */
    public class AudioOrVideoUploadByUrl {
    
        /** 
         * Initializes the AcsClient.
         */
        public static DefaultAcsClient initVodClient() throws ClientException {
        // The service region for ApsaraVideo for VOD.
        String regionId = "cn-shanghai"; 
        // An AccessKey of an Alibaba Cloud account has full permissions on all API operations. For better security, we recommend that you use a RAM user to make API calls.
        // Do not hard-code the AccessKey ID and AccessKey secret in your project code. Otherwise, the AccessKey pair may be leaked and compromise the security of all your resources.
        // This example shows how to obtain an AccessKey pair from environment variables to authenticate API requests. Before you run the code, configure the ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variables.
        DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
        DefaultAcsClient client = new DefaultAcsClient(profile);
        return client;
        }
    
        /**
         * URL-based batch upload.
         *
         * @param client The client that sends the request.
         * @return UploadMediaByURLResponse The response of the URL-based batch upload operation.
         * @throws Exception
         */
        public static UploadMediaByURLResponse uploadMediaByURL(DefaultAcsClient client) throws Exception {
            UploadMediaByURLRequest request = new UploadMediaByURLRequest();
            String url = "http://video_01.mp4";
            String encodeUrl = URLEncoder.encode(url, "UTF-8");
            // The URL of the source video file.
            request.setUploadURLs(encodeUrl);
    
            // The metadata of the video to upload.
            JSONObject uploadMetadata = new JSONObject();
            // The URL of the source video file to upload. This must match a URL in the UploadURLs parameter.
            uploadMetadata.put("SourceUrl", encodeUrl);
            // The video title.
            uploadMetadata.put("Title", "upload by url sample");
    
            JSONArray uploadMetadataList = new JSONArray();
            uploadMetadataList.add(uploadMetadata);
            request.setUploadMetadatas(uploadMetadataList.toJSONString());
    
            // Optional. The user data. Set this parameter if you want to specify a callback URL and enable transparent data transmission.
            JSONObject userData = new JSONObject();
    
            // Callback settings in UserData.
            // The callback settings for event notifications. If you specify these settings, they override the global event notification settings.
            JSONObject messageCallback = new JSONObject();
            // Set the callback URL.
            messageCallback.put("CallbackURL", "http://192.168.0.0/16");
            // Set the callback method. Default value: http.
            messageCallback.put("CallbackType", "http");
            userData.put("MessageCallback", messageCallback.toJSONString());
    
            JSONObject extend = new JSONObject();
            extend.put("MyId", "user-defined-id");
            userData.put("Extend", extend.toJSONString());
    
            request.setUserData(userData.toJSONString());
    
            return client.getAcsResponse(request);
        }
    
        /** 
         * Request example.
         */
        public static void main(String[] argv) {
    
            try {
                DefaultAcsClient client = initVodClient();
                UploadMediaByURLResponse response = uploadMediaByURL(client);
                System.out.print("UploadJobs = " + JSON.toJSONString(response.getUploadJobs()) + "\n");
                System.out.print("RequestId = " + response.getRequestId() + "\n");
            } catch (Exception e) {
                System.out.print("ErrorMessage = " + e.getLocalizedMessage());
            }
        }
    
    }
  4. 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点播资源迁移-内网..png

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

  1. Recupere e salve as URLs de rede interna dos recursos do OSS ou do ApsaraVideo VOD que deseja migrar.

    Nota

    Se 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

      1. Chame a operação server-side GetMezzanineInfo do ApsaraVideo VOD para recuperar a URL do OSS do arquivo. Defina o parâmetro OutputType como oss.

      2. Modifique a URL do OSS recuperada para uma URL de rede interna adicionando -internal após a região do OSS.

    • Recursos do OSS

      1. Chame a operação ListObjects para recuperar uma lista de objetos e salvar as URLs dos arquivos de origem.

      2. Modifique as URLs do OSS recuperadas para URLs de rede interna adicionando -internal apó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.

  2. Crie um serviço de upload.

    Nota

    Implante 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 regionId e 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.

  3. 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点播资源迁移-公网..png

Procedimento

  1. Recupere e salve as URLs dos arquivos de origem dos recursos que deseja migrar.

    Nota
    • Se 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

      1. Chame a operação SearchMedia do ApsaraVideo VOD para filtrar os vídeos que deseja migrar e recuperar seus VideoIds.

      2. Chame a operação GetMezzanineInfo para recuperar e salvar as URLs dos arquivos de origem de todos os vídeos que deseja migrar.

        Nota
        • Este 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.

  2. 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.

    Nota

    Para 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.

  3. 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.

  4. (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

  1. 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.

  2. Chame uma API para registrar os recursos do OSS no ApsaraVideo VOD.

    1. 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.

    2. 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

  1. 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.

  2. 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.