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 de URLs é uma tarefa assíncrona. Após o envio, a conclusão pode levar várias horas ou até dias. Se a agilidade for crítica, 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.
Esse método suporta apenas formatos de vídeo e áudio. Para mais informações, consulte Supported media formats.
Arquivos individuais maiores que 20 GB causam falha no upload. Nesses casos, utilize outro método.
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 suportam esse método.
Faça login no console do ApsaraVideo VOD.
No painel de navegação à esquerda, escolha Media Files > 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 service do recurso. Em caso de falha, ajuste as configurações de rede ou a região de service do recurso e tente novamente.
Na tabela, insira a URL, a extension e o Audio/Video Name. Por padrão, Category está definido 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 é suportada 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 Activate ApsaraVideo VOD.
Configure os ajustes de sistema necessários para o upload, incluindo o caminho de armazenamento na região especificada e as definições de callback. Para mais detalhes, consulte Manage storage buckets e Configure callbacks.
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 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 informações, consulte Configure environment variables on 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 O&M rotineiro.
Não codifique rigidamente seu AccessKey ID e AccessKey secret no código do projeto. Se vazarem, 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 acessar o service por meio do Security Token Service (STS). Para mais informações, consulte Obtain an STS token.
Código de exemplo
Para exemplos de código em outras linguagens, consulte a seção SDK Example em UploadMediaByURL.
V1.0 SDK
Etapa 1: Instalar 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: Instalar dependências
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>vod20170321</artifactId>
<version>3.6.4</version>
</dependency>
Etapa 2: Código de exemplo
Recomendamos utilizar um método mais seguro e sem AK no código do seu projeto. Para obter informações sobre como configurar credenciais, consulte Manage access credentials.
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.alibabacloud.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);
}
}
}