Jika file Anda tidak disimpan secara lokal tetapi dapat diakses melalui URL publik, Anda dapat menggunakan ApsaraVideo VOD untuk menarik dan mengunggah file langsung dari URL tersebut. Metode ini menghilangkan kebutuhan untuk mengunduh file ke mesin lokal, sehingga ideal untuk skenario migrasi situs offline.
Catatan Penggunaan
-
Unggah batch dengan menarik dari URL merupakan tugas asinkron. Setelah Anda mengirimkan tugas, proses tersebut dapat memakan waktu beberapa jam hingga beberapa hari untuk selesai. Jika ketepatan waktu sangat penting, gunakan upload SDK atau OSS SDK.
-
ApsaraVideo VOD membuat aset media baru dengan ID media yang berbeda setiap kali Anda mengirimkan tugas unggah untuk URL yang sama.
-
Unggah batch dengan menarik dari URL hanya mendukung format video dan audio. Untuk informasi selengkapnya, lihat Format media yang didukung.
-
Jika ukuran satu file melebihi 20 GB, proses unggah akan gagal. Gunakan metode unggah lainnya.
Unggah menggunakan Konsol
Di Konsol, Anda dapat mengunggah file audio dan video menggunakan metode From URL di wilayah berikut: China (Shanghai), China (Beijing), China (Shenzhen), Singapore, dan US (Silicon Valley). Metode unggah ini tidak didukung di wilayah lain.
-
Masuk ke Konsol ApsaraVideo VOD.
-
Pada panel navigasi kiri, di bawah Media Files, klik Audio/Video .
-
Klik Upload .
-
Klik Add Media.
-
Tambahkan file yang akan diunggah, konfigurasikan transkoding, lalu klik Upload.
Saat Anda memilih metode From URL, jika URL tidak memiliki ekstensi, tentukan ekstensinya untuk meningkatkan tingkat keberhasilan. Tugas tarik mungkin gagal karena masalah jaringan atau wilayah layanan sumber daya. Jika tugas gagal, sesuaikan pengaturan jaringan atau wilayah layanan sumber daya, lalu coba lagi.
Pada tabel, masukkan URL, extension, dan Audio/Video Name. Secara default, Category diatur ke Uncategorized dan Transcoding Template Group diatur ke No Transcoding. Anda dapat mengeklik + Add untuk menambahkan lebih banyak file.
Unggah menggunakan API
Untuk mengirimkan tugas melalui API, integrasikan SDK sisi server ApsaraVideo VOD dan panggil operasi UploadMediaByURL. Operasi ini hanya didukung di wilayah berikut: China (Shanghai), China (Beijing), China (Shenzhen), Singapore, dan US (Silicon Valley).
Prasyarat
-
ApsaraVideo VOD telah diaktifkan. Untuk informasi selengkapnya, lihat Aktifkan ApsaraVideo VOD.
-
Pengaturan sistem yang diperlukan untuk unggah, termasuk jalur penyimpanan di wilayah tertentu dan pengaturan callback, telah dikonfigurasi. Untuk informasi selengkapnya, lihat Kelola bucket penyimpanan dan Konfigurasi callback.
-
RAM user telah dibuat dan digunakan untuk mengakses ApsaraVideo VOD. Untuk mencegah risiko keamanan akibat kebocoran pasangan Kunci Akses akun Alibaba Cloud Anda, kami menyarankan agar Anda membuat RAM user dan memberikan izin yang diperlukan untuk mengakses ApsaraVideo VOD. Kemudian, Anda dapat menggunakan pasangan Kunci Akses RAM user tersebut untuk mengakses ApsaraVideo VOD. Untuk informasi selengkapnya, lihat Buat RAM user dan berikan izin.
-
Konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET. Untuk informasi selengkapnya, lihat Konfigurasi variabel lingkungan di Linux, macOS, dan Windows.
Penting-
Pasangan Kunci Akses akun Alibaba Cloud memiliki izin atas semua operasi API. Gunakan pasangan Kunci Akses RAM user untuk memanggil operasi API atau melakukan O&M rutin.
-
Jangan menyematkan ID AccessKey dan Rahasia AccessKey secara langsung dalam kode proyek. Jika bocor, semua sumber daya dalam akun Anda akan dikompromikan.
-
-
Opsional. Peran telah dibuat untuk RAM user dan diberikan izin yang diperlukan untuk mengakses ApsaraVideo VOD jika Anda ingin mengakses ApsaraVideo VOD menggunakan Security Token Service (STS). Untuk informasi selengkapnya, lihat Dapatkan token STS.
Kode Contoh
Untuk kode contoh dalam bahasa pemrograman lain, lihat bagian SDK Example pada UploadMediaByURL.
V1.0 SDK
Langkah 1: Instal dependensi
<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>
Langkah 2: Kode contoh
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;
/**
* Kode contoh untuk fitur unggah batch dengan menarik dari URL.
*
*/
public class AudioOrVideoUploadByUrl {
/**
* Menginisialisasi klien ApsaraVideo VOD.
*/
public static DefaultAcsClient initVodClient() throws ClientException {
// Wilayah tempat ApsaraVideo VOD diaktifkan.
String regionId = "cn-shanghai";
// Pasangan Kunci Akses akun Alibaba Cloud memiliki izin untuk mengakses semua operasi API. Kami menyarankan agar Anda menggunakan pasangan Kunci Akses RAM user untuk panggilan API atau O&M rutin.
// Kami sangat menyarankan agar Anda tidak menyematkan ID AccessKey dan Rahasia AccessKey secara langsung dalam kode proyek Anda. Jika tidak, pasangan Kunci Akses tersebut dapat bocor dan membahayakan keamanan semua sumber daya dalam akun Anda.
// Contoh ini menunjukkan cara menggunakan pasangan Kunci Akses yang diperoleh dari variabel lingkungan untuk mengotentikasi identitas Anda saat mengakses API. Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
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;
}
/**
* Mengunggah file media dengan menarik dari URL secara batch.
*
* @param client Klien yang mengirim permintaan.
* @return UploadMediaByURLResponse Tanggapan terhadap permintaan unggah batch.
* @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");
//URL file video sumber.
request.setUploadURLs(encodeUrl);
//Metadata video yang akan diunggah.
JSONObject uploadMetadata = new JSONObject();
//URL file video sumber yang akan diunggah. URL ini harus sesuai dengan URL dalam UploadURLs agar berlaku.
uploadMetadata.put("SourceUrl", encodeUrl);
//Judul video.
uploadMetadata.put("Title", "upload by url sample");
JSONArray uploadMetadataList = new JSONArray();
uploadMetadataList.add(uploadMetadata);
request.setUploadMetadatas(uploadMetadataList.toJSONString());
//UserData: Pengaturan parameter kustom. Tetapkan parameter ini jika Anda memerlukan URL callback terpisah dan data transmisi langsung. Parameter ini opsional.
JSONObject userData = new JSONObject();
//Pengaturan callback dalam UserData.
//Pengaturan callback pesan. Jika ditentukan, pengaturan ini akan digunakan. Jika tidak, pengaturan notifikasi event global yang akan digunakan.
JSONObject messageCallback = new JSONObject();
//URL callback.
messageCallback.put("CallbackURL", "http://192.168.0.0/16");
//Jenis callback. Nilai default: 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);
}
/**
* Permintaan contoh.
*/
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
Langkah 1: Instal dependensi
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>vod20170321</artifactId>
<version>3.6.4</version>
</dependency>
Langkah 2: Kode contoh
Kami menyarankan agar Anda menggunakan metode yang lebih aman tanpa AK untuk kode proyek Anda. Untuk informasi tentang cara mengonfigurasi kredensial, lihat Kelola kredensial akses.
package com.aliyun.sample;
import com.aliyun.tea.*;
public class UploadMediaByURL {
/**
* description :
* <p>Menginisialisasi klien menggunakan kredensial.</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);
// Untuk informasi selengkapnya tentang titik akhir, lihat 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 {
// Cetak tanggapan API setelah Anda menyalin dan menjalankan kode.
com.aliyun.vod20170321.models.UploadMediaByURLResponse response = client.uploadMediaByURLWithOptions(uploadMediaByURLRequest, runtime);
com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(response));
} catch (TeaException error) {
// Ini hanya untuk tujuan demonstrasi. Tangani pengecualian dengan hati-hati. Jangan abaikan pengecualian dalam proyek Anda.
// Pesan kesalahan
System.out.println(error.getMessage());
// Alamat diagnostik
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// Ini hanya untuk tujuan demonstrasi. Tangani pengecualian dengan hati-hati. Jangan abaikan pengecualian dalam proyek Anda.
// Pesan kesalahan
System.out.println(error.getMessage());
// Alamat diagnostik
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}