Gunakan SDK unggah sisi server untuk Java guna mengunggah file audio, video, gambar, dan aset media pendukung ke ApsaraVideo VOD.
Ikhtisar
SDK unggah Java mengikuti proses unggah ApsaraVideo VOD. Langkah-langkah dasarnya adalah:
-
Lengkapi Prasyarat.
-
Implementasikan logika unggah (terutama konfigurasi unggah).
-
File audio dan video: Skenario 1: Unggah file audio dan video.
-
Gambar: Skenario 2: Unggah gambar.
-
Aset media pendukung: Skenario 3: Unggah aset media pendukung.
-
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.
-
Pengguna RAM 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 Pengguna RAM dan memberikan izin yang diperlukan untuk mengakses ApsaraVideo VOD kepada Pengguna RAM tersebut. Kemudian, Anda dapat menggunakan Pasangan Kunci Akses Pengguna RAM untuk mengakses ApsaraVideo VOD. Untuk informasi selengkapnya, lihat Buat Pengguna RAM 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.
PentingPasangan Kunci Akses Akun Alibaba Cloud memiliki izin atas semua operasi API. Kami menyarankan agar Anda menggunakan Pasangan Kunci Akses 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 Kunci Akses tersebut dapat bocor dan keamanan semua sumber daya dalam akun Anda akan terganggu.
-
Opsional. Buat role untuk Pengguna RAM dan berikan 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.
Integrasikan SDK unggah untuk Java
Contoh ini menggunakan Java 1.8+ dan SDK unggah Java 1.4.15. Langkah-langkah dapat berbeda tergantung versinya. SDK memerlukan impor JAR manual — integrasi dependensi langsung tidak didukung. Pemecahan Masalah.
-
Unduh SDK unggah untuk Java dan kode contoh.
Versi SDK: 1.4.15
Tanggal pembaruan: 2022-11-03
Alamat unduhan: Kode sumber SDK dan demo V1.4.15
-
Ekstrak paket yang diunduh.
Setelah mengekstrak VODUploadDemo-java-1.4.15.zip, Anda mendapatkan folder-folder berikut:
-
lib: Paket JAR yang diperlukan oleh SDK unggah. -
sample: Kode contoh untuk SDK unggah.
-
-
Impor paket JAR.
-
Eclipse: Klik kanan proyek Anda, pilih Properties > Java Build Path > Add JARs, navigasi ke folder VODUploadDemo-java-1.4.15 yang diekstrak, lalu tambahkan semua file jar dari direktori
lib. -
IntelliJ IDEA: Pilih File > Project Structure > Modules, klik Dependencies di sebelah kanan, klik +, lalu JARs or directories. Navigasi ke direktori VODUploadDemo-java-1.4.15 yang diekstrak dan tambahkan semua file jar dari direktori
lib.
PentingSetelah mengimpor paket JAR, konfigurasikan dependensinya.
-
-
Tambahkan dependensi: Alibaba Cloud SDK for Java, OSS SDK, ApsaraVideo VOD server-side SDK, dan ApsaraVideo VOD upload SDK.
Penting-
Semua dependensi yang tercantum wajib. Menghilangkan salah satunya menyebabkan kegagalan integrasi.
-
Jika Anda menggunakan paket JAR terbaru (aliyun-java-vod-upload-1.4.15.jar), pastikan versi aliyun-sdk-oss minimal 3.9.0 dan versi aliyun-java-sdk-vod minimal 2.16.11.
-
ApsaraVideo VOD tersedia di wilayah Tiongkok (Shanghai), Tiongkok (Shenzhen), dan Tiongkok (Beijing). Untuk unggah ke Tiongkok (Shenzhen) atau Tiongkok (Beijing): SDK unggah versi 1.4.14 atau lebih lama memerlukan aliyun-java-sdk-vod 2.15.11+ dan aliyun-java-sdk-core 4.4.5+; SDK unggah versi 1.4.15 atau lebih baru memerlukan aliyun-java-sdk-vod 2.16.11+ dan aliyun-java-sdk-core 4.4.5+.
Tampilkan dependensi
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.1</version> </dependency> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-vod</artifactId> <version>2.16.11</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20170516</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.2</version> </dependency> <dependency> <groupId>com.aliyun.vod</groupId> <artifactId>upload</artifactId> <version>1.4.15</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/aliyun-java-vod-upload-1.4.15.jar</systemPath> </dependency> -
Skenario 1: Unggah file audio dan video
File audio dan video biasa
ApsaraVideo VOD menyediakan empat metode untuk mengunggah file audio dan video:
-
Unggah file lokal. Menggunakan unggah multi-bagian dengan dukungan unggah yang dapat dilanjutkan. Contoh:
testUploadVideo.-
Tanpa unggah yang dapat dilanjutkan, tugas berjalan maksimal selama 3.000 detik. Ukuran file maksimum bergantung pada lebar pita jaringan dan I/O disk.
-
Jika unggah yang dapat dilanjutkan diaktifkan, Anda dapat mengunggah satu file hingga 48,8 TB.
PentingUnggah yang dapat dilanjutkan menulis progres ke file lokal, yang dapat memengaruhi kecepatan unggah. Pertimbangkan untuk mengaktifkan fitur ini untuk file besar.
-
-
Unggah aliran jaringan melalui URL. Mendukung unggah yang dapat dilanjutkan untuk file hingga 48,8 TB. Mengunduh file secara lokal sebelum diunggah — pastikan ruang disk mencukupi. Contoh:
testUploadURLStream. -
Unggah aliran file dari file lokal. Tidak mendukung unggah yang dapat dilanjutkan. Ukuran file maksimum: 5 GB. Contoh:
testUploadFileStream. -
Unggah aliran input (aliran file atau aliran jaringan). Tidak mendukung unggah yang dapat dilanjutkan. Ukuran file maksimum: 5 GB. Contoh:
testUploadStream.
Saat menggunakan kode contoh, impor secara manual kelas-kelas yang diperlukan. Jika Anda mengalami error dependensi yang hilang, periksa FAQ.
Kode contoh
");
/* Wajib. Nomor port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("");
/* Username yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("");
/* Password yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadVideoResponse response = uploader.uploadVideo(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ID permintaan yang dikirim ke ApsaraVideo VOD.
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else {
/* Jika URL callback tidak valid, unggah tidak terpengaruh, dan layanan mengembalikan ID video beserta kode kesalahan. Dalam kasus lain, jika unggah gagal, ID video tidak dikembalikan, dan Anda harus melakukan pemecahan masalah berdasarkan kode kesalahan tersebut. */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* Unggah aliran jaringan. Metode ini mendukung unggah yang dapat dilanjutkan. Anda dapat mengunggah satu file hingga maksimal 48,8 TB.
* Metode ini pertama-tama mengunduh file dari URL yang ditentukan ke disk lokal, lalu mengunggah file tersebut. Pastikan disk lokal memiliki ruang yang cukup.
* Jika URL tidak berisi ekstensi nama file, Anda harus menentukan parameter fileExtension.
* @param accessKeyId
* @param accessKeySecret
* @param title
* @param fileExtension
* @param url
*/
private static void testUploadURLStream(String accessKeyId, String accessKeySecret, String title, String url, String fileExtension) {
UploadURLStreamRequest request = new UploadURLStreamRequest(accessKeyId, accessKeySecret, title, url);
/* Ekstensi nama file. */
request.setFileExtension(fileExtension);
/* Periode timeout koneksi untuk mengunduh file online. Satuan: milidetik. Nilai 0 berarti tanpa batas. */
request.setDownloadConnectTimeout(1000);
/* Periode timeout baca untuk mengunduh file online. Satuan: milidetik. Nilai 0 berarti tanpa batas. */
request.setDownloadReadTimeout(0);
/* Direktori lokal tempat file diunduh. */
request.setLocalDownloadFilePath("/Users/download");
/* Opsional. Menentukan apakah akan menambahkan Watermark. Jika Anda menentukan ID kelompok templat, pengaturan Watermark dalam kelompok templat tersebut yang berlaku. */
//request.setShowWaterMark(true);
/* Opsional. Pengaturan kustom, pengaturan callback pesan, dan pengaturan akselerasi unggah. Extend menentukan pengaturan kustom, MessageCallback menentukan pengaturan callback pesan, dan AccelerateConfig menentukan pengaturan akselerasi unggah. Anda hanya dapat menggunakan fitur akselerasi unggah setelah mengaktifkannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* Opsional. ID kategori video. */
//request.setCateId(0);
/* Opsional. Tag video. Pisahkan beberapa tag dengan koma (,). */
//request.setTags("Tag1,Tag2");
/* Opsional. Deskripsi video. */
//request.setDescription("Video description");
/* Opsional. URL gambar mini. */
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* Opsional. ID kelompok templat. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* Opsional. ID alur kerja. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Mengaktifkan callback progres unggah default. */
//request.setPrintProgress(true);
/* Menetapkan callback progres unggah kustom. Anda harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika diaktifkan, server mengembalikan detail unggah dalam log. Jika Anda tidak ingin menerima pesan tersebut, nonaktifkan fitur ini. */
//request.setProgressListener(new PutObjectProgressListener());
/* ID aplikasi. */
//request.setAppId("app-100****");
/* Wilayah tempat ApsaraVideo VOD diaktifkan. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah tempat Instance ECS dideploy. */
// request.setEcsRegionId("cn-shanghai");
// Jika wilayah Instance ECS sama dengan wilayah ApsaraVideo VOD diaktifkan, fitur unggah melalui jaringan internal akan diaktifkan secara otomatis.
/* Opsional. Pengaturan proxy. */
//OSSConfig ossConfig = new OSSConfig();
/* Wajib. Alamat host server proxy. */
//ossConfig.setProxyHost("");
/* Wajib. Nomor port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("");
/* Username yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("");
/* Password yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadURLStreamResponse response = uploader.uploadURLStream(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ID permintaan yang dikirim ke ApsaraVideo VOD.
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else {
/* Jika URL callback tidak valid, unggah tidak terpengaruh, dan layanan mengembalikan ID video beserta kode kesalahan. Dalam kasus lain, jika unggah gagal, ID video tidak dikembalikan, dan Anda harus melakukan pemecahan masalah berdasarkan kode kesalahan tersebut. */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* Unggah aliran file.
*
* @param accessKeyId
* @param accessKeySecret
* @param title
* @param fileName
*/
private static void testUploadFileStream(String accessKeyId, String accessKeySecret, String title, String fileName) {
UploadFileStreamRequest request = new UploadFileStreamRequest(accessKeyId, accessKeySecret, title, fileName);
/* Opsional. Menentukan apakah akan menambahkan Watermark default. Jika Anda menentukan ID kelompok templat, pengaturan Watermark dalam kelompok templat tersebut yang berlaku. */
//request.setShowWaterMark(true);
/* Opsional. Pengaturan kustom, pengaturan callback pesan, dan pengaturan akselerasi unggah. Extend menentukan pengaturan kustom, MessageCallback menentukan pengaturan callback pesan, dan AccelerateConfig menentukan pengaturan akselerasi unggah. Anda hanya dapat menggunakan fitur akselerasi unggah setelah mengaktifkannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* Opsional. ID kategori video. */
//request.setCateId(0);
/* Opsional. Tag video. Pisahkan beberapa tag dengan koma (,). */
//request.setTags("Tag1,Tag2");
/* Opsional. Deskripsi video. */
//request.setDescription("Video description");
/* Opsional. URL gambar mini. */
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* Opsional. ID kelompok templat. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* Opsional. ID alur kerja. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Mengaktifkan callback progres unggah default. */
//request.setPrintProgress(true);
/* Menetapkan callback progres unggah kustom. Anda harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika diaktifkan, server mengembalikan detail unggah dalam log. Jika Anda tidak ingin menerima pesan tersebut, nonaktifkan fitur ini. */
//request.setProgressListener(new PutObjectProgressListener());
/* ID aplikasi. */
//request.setAppId("app-100****");
/* Wilayah tempat ApsaraVideo VOD diaktifkan. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah tempat Instance ECS dideploy. */
// request.setEcsRegionId("cn-shanghai");
// Jika wilayah Instance ECS sama dengan wilayah ApsaraVideo VOD diaktifkan, fitur unggah melalui jaringan internal akan diaktifkan secara otomatis.
/* Opsional. Pengaturan proxy. */
//OSSConfig ossConfig = new OSSConfig();
/* Wajib. Alamat host server proxy. */
//ossConfig.setProxyHost("");
/* Wajib. Nomor port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("");
/* Username yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("");
/* Password yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadFileStreamResponse response = uploader.uploadFileStream(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ID permintaan yang dikirim ke ApsaraVideo VOD.
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else {
/* Jika URL callback tidak valid, unggah tidak terpengaruh, dan layanan mengembalikan ID video beserta kode kesalahan. Dalam kasus lain, jika unggah gagal, ID video tidak dikembalikan, dan Anda harus melakukan pemecahan masalah berdasarkan kode kesalahan tersebut. */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* Lakukan unggah streaming.
*
* @param accessKeyId
* @param accessKeySecret
* @param title
* @param fileName
* @param inputStream
*/
private static void testUploadStream(String accessKeyId, String accessKeySecret, String title, String fileName, InputStream inputStream) {
UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName, inputStream);
/* Opsional. Menentukan apakah akan menambahkan Watermark default. Jika Anda menentukan ID kelompok templat, pengaturan Watermark dalam kelompok templat tersebut yang berlaku. */
//request.setShowWaterMark(true);
/* Opsional. Pengaturan kustom, pengaturan callback pesan, dan pengaturan akselerasi unggah. Extend menentukan pengaturan kustom, MessageCallback menentukan pengaturan callback pesan, dan AccelerateConfig menentukan pengaturan akselerasi unggah. Anda hanya dapat menggunakan fitur akselerasi unggah setelah mengaktifkannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* Opsional. ID kategori video. */
//request.setCateId(0);
/* Opsional. Tag video. Pisahkan beberapa tag dengan koma (,). */
//request.setTags("Tag1,Tag2");
/* Opsional. Deskripsi video. */
//request.setDescription("Video description");
/* Opsional. URL gambar mini. */
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* Opsional. ID kelompok templat. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* Opsional. ID alur kerja. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Mengaktifkan callback progres unggah default. */
// request.setPrintProgress(true);
/* Menetapkan callback progres unggah kustom. Anda harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika diaktifkan, server mengembalikan detail unggah dalam log. Jika Anda tidak ingin menerima pesan tersebut, nonaktifkan fitur ini. */
// request.setProgressListener(new PutObjectProgressListener());
/* ID aplikasi. */
//request.setAppId("app-100****");
/* Wilayah tempat ApsaraVideo VOD diaktifkan. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah tempat Instance ECS dideploy. */
// request.setEcsRegionId("cn-shanghai");
// Jika wilayah Instance ECS sama dengan wilayah ApsaraVideo VOD diaktifkan, fitur unggah melalui jaringan internal akan diaktifkan secara otomatis.
/* Opsional. Pengaturan proxy. */
//OSSConfig ossConfig = new OSSConfig();
/* Wajib. Alamat host server proxy. */
//ossConfig.setProxyHost("");
/* Wajib. Nomor port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("");
/* Username yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("");
/* Password yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadStreamResponse response = uploader.uploadStream(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ID permintaan yang dikirim ke ApsaraVideo VOD.
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else { // Jika URL callback tidak valid, unggah tidak terpengaruh, dan layanan mengembalikan ID video beserta kode kesalahan. Dalam kasus lain, jika unggah gagal, ID video tidak dikembalikan, dan Anda harus melakukan pemecahan masalah berdasarkan kode kesalahan tersebut.
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
} public class UploadVideoDemo {
// Diperlukan: Tentukan pasangan Kunci Akses Anda.
// Pasangan Kunci Akses dari akun Alibaba Cloud dapat mengakses semua API. Kami menyarankan Anda menggunakan pengguna RAM untuk akses API atau O&M rutin.
// Jangan menuliskan ID AccessKey dan Rahasia AccessKey secara langsung di dalam proyek Anda. Jika tidak, pasangan Kunci Akses dapat bocor dan semua sumber daya di akun Anda dapat berisiko terekspos.
// Dalam contoh ini, pasangan Kunci Akses diperoleh dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
public static void main(String[] args) {
// Unggah video.
// Diperlukan. Judul video.
String title = "Test Title";
// 1. Untuk unggahan file lokal dan unggahan aliran file, atur fileName ke jalur mutlak file yang akan diunggah. Contoh: /User/sample/FileName.mp4. (Diperlukan)
// 2. Untuk unggahan aliran jaringan, atur fileName ke nama file sumber. Contoh: FileName.mp4. (Diperlukan)
// 3. Untuk unggahan streaming, atur fileName ke nama file sumber. Contoh: FileName.mp4. (Diperlukan)
// Nama file harus menyertakan ekstensi nama file, terlepas dari metode unggahannya.
String fileName = "/Users/test/video/test.mp4";
// Unggah file lokal.
testUploadVideo(accessKeyId, accessKeySecret, title, fileName);
// URL aliran jaringan yang akan diunggah.
String url = "http://test.aliyun.com/video/test.mp4";
// 2. Unggah aliran jaringan.
// Ekstensi nama file. Parameter ini diperlukan jika URL tidak berisi ekstensi nama file.
String fileExtension = "mp4";
testUploadURLStream(accessKeyId, accessKeySecret, title, url, fileExtension);
// 3. Unggah aliran file.
testUploadFileStream(accessKeyId, accessKeySecret, title, fileName);
// 4. Lakukan unggahan streaming dari aliran file atau aliran jaringan.
InputStream inputStream = null;
// 4.1 Aliran file
try {
inputStream = new FileInputStream(fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 4.2 Aliran jaringan
try {
inputStream = new URL(url).openStream();
} catch (IOException e) {
e.printStackTrace();
}
testUploadStream(accessKeyId, accessKeySecret, title, fileName, inputStream);
}
/**
* Unggah file lokal.
*
* @param accessKeyId
* @param accessKeySecret
* @param title
* @param fileName
*/
private static void testUploadVideo(String accessKeyId, String accessKeySecret, String title, String fileName) {
UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName);
/* Ukuran bagian untuk unggah multi-bagian. Nilai default: 2 MB. */
request.setPartSize(2 * 1024 * 1024L);
/* Jumlah thread bersamaan untuk unggah multi-bagian. Nilai default: 1. Parameter ini memengaruhi konsumsi CPU. Atur nilai ini berdasarkan konfigurasi server Anda. */
request.setTaskNum(1);
/* Menentukan apakah akan mengaktifkan unggah yang dapat dilanjutkan. Secara default, unggah yang dapat dilanjutkan dinonaktifkan. Jika jaringan tidak stabil atau program mogok, Anda dapat melanjutkan unggahan dari titik gangguan dengan mengirim ulang permintaan unggahan yang sama. Gunakan fitur ini untuk file berukuran besar yang membutuhkan waktu lebih dari 3.000 detik untuk diunggah.
Catatan: Jika Anda mengaktifkan unggah yang dapat dilanjutkan, kemajuan unggahan akan ditulis ke file lokal. Hal ini dapat memengaruhi kecepatan unggahan. Anda dapat menentukan apakah akan mengaktifkan fitur ini berdasarkan kebutuhan Anda. */
//request.setEnableCheckpoint(false);
/* Ambang batas waktu untuk mencatat permintaan OSS yang lambat. Jika waktu untuk mengunggah suatu bagian melebihi ambang batas ini, sistem akan mencetak log debug. Untuk mencegah log ini dicetak, tingkatkan ambang batas. Satuan: milidetik. Nilai default: 300000. */
//request.setSlowRequestsThreshold(300000L);
/* Ambang batas waktu untuk mencatat permintaan lambat untuk setiap bagian. Nilai default: 300 d. */
//request.setSlowRequestsThreshold(300000L);
/* Opsional. Menentukan apakah akan menambahkan watermark. Jika Anda menentukan ID grup templat, pengaturan watermark di grup templat akan diutamakan. */
//request.setIsShowWaterMark(true);
/* Opsional. Pengaturan kustom, pengaturan panggilan balik pesan, dan pengaturan akselerasi unggahan. Extend menentukan pengaturan kustom, MessageCallback menentukan pengaturan panggilan balik pesan, dan AccelerateConfig menentukan pengaturan akselerasi unggahan. Anda dapat menggunakan fitur akselerasi unggahan hanya setelah Anda mengaktifkannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* Opsional. ID kategori video. */
//request.setCateId(0);
/* Opsional. Tag video. Pisahkan beberapa tag dengan koma (,). */
//request.setTags("Tag1,Tag2");
/* Opsional. Deskripsi video. */
//request.setDescription("Video description");
/* Opsional. URL gambar mini. */
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* Opsional. ID grup templat. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e5****");
/* Opsional. ID alur kerja. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Mengaktifkan panggilan balik kemajuan unggahan default. */
//request.setPrintProgress(false);
/* Mengatur panggilan balik kemajuan unggahan kustom. Anda harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika fitur ini diaktifkan, server akan mengembalikan detail unggahan di dalam log. Jika Anda tidak ingin menerima pesan, nonaktifkan fitur ini. */
//request.setProgressListener(new PutObjectProgressListener());
/* Mengatur kelas implementasi antarmuka yang digunakan untuk menghasilkan informasi STS. */
// request.setVoDRefreshSTSTokenListener(new RefreshSTSTokenImpl());
/* ID aplikasi. */
//request.setAppId("app-100****");
/* Wilayah tempat ApsaraVideo VOD diaktifkan. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah tempat instance ECS di-deploy. */
// request.setEcsRegionId("cn-shanghai");
// Jika wilayah tempat instance ECS di-deploy sama dengan wilayah tempat ApsaraVideo VOD diaktifkan, fitur unggahan jaringan internal akan diaktifkan secara otomatis.
/* Opsional. Pengaturan proksi. */
//OSSConfig ossConfig = new OSSConfig();
/* Diperlukan. Alamat host server proksi. */
//ossConfig.setProxyHost("<yourproxyhost id="0452bfbbbcei1">");
/* Diperlukan. Nomor port server proksi. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* Agen pengguna, yang merupakan header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<youruseragent id="51f35d9df8z0k">");
/* Nama pengguna yang digunakan untuk otentikasi server proksi. Parameter ini diperlukan jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("<yourproxyusername id="61dab93c3d9c2">");
/* Kata sandi yang digunakan untuk otentikasi server proksi. Parameter ini diperlukan jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("<yourproxypassword id="c93c6e09f0970">");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadVideoResponse response = uploader.uploadVideo(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ID permintaan yang dikirim ke ApsaraVideo VOD.
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else {
/* Jika URL panggilan balik tidak valid, unggahan tidak akan terpengaruh, dan layanan akan mengembalikan ID video dan kode kesalahan. Dalam kasus lain, jika unggahan gagal, tidak ada ID video yang dikembalikan, dan Anda harus memecahkan masalah berdasarkan kode kesalahan. */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* Unggah aliran jaringan. Metode ini mendukung unggah yang dapat dilanjutkan. Anda dapat mengunggah satu file hingga 48,8 TB.
* Metode ini pertama-tama mengunduh file dari URL yang ditentukan ke disk lokal, lalu mengunggah file tersebut. Pastikan disk lokal memiliki ruang yang cukup.
* Jika URL tidak berisi ekstensi nama file, Anda harus menentukan parameter fileExtension.
* @param accessKeyId
* @param accessKeySecret
* @param title
* @param fileExtension
* @param url
*/
private static void testUploadURLStream(String accessKeyId, String accessKeySecret, String title, String url, String fileExtension) {
UploadURLStreamRequest request = new UploadURLStreamRequest(accessKeyId, accessKeySecret, title, url);
/* Ekstensi nama file. */
request.setFileExtension(fileExtension);
/* Periode waktu habis koneksi untuk mengunduh file online. Satuan: milidetik. Nilai 0 menunjukkan tidak ada batas. */
request.setDownloadConnectTimeout(1000);
/* Periode waktu habis baca untuk mengunduh file online. Satuan: milidetik. Nilai 0 menunjukkan tidak ada batas. */
request.setDownloadReadTimeout(0);
/* Direktori lokal tempat file diunduh. */
request.setLocalDownloadFilePath("/Users/download");
/* Opsional. Menentukan apakah akan menambahkan watermark. Jika Anda menentukan ID grup templat, pengaturan watermark di grup templat akan diutamakan. */
//request.setShowWaterMark(true);
/* Opsional. Pengaturan kustom, pengaturan panggilan balik pesan, dan pengaturan akselerasi unggahan. Extend menentukan pengaturan kustom, MessageCallback menentukan pengaturan panggilan balik pesan, dan AccelerateConfig menentukan pengaturan akselerasi unggahan. Anda dapat menggunakan fitur akselerasi unggahan hanya setelah Anda mengaktifkannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* Opsional. ID kategori video. */
//request.setCateId(0);
/* Opsional. Tag video. Pisahkan beberapa tag dengan koma (,). */
//request.setTags("Tag1,Tag2");
/* Opsional. Deskripsi video. */
//request.setDescription("Video description");
/* Opsional. URL gambar mini. */
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* Opsional. ID grup templat. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* Opsional. ID alur kerja. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Mengaktifkan panggilan balik kemajuan unggahan default. */
//request.setPrintProgress(true);
/* Mengatur panggilan balik kemajuan unggahan kustom. Anda harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika fitur ini diaktifkan, server akan mengembalikan detail unggahan di dalam log. Jika Anda tidak ingin menerima pesan, nonaktifkan fitur ini. */
//request.setProgressListener(new PutObjectProgressListener());
/* ID aplikasi. */
//request.setAppId("app-100****");
/* Wilayah tempat ApsaraVideo VOD diaktifkan. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah tempat instance ECS di-deploy. */
// request.setEcsRegionId("cn-shanghai");
// Jika wilayah tempat instance ECS di-deploy sama dengan wilayah tempat ApsaraVideo VOD diaktifkan, fitur unggahan jaringan internal akan diaktifkan secara otomatis.
/* Opsional. Pengaturan proksi. */
//OSSConfig ossConfig = new OSSConfig();
/* Diperlukan. Alamat host server proksi. */
//ossConfig.setProxyHost("<yourproxyhost id="3de81461a9rs0">");
/* Diperlukan. Nomor port server proksi. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* Agen pengguna, yang merupakan header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<youruseragent id="b1ff5a5de6zu6">");
/* Nama pengguna yang digunakan untuk otentikasi server proksi. Parameter ini diperlukan jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("<yourproxyusername id="16db0dea620to">");
/* Kata sandi yang digunakan untuk otentikasi server proksi. Parameter ini diperlukan jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("<yourproxypassword id="b738179af8472">");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadURLStreamResponse response = uploader.uploadURLStream(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ID permintaan yang dikirim ke ApsaraVideo VOD.
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else {
/* Jika URL panggilan balik tidak valid, unggahan tidak akan terpengaruh, dan layanan akan mengembalikan ID video dan kode kesalahan. Dalam kasus lain, jika unggahan gagal, tidak ada ID video yang dikembalikan, dan Anda harus memecahkan masalah berdasarkan kode kesalahan. */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* Unggah aliran file.
*
* @param accessKeyId
* @param accessKeySecret
* @param title
* @param fileName
*/
private static void testUploadFileStream(String accessKeyId, String accessKeySecret, String title, String fileName) {
UploadFileStreamRequest request = new UploadFileStreamRequest(accessKeyId, accessKeySecret, title, fileName);
/* Opsional. Menentukan apakah akan menambahkan watermark default. Jika Anda menentukan ID grup templat, pengaturan watermark di grup templat akan diutamakan. */
//request.setShowWaterMark(true);
/* Opsional. Pengaturan kustom, pengaturan panggilan balik pesan, dan pengaturan akselerasi unggahan. Extend menentukan pengaturan kustom, MessageCallback menentukan pengaturan panggilan balik pesan, dan AccelerateConfig menentukan pengaturan akselerasi unggahan. Anda dapat menggunakan fitur akselerasi unggahan hanya setelah Anda mengaktifkannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* Opsional. ID kategori video. */
//request.setCateId(0);
/* Opsional. Tag video. Pisahkan beberapa tag dengan koma (,). */
//request.setTags("Tag1,Tag2");
/* Opsional. Deskripsi video. */
//request.setDescription("Video description");
/* Opsional. URL gambar mini. */
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* Opsional. ID grup templat. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* Opsional. ID alur kerja. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Mengaktifkan panggilan balik kemajuan unggahan default. */
//request.setPrintProgress(true);
/* Mengatur panggilan balik kemajuan unggahan kustom. Anda harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika fitur ini diaktifkan, server akan mengembalikan detail unggahan di dalam log. Jika Anda tidak ingin menerima pesan, nonaktifkan fitur ini. */
//request.setProgressListener(new PutObjectProgressListener());
/* ID aplikasi. */
//request.setAppId("app-100****");
/* Wilayah tempat ApsaraVideo VOD diaktifkan. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah tempat instance ECS di-deploy. */
// request.setEcsRegionId("cn-shanghai");
// Jika wilayah tempat instance ECS di-deploy sama dengan wilayah tempat ApsaraVideo VOD diaktifkan, fitur unggahan jaringan internal akan diaktifkan secara otomatis.
/* Opsional. Pengaturan proksi. */
//OSSConfig ossConfig = new OSSConfig();
/* Diperlukan. Alamat host server proksi. */
//ossConfig.setProxyHost("<yourproxyhost id="87cdc1a442tjg">");
/* Diperlukan. Nomor port server proksi. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* Agen pengguna, yang merupakan header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<youruseragent id="a97679b9f8olb">");
/* Nama pengguna yang digunakan untuk otentikasi server proksi. Parameter ini diperlukan jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("<yourproxyusername id="77aaf9d183x25">");
/* Kata sandi yang digunakan untuk otentikasi server proksi. Parameter ini diperlukan jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("<yourproxypassword id="d1cc0a10ef6l3">");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadFileStreamResponse response = uploader.uploadFileStream(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ID permintaan yang dikirim ke ApsaraVideo VOD.
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else {
/* Jika URL panggilan balik tidak valid, unggahan tidak akan terpengaruh, dan layanan akan mengembalikan ID video dan kode kesalahan. Dalam kasus lain, jika unggahan gagal, tidak ada ID video yang dikembalikan, dan Anda harus memecahkan masalah berdasarkan kode kesalahan. */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* Lakukan unggahan streaming.
*
* @param accessKeyId
* @param accessKeySecret
* @param title
* @param fileName
* @param inputStream
*/
private static void testUploadStream(String accessKeyId, String accessKeySecret, String title, String fileName, InputStream inputStream) {
UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName, inputStream);
/* Opsional. Menentukan apakah akan menambahkan watermark default. Jika Anda menentukan ID grup templat, pengaturan watermark di grup templat akan diutamakan. */
//request.setShowWaterMark(true);
/* Opsional. Pengaturan kustom, pengaturan panggilan balik pesan, dan pengaturan akselerasi unggahan. Extend menentukan pengaturan kustom, MessageCallback menentukan pengaturan panggilan balik pesan, dan AccelerateConfig menentukan pengaturan akselerasi unggahan. Anda dapat menggunakan fitur akselerasi unggahan hanya setelah Anda mengaktifkannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* Opsional. ID kategori video. */
//request.setCateId(0);
/* Opsional. Tag video. Pisahkan beberapa tag dengan koma (,). */
//request.setTags("Tag1,Tag2");
/* Opsional. Deskripsi video. */
//request.setDescription("Video description");
/* Opsional. URL gambar mini. */
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* Opsional. ID grup templat. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* Opsional. ID alur kerja. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Mengaktifkan panggilan balik kemajuan unggahan default. */
// request.setPrintProgress(true);
/* Mengatur panggilan balik kemajuan unggahan kustom. Anda harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika fitur ini diaktifkan, server akan mengembalikan detail unggahan di dalam log. Jika Anda tidak ingin menerima pesan, nonaktifkan fitur ini. */
// request.setProgressListener(new PutObjectProgressListener());
/* ID aplikasi. */
//request.setAppId("app-100****");
/* Wilayah tempat ApsaraVideo VOD diaktifkan. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah tempat instance ECS di-deploy. */
// request.setEcsRegionId("cn-shanghai");
// Jika wilayah tempat instance ECS di-deploy sama dengan wilayah tempat ApsaraVideo VOD diaktifkan, fitur unggahan jaringan internal akan diaktifkan secara otomatis.
/* Opsional. Pengaturan proksi. */
//OSSConfig ossConfig = new OSSConfig();
/* Diperlukan. Alamat host server proksi. */
//ossConfig.setProxyHost("<yourproxyhost id="931d2dc6b554o">");
/* Diperlukan. Nomor port server proksi. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* Agen pengguna, yang merupakan header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<youruseragent id="185a918e9anpj">");
/* Nama pengguna yang digunakan untuk otentikasi server proksi. Parameter ini diperlukan jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("<yourproxyusername id="c3ae4f707fzbz">");
/* Kata sandi yang digunakan untuk otentikasi server proksi. Parameter ini diperlukan jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("<yourproxypassword id="2aba451bda0h7">");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadStreamResponse response = uploader.uploadStream(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ID permintaan yang dikirim ke ApsaraVideo VOD.
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else { // Jika URL panggilan balik tidak valid, unggahan tidak akan terpengaruh, dan layanan akan mengembalikan ID video dan kode kesalahan. Dalam kasus lain, jika unggahan gagal, tidak ada ID video yang dikembalikan, dan Anda harus memecahkan masalah berdasarkan kode kesalahan.
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
}File M3U8
Kode contoh
");
/* Wajib. Nomor port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("");
/* Username yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("");
/* Password yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("");
//request.setOssConfig(ossConfig);
UploadM3u8FileImpl uploadM3u8File = new UploadM3u8FileImpl();
UploadLocalM3u8Response uploadLocalM3u8Response = uploadM3u8File.uploadLocalM3u8(request);
System.out.println("code = " + uploadLocalM3u8Response.getCode());
System.out.println("message = " + uploadLocalM3u8Response.getMessage());
System.out.println("videoId = " + uploadLocalM3u8Response.getVideoId());
System.out.println("requestId = " + uploadLocalM3u8Response.getRequestId());
}
/**
* Mengunggah file audio atau video M3U8 online ke ApsaraVideo VOD. Metode ini pertama-tama mengunduh file ke direktori lokal sementara, lalu mengunggahnya ke penyimpanan ApsaraVideo VOD. Pastikan disk lokal memiliki ruang yang cukup.
*
* @param request Permintaan untuk mengunggah file M3U8 online.
* m3u8FileURL: URL file indeks M3U8 online. Path file TS dalam file M3U8 harus relatif. Path tersebut tidak boleh berisi URL atau path lokal absolut.
* sliceFileURLs: Daftar URL file TS. Anda harus menyusun URL file TS tersebut.
*/
private static void testUploadWebM3u8(String accessKeyId, String accessKeySecret) {
String title = "test_upload_web_m3u8";
String m3u8FileURL = "http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-538087dcf2c201c31ce4324bf76af69****.m3u8";
UploadWebM3u8Request request = new UploadWebM3u8Request(accessKeyId, accessKeySecret, title, m3u8FileURL);
String[] sliceFileURLs = new String[]{
"http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
"http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
"http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
"http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
"http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts"
};
// Opsional. URL file TS. Jika Anda tidak menentukan parameter ini, URL file TS diperoleh dengan melakukan penguraian terhadap parameter m3u8FileURL.
request.setSliceFileURLs(sliceFileURLs);
/* Direktori penyimpanan sementara untuk file yang diunduh. Anda dapat menentukan direktori khusus. Jika tidak ditentukan, file akan disimpan di direktori kerja saat ini. */
// request.setGlobalLocalFilePath("/User/download/");
/* Ukuran bagian untuk unggah multi-bagian. Nilai default: 2 MB. */
request.setPartSize(2 * 1024 * 1024L);
/* Jumlah thread konkuren untuk unggah multi-bagian. Nilai default: 1. Parameter ini memengaruhi konsumsi CPU. Atur nilai ini sesuai dengan konfigurasi server Anda. */
request.setTaskNum(1);
/* Opsional. Menentukan apakah akan menambahkan Watermark. Jika Anda menentukan ID kelompok templat, pengaturan Watermark dalam kelompok templat tersebut yang berlaku. */
//request.setShowWaterMark(true);
/* Opsional. Pengaturan kustom, pengaturan callback pesan, dan pengaturan akselerasi unggah. Extend menentukan pengaturan kustom, MessageCallback menentukan pengaturan callback pesan, dan AccelerateConfig menentukan pengaturan akselerasi unggah. Fitur akselerasi unggah hanya dapat digunakan setelah Anda mengaktifkannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* Opsional. ID kategori video. */
//request.setCateId(-1L);
/* Opsional. Tag video. Pisahkan beberapa tag dengan koma (,). */
//request.setTags("Tag1,Tag2");
/* Opsional. Deskripsi video. */
//request.setDescription("Video description");
/* Opsional. URL gambar mini. */
//request.setCoverURL("http://cover.example.com/sample.jpg");
/* Opsional. ID kelompok templat. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* Opsional. ID alur kerja. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("in-2017032321****-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
/* ID aplikasi. */
//request.setAppId("app-100****");
/* Wilayah tempat ApsaraVideo VOD diaktifkan. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah tempat Instance ECS ditempatkan. */
// request.setEcsRegionId("cn-shanghai");
/* Opsional. Pengaturan proxy. */
//OSSConfig ossConfig = new OSSConfig();
/* Wajib. Alamat host server proxy. */
//ossConfig.setProxyHost("");
/* Wajib. Nomor port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("");
/* Username yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("");
/* Password yang digunakan untuk otentikasi server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("");
//request.setOssConfig(ossConfig);
UploadM3u8FileImpl uploadM3u8File = new UploadM3u8FileImpl();
UploadWebM3u8Response uploadWebM3u8Response = uploadM3u8File.uploadWebM3u8(request);
System.out.println("code = " + uploadWebM3u8Response.getCode());
System.out.println("message = " + uploadWebM3u8Response.getMessage());
System.out.println("videoId = " + uploadWebM3u8Response.getVideoId());
System.out.println("requestId = " + uploadWebM3u8Response.getRequestId());
}
} public class UploadVideoDemo {
// Wajib: Tentukan Pasangan Kunci Akses Anda.
// Pasangan Kunci Akses dari Akun Alibaba Cloud dapat mengakses semua API. Kami menyarankan agar Anda menggunakan Pengguna RAM untuk akses API atau O&M rutin.
// Jangan menyematkan ID AccessKey dan Rahasia AccessKey secara langsung dalam proyek Anda. Jika tidak, Pasangan Kunci Akses tersebut dapat bocor dan semua sumber daya dalam akun Anda dapat terpapar risiko.
// Dalam contoh ini, Pasangan Kunci Akses diperoleh dari variabel lingkungan. Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
public static void main(String[] args) {
// Unggah file M3U8.
// 1. Unggah file audio atau video M3U8 lokal.
testUploadLocalM3u8(accessKeyId, accessKeySecret);
// 2. Unggah file audio atau video M3U8 online.
testUploadWebM3u8(accessKeyId, accessKeySecret);
}
/**
* Mengunggah file audio atau video M3U8 lokal ke ApsaraVideo VOD. Secara default, file M3U8 dan file TS-nya berada dalam direktori yang sama. Jika sliceFilenames tidak ditentukan, jalur file TS diurai dari file M3U8.
*
* @param request Permintaan untuk mengunggah file M3U8 lokal.
* m3u8Filename: Jalur mutlak file indeks M3U8 lokal. Jalur file TS dalam file M3U8 harus relatif. Jalur ini tidak boleh berisi URL atau jalur lokal absolut.
* sliceFilenames: Daftar jalur mutlak file TS. Jika Anda menentukan parameter ini, jalur yang ditentukan akan digunakan. Jika Anda tidak menentukan parameter ini, file M3U8 yang ditentukan oleh m3u8Filename akan diurai.
*/
private static void testUploadLocalM3u8(String accessKeyId, String accessKeySecret) {
String title = "test_upload_local_m3u8";
String m3u8Filename = "/Users/test/0e9ecfc6da934d1887ed7bdfc925****/cc38da35c7b24de0abe58619cdd7****-6479a12446b994719838e0307f****-ld.m3u8";
UploadLocalM3u8Request request = new UploadLocalM3u8Request(accessKeyId, accessKeySecret, title, m3u8Filename);
String[] sliceFilenames = new String[]{
"/Users/test/0e9ecfc6da934d1887ed7bdfc925****/slices/cc38da35c7b24de0abe58619cdd7****-c45797a1ad6e75fbb9d1a8493703****-ld-00001.ts",
"/Users/test/0e9ecfc6da934d1887ed7bdfc925****/slices/cc38da35c7b24de0abe58619cdd7****-c45797a1ad6e75fbb9d1a8493703****-ld-00002.ts",
"/Users/test/0e9ecfc6da934d1887ed7bdfc925****/slices/cc38da35c7b24de0abe58619cdd7****-c45797a1ad6e75fbb9d1a8493703****-ld-00003.ts",
"/Users/test/0e9ecfc6da934d1887ed7bdfc925****/slices/cc38da35c7b24de0abe58619cdd7****-c45797a1ad6e75fbb9d1a8493703****-ld-00004.ts",
"/Users/test/0e9ecfc6da934d1887ed7bdfc925****/slices/cc38da35c7b24de0abe58619cdd7****-c45797a1ad6e75fbb9d1a8493703****-ld-00005.ts"
};
// Opsional. Daftar jalur mutlak untuk file TS. Jika Anda tidak menentukan parameter ini, jalur file TS diperoleh dengan mengurai file M3U8.
request.setSliceFilenames(sliceFilenames);
/* Ukuran bagian untuk unggah multi-bagian. Nilai default: 2 MB. */
request.setPartSize(2 * 1024 * 1024L);
/* Jumlah thread konkuren untuk unggah multi-bagian. Nilai default: 1. Parameter ini memengaruhi konsumsi CPU. Atur nilai ini berdasarkan konfigurasi server Anda. */
request.setTaskNum(1);
/* Opsional. Menentukan apakah akan menambahkan Watermark. Jika Anda menentukan ID grup templat, pengaturan Watermark dalam grup templat yang berlaku. */
//request.setShowWaterMark(true);
/* Opsional. Pengaturan kustom, pengaturan callback pesan, dan pengaturan akselerasi unggah. Extend menentukan pengaturan kustom, MessageCallback menentukan pengaturan callback pesan, dan AccelerateConfig menentukan pengaturan akselerasi unggah. Anda hanya dapat menggunakan fitur akselerasi unggah setelah mengaktifkannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* Opsional. ID kategori video. */
//request.setCateId(-1L);
/* Opsional. Tag video. Pisahkan beberapa tag dengan koma (,). */
//request.setTags("Tag1,Tag2");
/* Opsional. Deskripsi video. */
//request.setDescription("Video description");
/* Opsional. URL Gambar mini. */
//request.setCoverURL("http://cover.sample.com/sample.jpg");
/* Opsional. ID grup templat. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* Opsional. ID alur kerja. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* ID aplikasi. */
// request.setAppId("app-1000000");
/* Wilayah tempat ApsaraVideo VOD diaktifkan. */
// request.setApiRegionId("cn-shanghai");
/* Wilayah tempat Instance ECS dideploy. */
// request.setEcsRegionId("cn-shanghai");
/* Opsional. Pengaturan proxy. */
//OSSConfig ossConfig = new OSSConfig();
/* Wajib. Alamat host Server proxy. */
//ossConfig.setProxyHost("<yourproxyhost>");
/* Wajib. Nomor port Server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<youruseragent>");
/* Username yang digunakan untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("<yourproxyusername>");
/* Password yang digunakan untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("<yourproxypassword>");
//request.setOssConfig(ossConfig);
UploadM3u8FileImpl uploadM3u8File = new UploadM3u8FileImpl();
UploadLocalM3u8Response uploadLocalM3u8Response = uploadM3u8File.uploadLocalM3u8(request);
System.out.println("code = " + uploadLocalM3u8Response.getCode());
System.out.println("message = " + uploadLocalM3u8Response.getMessage());
System.out.println("videoId = " + uploadLocalM3u8Response.getVideoId());
System.out.println("requestId = " + uploadLocalM3u8Response.getRequestId());
}
/**
* Mengunggah file audio atau video M3U8 online ke ApsaraVideo VOD. Metode ini pertama-tama mengunduh file ke direktori lokal sementara lalu mengunggah file tersebut ke penyimpanan ApsaraVideo VOD. Pastikan disk lokal memiliki ruang yang cukup.
*
* @param request Permintaan untuk mengunggah file M3U8 online.
* m3u8FileURL: URL file indeks M3U8 online. Jalur file TS dalam file M3U8 harus relatif. Jalur ini tidak boleh berisi URL atau jalur lokal absolut.
* sliceFileURLs: Daftar URL file TS. Anda harus membuat URL file TS tersebut.
*/
private static void testUploadWebM3u8(String accessKeyId, String accessKeySecret) {
String title = "test_upload_web_m3u8";
String m3u8FileURL = "http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-538087dcf2c201c31ce4324bf76af69****.m3u8";
UploadWebM3u8Request request = new UploadWebM3u8Request(accessKeyId, accessKeySecret, title, m3u8FileURL);
String[] sliceFileURLs = new String[]{
"http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
"http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
"http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
"http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
"http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts"
};
// Opsional. URL file TS. Jika Anda tidak menentukan parameter ini, URL file TS diperoleh dengan mengurai parameter m3u8FileURL.
request.setSliceFileURLs(sliceFileURLs);
/* Direktori penyimpanan sementara untuk file yang diunduh. Anda dapat menentukan direktori kustom. Jika Anda tidak menentukan parameter ini, file disimpan ke direktori kerja saat ini. */
// request.setGlobalLocalFilePath("/User/download/");
/* Ukuran bagian untuk unggah multi-bagian. Nilai default: 2 MB. */
request.setPartSize(2 * 1024 * 1024L);
/* Jumlah thread konkuren untuk unggah multi-bagian. Nilai default: 1. Parameter ini memengaruhi konsumsi CPU. Atur nilai ini berdasarkan konfigurasi server Anda. */
request.setTaskNum(1);
/* Opsional. Menentukan apakah akan menambahkan Watermark. Jika Anda menentukan ID grup templat, pengaturan Watermark dalam grup templat yang berlaku. */
//request.setShowWaterMark(true);
/* Opsional. Pengaturan kustom, pengaturan callback pesan, dan pengaturan akselerasi unggah. Extend menentukan pengaturan kustom, MessageCallback menentukan pengaturan callback pesan, dan AccelerateConfig menentukan pengaturan akselerasi unggah. Anda hanya dapat menggunakan fitur akselerasi unggah setelah mengaktifkannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* Opsional. ID kategori video. */
//request.setCateId(-1L);
/* Opsional. Tag video. Pisahkan beberapa tag dengan koma (,). */
//request.setTags("Tag1,Tag2");
/* Opsional. Deskripsi video. */
//request.setDescription("Video description");
/* Opsional. URL Gambar mini. */
//request.setCoverURL("http://cover.example.com/sample.jpg");
/* Opsional. ID grup templat. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* Opsional. ID alur kerja. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("in-2017032321****-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
/* ID aplikasi. */
//request.setAppId("app-100****");
/* Wilayah tempat ApsaraVideo VOD diaktifkan. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah tempat Instance ECS dideploy. */
// request.setEcsRegionId("cn-shanghai");
/* Opsional. Pengaturan proxy. */
//OSSConfig ossConfig = new OSSConfig();
/* Wajib. Alamat host Server proxy. */
//ossConfig.setProxyHost("<yourproxyhost>");
/* Wajib. Nomor port Server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<youruseragent>");
/* Username yang digunakan untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("<yourproxyusername>");
/* Password yang digunakan untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("<yourproxypassword>");
//request.setOssConfig(ossConfig);
UploadM3u8FileImpl uploadM3u8File = new UploadM3u8FileImpl();
UploadWebM3u8Response uploadWebM3u8Response = uploadM3u8File.uploadWebM3u8(request);
System.out.println("code = " + uploadWebM3u8Response.getCode());
System.out.println("message = " + uploadWebM3u8Response.getMessage());
System.out.println("videoId = " + uploadWebM3u8Response.getVideoId());
System.out.println("requestId = " + uploadWebM3u8Response.getRequestId());
}
}Akselerasi unggah
Untuk file besar (GB atau TB) atau unggah cross-region (misalnya, dari Tiongkok daratan ke wilayah penyimpanan Singapore), aktifkan akselerasi unggah. Aktifkan akselerasi unggah. Setelah diaktifkan, tambahkan pasangan kunci-nilai AccelerateConfig key-value ke objek UserData dalam konfigurasi unggah. Buat objek UserData jika belum ada. Contoh:
request.setUserData("{\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
Parameter
|
Parameter |
Tipe |
Deskripsi |
|
Type |
String |
Layanan tempat akselerasi unggah diaktifkan. Tetapkan nilai ini ke |
|
Domain |
String |
Titik akhir terakselerasi bucket Anda. Protokol default adalah HTTPS. Catatan
Gunakan titik akhir terakselerasi yang diberikan setelah Anda mengaktifkan fitur ini, seperti |
Skenario 2: Unggah gambar
Tampilkan kode contoh
public class UploadImageDemo {
// Wajib. Pasangan Kunci Akses Akun Alibaba Cloud Anda.
// Pasangan Kunci Akses Akun Alibaba Cloud dapat mengakses semua API. Kami menyarankan agar Anda menggunakan Pengguna RAM untuk akses API atau operasi rutin.
// Kami sangat menyarankan agar Anda tidak menyematkan ID AccessKey dan Rahasia AccessKey Anda secara langsung dalam kode proyek Anda. Hal ini dapat membocorkan kredensial Anda dan mengompromikan keamanan semua sumber daya dalam akun Anda.
// Contoh ini memperoleh Pasangan Kunci Akses dari variabel lingkungan. Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
public static void main(String[] args) {
// Unggah gambar.
// 1. Unggah gambar dari file lokal.
testUploadImageLocalFile(accessKeyId, accessKeySecret);
// 2. Unggah gambar menggunakan aliran file atau jaringan.
testUploadImageStream(accessKeyId, accessKeySecret);
}
/**
* Mengunggah gambar dari file lokal.
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadImageLocalFile(String accessKeyId, String accessKeySecret) {
/* Wajib. Jenis gambar. Nilai valid: default, cover, dan watermark. */
String imageType = "cover";
UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType);
request.setImageType("cover");
/* Opsional. Ekstensi file gambar. Nilai valid: png, jpg, dan jpeg. */
//request.setImageExt("png");
/* Opsional. Judul gambar. Judul harus dalam UTF-8 dan tidak boleh melebihi 128 byte. */
//request.setTitle("Image title");
/* Opsional. Tag gambar. Anda dapat menambahkan hingga 16 tag, dipisahkan dengan koma (,). Setiap tag harus dalam UTF-8 dan tidak boleh melebihi 32 byte. */
//request.setTags("Tag1,Tag2");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("out-4f3952f78c0211e8b30200****.oss-cn-shanghai.aliyuncs.com");
/* Untuk unggah streaming, parameter InputStream wajib. Parameter fileName (nama file sumber) opsional. Contoh: filename.png. */
String fileName = "/Users/demo/png/test.png";
request.setFileName(fileName);
/* Mengaktifkan callback progres unggah default. */
//request.setPrintProgress(false);
/* Menetapkan callback progres unggah kustom. Anda harus mewarisi dari VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika diaktifkan, server mencatat detail unggah selama proses unggah. Nonaktifkan fitur ini jika Anda tidak memerlukan log tersebut. */
// request.setProgressListener(new PutObjectProgressListener());
/* Opsional. ID aplikasi. */
//request.setAppId("app-100****");
/* ID wilayah untuk titik akses ApsaraVideo VOD. */
//request.setApiRegionId("cn-shanghai");
/* Opsional. Konfigurasikan proxy. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Alamat host Server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port Server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* Header User-Agent untuk permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("<yourProxyPassword>");
//request.setOssConfig(ossConfig);
UploadImageImpl uploadImage = new UploadImageImpl();
UploadImageResponse response = uploadImage.upload(request);
System.out.print("RequestId=" + response.getRequestId() + "\n");
if (response.isSuccess()) {
System.out.print("ImageId=" + response.getImageId() + "\n");
System.out.print("ImageURL=" + response.getImageURL() + "\n");
} else {
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* Mengunggah gambar dari aliran. Metode ini mendukung aliran file maupun jaringan.
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadImageStream(String accessKeyId, String accessKeySecret) {
/* Wajib. Jenis gambar. Nilai valid: default, cover, dan watermark. */
String imageType = "cover";
UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType);
/* Opsional. Ekstensi file gambar. Nilai valid: png, jpg, dan jpeg. */
//request.setImageExt("png");
/* Opsional. Judul gambar. Judul harus dalam UTF-8 dan tidak boleh melebihi 128 byte. */
//request.setTitle("Image title");
/* Opsional. Tag gambar. Anda dapat menambahkan hingga 16 tag, dipisahkan dengan koma (,). Setiap tag harus dalam UTF-8 dan tidak boleh melebihi 32 byte. */
//request.setTags("Tag1,Tag2");
/* Opsional. Lokasi penyimpanan. */
//request.setStorageLocation("out-4f3952f78c0211e8b30200****.oss-cn-shanghai.aliyuncs.com");
/* Untuk unggah streaming, parameter InputStream wajib. Parameter fileName (nama file sumber) opsional. Contoh: filename.png. */
//request.setFileName("Test file name.png");
/* Mengaktifkan callback progres unggah default. */
// request.setPrintProgress(true);
/* Menetapkan callback progres unggah kustom. Anda harus mewarisi dari VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika diaktifkan, server mencatat detail unggah selama proses unggah. Nonaktifkan fitur ini jika Anda tidak memerlukan log tersebut. */
// request.setProgressListener(new PutObjectProgressListener());
/* Opsional. ID aplikasi. */
//request.setAppId("app-1000000");
/* Opsional. Konfigurasikan proxy. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Alamat host Server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port Server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* Header User-Agent untuk permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("<yourProxyPassword>");
//request.setOssConfig(ossConfig);
// 1. Unggah aliran file.
// InputStream fileStream = getFileStream(request.getFileName());
// if (fileStream != null) {
// request.setInputStream(fileStream);
// }
// 2. Unggah aliran jaringan.
String url = "http://test.aliyun.com/image/default/test.png";
InputStream urlStream = getUrlStream(url);
if (urlStream != null) {
request.setInputStream(urlStream);
}
// Mulai unggah gambar.
UploadImageImpl uploadImage = new UploadImageImpl();
UploadImageResponse response = uploadImage.upload(request);
System.out.print("RequestId=" + response.getRequestId() + "\n");
if (response.isSuccess()) {
System.out.print("ImageId=" + response.getImageId() + "\n");
System.out.print("ImageURL=" + response.getImageURL() + "\n");
} else {
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
private static InputStream getFileStream(String fileName) {
try {
return new FileInputStream(fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
private static InputStream getUrlStream(String url) {
try {
return new URL(url).openStream();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
} Skenario 3: Unggah aset media pendukung
Kode contoh
public class UploadAttachedMediaDemo {
// Wajib. Pasangan Kunci Akses akun Anda.
// Pasangan Kunci Akses untuk Akun Alibaba Cloud memberikan akses penuh ke semua operasi API. Kami menyarankan menggunakan Pengguna RAM untuk akses API dan O&M rutin.
// Untuk mencegah kebocoran, jangan menyematkan ID AccessKey dan Rahasia AccessKey Anda secara langsung dalam proyek Anda. Pasangan Kunci Akses yang bocor dapat mengompromikan keamanan semua sumber daya dalam akun Anda.
// Contoh ini mengambil Pasangan Kunci Akses dari variabel lingkungan untuk verifikasi identitas. Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dan ALIBABA_CLOUD_ACCESS_KEY_SECRET.
private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
public static void main(String[] args) {
// Unggah aset media pendukung.
// Unggah aset media pendukung dari file lokal.
testUploadAttachedMediaLocalFile(accessKeyId, accessKeySecret);
// Unggah aset media pendukung menggunakan unggah streaming (aliran file dan jaringan).
testUploadAttachedMediaStream(accessKeyId, accessKeySecret);
}
/**
* Mengunggah aset media pendukung lokal.
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadAttachedMediaLocalFile(String accessKeyId, String accessKeySecret) {
/* Jenis bisnis. */
String businessType = "watermark";
/* Ekstensi nama file. */
String mediaExt = "png";
String filename = "/Users/demo/png/test.png";
UploadAttachedMediaRequest request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt);
request.setFileName(filename);
/* Judul. */
request.setTitle("test_attached_media");
/* ID kategori. */
request.setCateId(-1L);
/* Opsional. Tag. Pisahkan beberapa tag dengan koma. */
request.setTags("tag1,tag2");
/* Opsional. Deskripsi. */
request.setDescription("test_desc");
/* Opsional. Lokasi penyimpanan. */
request.setStorageLocation("out-20170323225118266-5l3hs5****.oss-cn-shanghai.aliyuncs.com");
/* Wilayah akses ApsaraVideo VOD. */
request.setApiRegionId("cn-shanghai");
/* ID aplikasi. */
//request.setAppId("app-1000000");
/* Opsional. Konfigurasikan proxy. */
//OSSConfig ossConfig = new OSSConfig();
/* Wajib. Host proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* Wajib. Port proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* Header User-Agent untuk permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("<yourProxyPassword>");
//request.setOssConfig(ossConfig);
UploadAttachedMediaImpl uploader = new UploadAttachedMediaImpl();
UploadAttachedMediaResponse response = uploader.upload(request);
System.out.print("RequestId=" + response.getRequestId() + "\n");
if (response.isSuccess()) {
System.out.print("MediaId=" + response.getMediaId() + "\n");
System.out.print("MediaURL=" + response.getMediaURL() + "\n");
System.out.print("FileURL=" + response.getFileURL() + "\n");
} else {
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* Mengunggah aset media pendukung menggunakan unggah streaming. Metode ini mendukung aliran file dan jaringan.
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadAttachedMediaStream(String accessKeyId, String accessKeySecret) {
/* Jenis bisnis. */
String businessType = "watermark";
/* Ekstensi nama file. */
String mediaExt = "png";
String filename = "http://test.aliyun.com/test.png";
UploadAttachedMediaRequest request;
// 1. Unggah dari aliran file.
InputStream fileStream = getFileStream(filename);
request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt);
request.setInputStream(fileStream);
// 2. Unggah dari aliran jaringan.
// String url = "http://test.aliyun.com/image//test.png";
// InputStream urlStream = getUrlStream(url);
// request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt);
// request.setInputStream(urlStream);
/* Judul. */
request.setTitle("test_attached_media");
/* ID kategori. */
request.setCateId(-1L);
/* Opsional. Tag. Pisahkan beberapa tag dengan koma. */
request.setTags("tag1,tag2");
/* Opsional. Deskripsi. */
request.setDescription("test_desc");
/* Opsional. Lokasi penyimpanan. */
request.setStorageLocation("out-20170323225118266-5l3****wa.oss-cn-shanghai.aliyuncs.com");
/* Wilayah akses ApsaraVideo VOD. */
request.setApiRegionId("cn-shanghai");
/* ID aplikasi. */
// request.setAppId("app-1000000");
/* Opsional. Konfigurasikan proxy. */
//OSSConfig ossConfig = new OSSConfig();
/* Wajib. Host proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* Wajib. Port proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk terhubung ke OSS. Nilai valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* Header User-Agent untuk permintaan HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi Server proxy. Parameter ini wajib jika Anda menggunakan protokol HTTPS. */
//ossConfig.setProxyPassword("<yourProxyPassword>");
//request.setOssConfig(ossConfig);
// Mulai unggah.
UploadAttachedMediaImpl uploader = new UploadAttachedMediaImpl();
UploadAttachedMediaResponse response = uploader.upload(request);
System.out.print("RequestId=" + response.getRequestId() + "\n");
if (response.isSuccess()) {
System.out.print("MediaId=" + response.getMediaId() + "\n");
System.out.print("MediaURL=" + response.getMediaURL() + "\n");
System.out.print("FileURL=" + response.getFileURL() + "\n");
} else {
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
private static InputStream getFileStream(String fileName) {
try {
return new FileInputStream(fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
private static InputStream getUrlStream(String url) {
try {
return new URL(url).openStream();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}Fitur lanjutan
-
Bilah progres unggah
File
PutObjectProgressListener.javadalam direktorisamplemenyediakan implementasi callback progres unggah.Kelas ini mengimplementasikan antarmuka
VoDProgressListener. ObjekProgressEventmelaporkan progres unggah file ke OSS, dan Anda dapat menambahkan logika kustom untuk setiap event.Kode berikut memberikan contohnya.
Tampilkan kode contoh
/** * Implementasi listener untuk callback progres unggah. * Callback ini dipanggil hanya jika Anda mengaktifkan notifikasi progres unggah. * Event callback dipicu ketika unggah multi-bagian ke OSS berhasil atau gagal. Anda dapat mengimplementasikan logika kustom untuk menangani event tersebut. * Saat mengunggah file audio atau video, callback ini menyediakan `videoId`, yang dapat Anda gunakan untuk mengelola file tersebut. * Saat mengunggah gambar, callback ini menyediakan `imageId`, yang dapat Anda gunakan untuk mengelola gambar tersebut. */ public class PutObjectProgressListener implements VoDProgressListener { /** * Jumlah byte yang telah berhasil diunggah ke OSS. */ private long bytesWritten = 0; /** * Ukuran total file sumber dalam byte. */ private long totalBytes = -1; /** * Menunjukkan apakah unggah berhasil diselesaikan. */ private boolean succeed = false; /** * ID video. */ private String videoId; /** * ID gambar. */ private String imageId; public void progressChanged(ProgressEvent progressEvent) { long bytes = progressEvent.getBytes(); ProgressEventType eventType = progressEvent.getEventType(); switch (eventType) { // Menunjukkan bahwa unggah dimulai. case TRANSFER_STARTED_EVENT: if (videoId != null) { System.out.println("Mulai mengunggah videoId "+videoId+"......"); } if (imageId != null) { System.out.println("Mulai mengunggah imageId "+imageId+"......"); } break; // Menyediakan ukuran total file yang akan diunggah. Event ini hanya didukung untuk unggah file lokal. case REQUEST_CONTENT_LENGTH_EVENT: this.totalBytes = bytes; System.out.println(this.totalBytes + " byte secara total akan diunggah ke OSS."); break; // Menunjukkan jumlah byte yang telah ditransfer. case REQUEST_BYTE_TRANSFER_EVENT: this.bytesWritten += bytes; if (this.totalBytes != -1) { int percent = (int) (this.bytesWritten * 100.0 / this.totalBytes); System.out.println(bytes+" byte telah ditulis saat ini, progres unggah: "+ percent +"%(" + this.bytesWritten + "/" + this.totalBytes + ")"); } else { System.out.println(bytes + " byte telah ditulis saat ini, sub total unggah : " + "(" + this.bytesWritten + ")"); } break; // Menunjukkan bahwa transfer selesai. case TRANSFER_COMPLETED_EVENT: this.succeed = true; if (videoId != null) { System.out.println("Berhasil mengunggah videoId " + videoId + " , " + this.bytesWritten + " byte telah ditransfer secara total."); } if (imageId != null) { System.out.println("Berhasil mengunggah imageId " + imageId + " , " + this.bytesWritten + " byte telah ditransfer secara total."); } break; // Menunjukkan bahwa transfer gagal. case TRANSFER_FAILED_EVENT: if (videoId != null) { System.out.println("Gagal mengunggah videoId " + videoId + " , " + this.bytesWritten + " byte telah ditransfer."); } if (imageId != null) { System.out.println("Gagal mengunggah imageId " + imageId + " , " + this.bytesWritten + " byte telah ditransfer."); } break; default: break; } } public boolean isSucceed() { return succeed; } public void onVidReady(String videoId) { setVideoId(videoId); } public void onImageIdReady(String imageId) { setImageId(imageId); } public String getVideoId() { return videoId; } public void setVideoId(String videoId) { this.videoId = videoId; } public String getImageId() { return imageId; } public void setImageId(String imageId) { this.imageId = imageId; } } -
Perbarui token sementara
File
RefreshSTSTokenImpl.javadalam direktorisamplemenunjukkan cara memperbarui token sementara.Kode berikut memberikan contohnya.
Tampilkan kode contoh
/** * @author vod * Implementasi yang mengambil token sementara dari Security Token Service (STS). * @date 2019/6/5 */ public class RefreshSTSTokenImpl implements VoDRefreshSTSTokenListener { public STSTokenDTO onRefreshSTSToken() { STSTokenDTO stsTokenDTO = new STSTokenDTO(); stsTokenDTO.setAccessKeyId("<Your STS AccessKeyId>"); stsTokenDTO.setAccessKeySecret("<Your STS AccessKeySecret>"); stsTokenDTO.setSecurityToken("<Your STS SecurityToken>"); return stsTokenDTO; } }
FAQ
Masalah 1: Error dependensi yang hilang
-
Dalam proyek Maven Anda, klik Maven di sebelah kanan, klik ikon m, lalu masukkan
mvn idea:moduleuntuk memuat ulang sumber daya. -
Di bilah menu atas, pilih Build > Rebuild Project.
-
Salin aliyun-java-vod-upload-1.4.15.jar ke direktori resources proyek Anda dan tambahkan dependensi Maven lokal:
<dependency> <groupId>com.aliyun.vod</groupId> <artifactId>upload</artifactId> <version>1.4.15</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/aliyun-java-vod-upload-1.4.15.jar</systemPath> </dependency>Contoh dependensi Maven setelah menambahkan dependensi lokal.
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.1</version> </dependency> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-vod</artifactId> <version>2.16.11</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.68.noneautotype</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20170516</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.2</version> </dependency> <dependency> <groupId>com.aliyun.vod</groupId> <artifactId>upload</artifactId> <version>1.4.15</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/aliyun-java-vod-upload-1.4.15.jar</systemPath> </dependency>