Jika file Anda dapat diakses melalui URL publik alih-alih disimpan secara lokal, Anda dapat menggunakan API ApsaraVideo VOD untuk mengunggahnya dengan menarik dari URL tersebut. Metode ini menghilangkan kebutuhan untuk mengunduh file ke mesin lokal sebelum mengunggahnya ke ApsaraVideo VOD, sehingga ideal untuk skenario migrasi situs offline.
Fitur
Unggah batch dengan menarik dari URL merupakan tugas asinkron, bukan operasi real-time, sehingga ketepatan waktu tidak dijamin. Setelah mengirimkan tugas, proses migrasi dan pengunggahan mungkin memerlukan beberapa jam hingga berhari-hari untuk selesai. Jika ketepatan waktu menjadi prioritas utama, gunakan unggah SDK untuk mengunggah file atau gunakan OSS SDK untuk mengunggah file.
Setiap kali Anda mengirimkan tugas unggah untuk URL file media yang sama, sebuah aset media baru dengan ID media baru akan dibuat di ApsaraVideo VOD.
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, pengunggahan akan gagal. Gunakan metode unggah lainnya.
Unggah melalui konsol
Di konsol, hanya wilayah China (Shanghai) yang mendukung pengunggahan file audio dan video dengan metode Pulling From URLs. Metode unggah ini tidak didukung di wilayah lain.
Masuk ke Konsol ApsaraVideo VOD.
Di panel navigasi sebelah kiri, di bawah Media Assets, klik Audio/Video.
Klik Upload Audio/Video.

Klik Add Audio/Video.

Tambahkan file yang akan diunggah, konfigurasikan transkoding, lalu klik Start Upload.
Saat memilih metode tarik URL, masukkan ekstensi nama file jika URL tidak memuatnya. Hal ini meningkatkan tingkat keberhasilan tugas tarik. Tugas tarik dapat gagal karena masalah jaringan atau lokasi wilayah sumber daya. Jika tugas gagal, coba lagi setelah menyesuaikan jaringan atau wilayah layanan sumber daya tersebut.

Unggah menggunakan API
Integrasikan SDK sisi server ApsaraVideo VOD dan panggil operasi UploadMediaByURL. Operasi ini hanya didukung di wilayah China (Shanghai), China (Beijing), China (Shenzhen), Singapura, dan AS (Silicon Valley).
Prasyarat
ApsaraVideo VOD telah diaktifkan. Untuk informasi selengkapnya, lihat Aktifkan ApsaraVideo VOD.
Pengaturan sistem yang diperlukan untuk pengunggahan, termasuk jalur penyimpanan di wilayah yang ditentukan dan pengaturan callback, telah dikonfigurasi. Untuk informasi selengkapnya, lihat Kelola bucket penyimpanan dan Konfigurasi callback.
Pengguna RAM telah dibuat dan digunakan untuk mengakses ApsaraVideo VOD. Untuk mencegah risiko keamanan akibat kebocoran pasangan AccessKey akun Alibaba Cloud Anda, kami menyarankan agar Anda membuat pengguna RAM dan memberikan izin yang diperlukan kepada pengguna RAM tersebut untuk mengakses ApsaraVideo VOD. Kemudian, Anda dapat menggunakan pasangan AccessKey pengguna RAM untuk mengakses ApsaraVideo VOD. Untuk informasi selengkapnya, lihat Buat dan berikan izin kepada pengguna RAM.
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.
PentingPasangan AccessKey akun Alibaba Cloud memiliki izin atas semua operasi API. Kami menyarankan agar Anda menggunakan pasangan AccessKey pengguna RAM untuk memanggil operasi API atau melakukan O&M rutin.
Kami menyarankan agar Anda tidak menyematkan ID AccessKey dan Rahasia AccessKey secara langsung ke dalam kode proyek Anda. Jika tidak, pasangan AccessKey tersebut dapat bocor dan keamanan seluruh sumber daya dalam akun Anda akan terganggu.
Opsional. Peran telah dibuat untuk pengguna RAM dan diberikan izin yang diperlukan untuk mengakses ApsaraVideo VOD jika Anda ingin mengakses ApsaraVideo VOD menggunakan Layanan Token Keamanan (STS). Untuk informasi selengkapnya, lihat Dapatkan token STS.
CatatanUntuk informasi selengkapnya tentang skenario penggunaan STS, lihat Perbandingan antara kredensial dan STS.
Kode contoh
Untuk kode contoh dalam bahasa 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 {
/**
* Membaca informasi AccessKey.
*/
public static DefaultAcsClient initVodClient() throws ClientException {
// Wilayah tempat ApsaraVideo VOD diaktifkan.
String regionId = "cn-shanghai";
// AccessKey akun Alibaba Cloud memiliki izin untuk mengakses semua operasi API. Kami menyarankan agar Anda menggunakan AccessKey pengguna RAM untuk pemanggilan API atau O&M rutin.
// Kami sangat menyarankan agar Anda tidak menyematkan ID AccessKey dan Rahasia AccessKey secara langsung ke dalam kode proyek Anda. Jika tidak, pasangan AccessKey tersebut dapat bocor, yang membahayakan keamanan seluruh sumber daya dalam akun Anda.
// Contoh ini menunjukkan cara menggunakan AccessKey yang diperoleh dari variabel lingkungan untuk memverifikasi 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;
}
/**
* Unggah batch dengan menarik dari URL.
*
* @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. Harus sesuai dengan URL di UploadURLs.
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 alamat webhook terpisah dan data transmisi langsung. Parameter ini bersifat 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();
// Alamat webhook.
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
Untuk kode proyek, kami menyarankan agar Anda menggunakan metode yang lebih aman yang tidak memerlukan AccessKey. Untuk informasi tentang cara mengonfigurasi kredensial, lihat Kelola kredensial akses.
package com.aliyun.sample;
import com.aliyun.tea.*;
public class UploadMediaByURL {
/**
* description