Se seus arquivos não estiverem armazenados localmente, mas forem acessíveis por URLs públicas, use o ApsaraVideo VOD para buscar e fazer upload diretamente dessas URLs. Esse método elimina a necessidade de baixar os arquivos para uma máquina local, sendo ideal para cenários de migração offline de sites.
Observações de uso
O upload em lote por busca em URLs é uma tarefa assíncrona. Após o envio, a conclusão pode levar várias horas ou até dias. Se a agilidade for essencial, utilize o SDK de upload ou o SDK do OSS.
O ApsaraVideo VOD cria um novo ativo de mídia com um novo ID de mídia sempre que você envia uma tarefa de upload para a mesma URL.
O upload em lote por busca em URLs suporta apenas formatos de vídeo e áudio. Para mais detalhes, consulte Formatos de mídia suportados.
Arquivos individuais maiores que 20 GB falharão no upload. Nesse caso, adote outro método de envio.
Upload pelo console
No console, faça upload de arquivos de áudio e vídeo usando o método From URL nas seguintes regiões: China (Shanghai), China (Beijing), China (Shenzhen), Singapore e US (Silicon Valley). As demais regiões não oferecem suporte a esse método.
Faça login no console do ApsaraVideo VOD.
No painel de navegação à esquerda, em Media Files, clique em Audio/Video.
Clique em Upload.
Clique em Add Media.
-
Adicione os arquivos para upload, configure a transcodificação e clique em Upload.
Ao escolher o método From URL, especifique a extensão caso a URL não a contenha para aumentar a taxa de sucesso. Tarefas de busca podem falhar devido a problemas de rede ou à região de serviço do recurso. Em caso de falha, ajuste as configurações de rede ou a região de serviço do recurso e tente novamente.
Na tabela, insira a URL, a extensão e o Audio/Video Name. Por padrão, Category vem definida como Uncategorized e Transcoding Template Group como No Transcoding. Clique em + Add para adicionar mais arquivos.
Upload via API
Para enviar tarefas por API, integre o SDK server-side do ApsaraVideo VOD e chame a operação UploadMediaByURL. Essa operação está disponível apenas nas seguintes regiões: China (Shanghai), China (Beijing), China (Shenzhen), Singapore e US (Silicon Valley).
Pré-requisitos
Ative o ApsaraVideo VOD. Para mais informações, consulte Ativar o 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 Gerenciar buckets de armazenamento e Configurar callbacks para obter detalhes.
Crie um usuário RAM para acessar o ApsaraVideo VOD. Para evitar riscos de segurança causados pelo vazamento do par AccessKey da sua conta Alibaba Cloud, recomendamos criar um usuário RAM e conceder a ele as permissões necessárias. Em seguida, utilize o par AccessKey desse usuário RAM para acessar o serviço. Veja mais em Criar um usuário RAM e conceder permissões.
-
Configure as variáveis de ambiente ALIBABA_CLOUD_ACCESS_KEY_ID e ALIBABA_CLOUD_ACCESS_KEY_SECRET. Para instruções, acesse Configurar variáveis de ambiente no Linux, macOS e Windows.
ImportanteO par AccessKey de uma conta Alibaba Cloud possui permissões sobre 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 seu AccessKey ID e AccessKey secret no código do projeto. Caso ocorra vazamento, todos os recursos da sua conta ficarão comprometidos.
(Opcional) Crie uma função para o usuário RAM e conceda a ela as permissões necessárias para acessar o ApsaraVideo VOD, caso deseje utilizar o Security Token Service (STS). Para mais detalhes, consulte Obter um token STS.
Código de exemplo
Para exemplos em outras linguagens, consulte a seção SDK Example em UploadMediaByURL.
V1.0 SDK
Etapa 1: Instale dependências
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.6.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-vod</artifactId>
<version>2.16.32</version>
</dependency>
Etapa 2: Código de exemplo
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;
/**
* Sample code for the batch upload by pulling from URLs feature.
*
*/
public class AudioOrVideoUploadByUrl {
/**
* Initializes the ApsaraVideo VOD client.
*/
public static DefaultAcsClient initVodClient() throws ClientException {
// The region where ApsaraVideo VOD is activated.
String regionId = "cn-shanghai";
// The AccessKey pair of an Alibaba Cloud account has permissions to access all API operations. We recommend that you use the AccessKey pair of a RAM user for API calls or routine O&M.
// We strongly recommend that you do not hard-code the AccessKey ID and AccessKey secret in your project code. Otherwise, the AccessKey pair may be leaked, which compromises the security of all resources in your account.
// This example shows how to use an AccessKey pair that is obtained from environment variables to authenticate your identity for API access. Before you run the sample 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;
}
/**
* Uploads media files by pulling from URLs in batches.
*
* @param client The client that sends requests.
* @return UploadMediaByURLResponse The response to the batch upload request.
* @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 URL must match a URL in UploadURLs to take effect.
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());
//UserData: Custom parameter settings. Set this parameter if you need a separate callback URL and pass-through data. This parameter is optional.
JSONObject userData = new JSONObject();
//Callback settings in UserData.
//Message callback settings. If specified, these settings are used. Otherwise, the global event notification settings are used.
JSONObject messageCallback = new JSONObject();
//The callback URL.
messageCallback.put("CallbackURL", "http://192.168.0.0/16");
//The callback type. 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);
}
/**
* Sample request.
*/
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());
}
}
}
V2.0 SDK
Etapa 1: Instale dependências
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>vod20170321</artifactId>
<version>3.6.4</version>
</dependency>
Etapa 2: Código de exemplo
Recomendamos adotar um método mais seguro e sem AK no código do seu projeto. Para saber como configurar credenciais, consulte Gerenciar credenciais de acesso.
package com.aliyun.sample;
import com.aliyun.tea.*;
public class UploadMediaByURL {
/**
* <b>description</b> :
* <p>Initializes the client by using credentials.</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.vod20170321.Client createClient() throws Exception {
com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
.setCredential(credential);
// For more information about endpoints, see https://api.aliyun.com/product/vod.
config.endpoint = "vod.cn-shanghai.aliyuncs.com";
return new com.aliyun.vod20170321.Client(config);
}
public static void main(String[] args_) throws Exception {
com.aliyun.vod20170321.Client client = Sample.createClient();
com.aliyun.vod20170321.models.UploadMediaByURLRequest uploadMediaByURLRequest = new com.aliyun.vod20170321.models.UploadMediaByURLRequest()
.setUploadURLs("http://cloud.video.taobao.com/play/u/3897629815/p/1/e/6/t/1/301659704826.mp4");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// Print the API response after you copy and run the code.
com.aliyun.vod20170321.models.UploadMediaByURLResponse response = client.uploadMediaByURLWithOptions(uploadMediaByURLRequest, runtime);
com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// This is for demonstration purposes only. Handle exceptions with care. Do not ignore exceptions in your project.
// Error message
System.out.println(error.getMessage());
// Diagnostic address
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// This is for demonstration purposes only. Handle exceptions with care. Do not ignore exceptions in your project.
// Error message
System.out.println(error.getMessage());
// Diagnostic address
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}