Dosyalarınız yerel olarak depolanmıyor ancak genel URL'ler üzerinden erişilebiliyorsa, ApsaraVideo VOD kullanarak dosyaları doğrudan genel URL'lerden çekip yükleyebilirsiniz. Bu yöntem, dosyaları yerel bir makineye indirme gereksinimini ortadan kaldırır ve çevrimdışı site geçişi senaryoları için idealdir.
Kullanım notları
URL'lerden çekerek yapılan toplu yükleme eşzamansız bir görevdir. Bir görev gönderdikten sonra tamamlanması birkaç saat hatta gün sürebilir. Zamanlama kritikse Yükleme SDK'sını veya OSS SDK'sını kullanın.
Aynı URL için her yükleme görevi gönderdiğinizde ApsaraVideo VOD, yeni bir medya kimliğine sahip yeni bir medya kaynağı oluşturur.
URL'lerden çekerek yapılan toplu yükleme yalnızca video ve ses formatlarını destekler. Daha fazla bilgi için bkz. Desteklenen medya formatları.
Tek bir dosya 20 GB'tan büyükse yükleme başarısız olur. Farklı bir yükleme yöntemi kullanın.
Konsolu kullanarak yükleme
Konsolda, aşağıdaki bölgelerde From URL yöntemini kullanarak ses ve video dosyalarını yükleyebilirsiniz: China (Shanghai), China (Beijing), China (Shenzhen), Singapore ve US (Silicon Valley). Bu yükleme yöntemi diğer bölgelerde desteklenmez.
ApsaraVideo VOD konsoluna giriş yapın.
Sol gezinme bölmesinde Media Files > Audio/Video seçeneğini belirleyin.
Upload öğesini tıklayın.
Add Media seçeneğini tıklayın.
-
Yüklenecek dosyaları ekleyin, kod dönüştürmeyi yapılandırın ve Upload öğesini tıklayın.
From URL yöntemini seçtiğinizde, bir URL uzantı içermiyorsa başarı oranını artırmak için uzantıyı belirtin. Çekme görevleri ağ sorunları veya kaynağın hizmet bölgesi nedeniyle başarısız olabilir. Bir görev başarısız olursa ağ ayarlarınızı veya kaynağın hizmet bölgesini düzenleyin ve tekrar deneyin.
Tabloya URL, extension ve Audio/Video Name bilgilerini girin. Varsayılan olarak Category Uncategorized olarak ve Transcoding Template Group No Transcoding olarak ayarlanır. Daha fazla dosya eklemek için + Add seçeneğini tıklayabilirsiniz.
API kullanarak yükleme
Görevleri API ile göndermek için ApsaraVideo VOD sunucu tarafı SDK'sını entegre edin ve UploadMediaByURL işlemini çağırın. Bu işlem yalnızca aşağıdaki bölgelerde desteklenir: China (Shanghai), China (Beijing), China (Shenzhen), Singapore ve US (Silicon Valley).
Önkoşullar
ApsaraVideo VOD etkinleştirilmiş olmalıdır. Daha fazla bilgi için bkz. ApsaraVideo VOD'u Etkinleştirme.
Belirtilen bölgedeki depolama yolu ve geri arama ayarları dahil olmak üzere yükleme için gereken sistem ayarları yapılandırılmış olmalıdır. Daha fazla bilgi için bkz. Depolama paketlerini yönetme ve Geri aramaları yapılandırma.
Bir RAM kullanıcısı oluşturulmuş ve ApsaraVideo VOD'a erişmek için bu kullanıcı kullanılıyor olmalıdır. Alibaba Cloud hesabınızın AccessKey çiftinin sızması nedeniyle oluşabilecek güvenlik risklerini önlemek için bir RAM kullanıcısı oluşturmanızı ve bu kullanıcıya ApsaraVideo VOD'a erişmek için gereken izinleri vermenizi öneririz. Ardından, ApsaraVideo VOD'a erişmek için RAM kullanıcısının AccessKey pair bilgisini kullanabilirsiniz. Daha fazla bilgi için bkz. RAM kullanıcısı oluşturma ve izin verme.
-
ALIBABA_CLOUD_ACCESS_KEY_ID ve ALIBABA_CLOUD_ACCESS_KEY_SECRET ortam değişkenlerini yapılandırın. Daha fazla bilgi için bkz. Linux, macOS ve Windows'ta ortam değişkenlerini yapılandırma.
ÖnemliBir Alibaba Cloud hesabının AccessKey çifti tüm API işlemleri üzerinde izne sahiptir. API işlemlerini çağırmak veya rutin bakım ve işletim işlemleri için bir RAM kullanıcısının AccessKey çiftini kullanın.
AccessKey ID'nizi ve AccessKey secret'ınızı proje koduna sabit kod olarak eklemeyin. Sızması durumunda hesabınızdaki tüm kaynaklar tehlikeye girer.
İsteğe bağlı. Security Token Service (STS) kullanarak ApsaraVideo VOD'a erişmek istiyorsanız RAM kullanıcısı için bir rol oluşturulmuş ve bu role ApsaraVideo VOD'a erişmek için gereken izinler verilmiş olmalıdır. Daha fazla bilgi için bkz. STS belirteci alma.
Örnek kod
Diğer dillerdeki örnek kodlar için UploadMediaByURL sayfasındaki SDK Example bölümüne bakın.
V1.0 SDK
Adım 1: Bağımlılıkları yükleyin
<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>
Adım 2: Örnek kod
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
Adım 1: Bağımlılıkları yükleyin
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>vod20170321</artifactId>
<version>3.6.4</version>
</dependency>
Adım 2: Örnek kod
Proje kodunuz için daha güvenli, AK içermeyen bir yöntem kullanmanızı öneririz. Kimlik bilgilerinin nasıl yapılandırılacağı hakkında bilgi için bkz. Erişim kimlik bilgilerini yönetme.
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);
}
}
}