Si vos fichiers ne sont pas stockés localement mais sont accessibles via des URL publiques, utilisez ApsaraVideo VOD pour extraire et charger les fichiers directement depuis ces URL. Cette méthode évite de télécharger les fichiers sur une machine locale, ce qui la rend idéale pour les scénarios de migration de sites hors ligne.
Notes d'utilisation
Le chargement groupé par extraction depuis des URL est une tâche asynchrone. L'exécution peut prendre plusieurs heures, voire plusieurs jours. Si le délai d'exécution est critique, utilisez le SDK de chargement ou le SDK OSS.
ApsaraVideo VOD crée une nouvelle ressource multimédia avec un nouvel ID multimédia à chaque soumission d'une tâche de chargement pour la même URL.
Le chargement groupé par extraction depuis des URL prend uniquement en charge les formats vidéo et audio. Pour plus d'informations, consultez la section Formats multimédias pris en charge.
Si un fichier unique dépasse 20 Go, le chargement échoue. Utilisez une autre méthode de chargement.
Chargement via la console
Dans la console, vous pouvez charger des fichiers audio et vidéo en utilisant la méthode dans les régions suivantes : China (Shanghai), China (Beijing), China (Shenzhen), Singapore et US (Silicon Valley). Cette méthode de chargement n'est pas prise en charge dans les autres régions.
Connectez-vous à la console ApsaraVideo VOD.
Dans le volet de navigation de gauche, sous Media Files, cliquez sur Audio/Video .
Cliquez sur Upload .
Cliquez sur .
-
Ajoutez les fichiers à charger, configurez le transcodage et cliquez sur Upload.
Lorsque vous choisissez la méthode From URL, si une URL ne contient pas d'extension, spécifiez-la pour améliorer le taux de réussite. Les tâches d'extraction peuvent échouer en raison de problèmes réseau ou de la région du service de la ressource. En cas d'échec, ajustez vos paramètres réseau ou la région du service de la ressource, puis réessayez.
Dans le tableau, saisissez l'URL, l'extension et le nom Audio/Video Name. Par défaut, Category est défini sur Uncategorized et Transcoding Template Group sur No Transcoding. Cliquez sur + Add pour ajouter d'autres fichiers.
Chargement via une API
Pour soumettre des tâches via l'API, intégrez le SDK côté serveur d'ApsaraVideo VOD et appelez l'opération UploadMediaByURL. Cette opération est prise en charge uniquement dans les régions suivantes : China (Shanghai), China (Beijing), China (Shenzhen), Singapore et US (Silicon Valley).
Prérequis
ApsaraVideo VOD est activé. Pour plus d'informations, consultez la rubrique Activation d'ApsaraVideo VOD.
Les paramètres système requis pour le chargement, y compris le chemin de stockage dans la région spécifiée et les paramètres de rappel, sont configurés. Pour plus d'informations, consultez les rubriques Gestion des buckets de stockage et Configuration des rappels.
Créez un utilisateur RAM pour accéder à ApsaraVideo VOD. Afin de prévenir les risques de sécurité liés à la divulgation de la paire AccessKey de votre compte Alibaba Cloud, nous vous recommandons de créer un utilisateur RAM et de lui accorder les autorisations nécessaires pour accéder à ApsaraVideo VOD. Utilisez ensuite la paire AccessKey de l'utilisateur RAM pour accéder à ApsaraVideo VOD. Pour plus d'informations, consultez la rubrique Création d'un utilisateur RAM et attribution d'autorisations.
-
Configurez les variables d'environnement ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET. Pour plus d'informations, consultez la rubrique Configuration des variables d'environnement sous Linux, macOS et Windows.
ImportantUne paire AccessKey de compte Alibaba Cloud dispose d'autorisations sur toutes les opérations d'API. Utilisez la paire AccessKey d'un utilisateur RAM pour appeler des opérations d'API ou effectuer des opérations de maintenance courantes.
Ne codez pas en dur votre AccessKey ID et votre AccessKey secret dans le code de votre projet. En cas de divulgation, toutes les ressources de votre compte seraient compromises.
Facultatif. Créez un rôle pour l'utilisateur RAM et accordez-lui les autorisations d'accès à ApsaraVideo VOD si vous souhaitez accéder au service via Security Token Service (STS). Pour plus d'informations, consultez la rubrique Obtention d'un jeton STS.
Exemple de code
Pour des exemples de code dans d'autres langages, consultez la section SDK Example de la page UploadMediaByURL.
V1.0 SDK
Étape 1 : Installer les dépendances
<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>
Étape 2 : Exemple de code
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
Étape 1 : Installer les dépendances
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>vod20170321</artifactId>
<version>3.6.4</version>
</dependency>
Étape 2 : Exemple de code
Nous vous recommandons d'utiliser une méthode plus sécurisée, sans AK, dans le code de votre projet. Pour savoir comment configurer les identifiants, consultez la rubrique Gestion des identifiants d'accès.
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);
}
}
}