Topik ini menyediakan contoh cara menggunakan server-side upload SDK untuk Java guna mengunggah berbagai file media ke penyimpanan ApsaraVideo VOD.
Ikhtisar
Upload SDK untuk Java mengikuti proses umum yang sama seperti SDK sisi server ApsaraVideo VOD lainnya. Untuk informasi selengkapnya, lihat Proses upload. Langkah-langkah dasar untuk menggunakan Upload SDK untuk Java adalah sebagai berikut:
Lengkapi prasyarat. Untuk informasi selengkapnya, lihat Prasyarat.
Integrasikan Upload SDK untuk Java. Untuk informasi selengkapnya, lihat Integrasikan Upload SDK untuk Java.
Implementasikan logika upload. Langkah ini terutama melibatkan konfigurasi informasi upload.
Untuk mengunggah file audio dan video, lihat Skenario 1: Upload file audio dan video.
Untuk mengunggah gambar, lihat Skenario 2: Upload gambar.
Untuk mengunggah aset media pendukung, lihat Skenario 3: Upload aset media pendukung.
Untuk fitur lanjutan lainnya, lihat Fitur Lanjutan.
Prasyarat
ApsaraVideo VOD telah diaktifkan. Untuk informasi selengkapnya, lihat Aktifkan ApsaraVideo VOD.
Pengaturan sistem yang diperlukan untuk upload, 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 AccessKey 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 AccessKey pair 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 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 semua resource dalam akun Anda akan terganggu.
Opsional. Buat peran 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 upload SDK untuk Java
Topik ini menggunakan Java 1.8 atau versi yang lebih baru serta Upload SDK untuk Java V1.4.15 untuk menjelaskan langkah-langkah integrasi. Anda dapat menggunakan versi lain sesuai kebutuhan. Upload SDK tidak mendukung integrasi dependensi. Anda harus mengunduh dan mengimpor paket JAR. Jika mengalami masalah selama integrasi, lihat FAQ.
Unduh Upload SDK untuk Java dan kode contoh.
Versi SDK: 1.4.15
Waktu pembaruan: 2022-11-03
Alamat unduhan: SDK dan kode sumber demo V1.4.15
Ekstrak SDK Upload Java dan kode contoh.
Paket VODUploadDemo-java-1.4.15.zip digunakan dalam contoh ini. Setelah mengekstrak paket tersebut, subfolder berikut akan dibuat:
lib: menyimpan paket JAR yang diperlukan oleh Upload SDK untuk Java.sample: menyimpan kode contoh Upload SDK untuk Java.
Impor paket JAR.
Jika Anda menggunakan Eclipse, klik kanan proyek Anda dan pilih Properties > Java Build Path > Add JARs. Arahkan ke folder VODUploadDemo-java-1.4.15 yang telah diekstrak dan tambahkan semua file jar dari direktori
libke proyek Anda.Jika Anda menggunakan IntelliJ IDEA, buka proyek Anda dan pilih File > Project Structure > Modules. Pada tab Dependencies, klik ikon + dan pilih JARs or directories. Arahkan ke folder VODUploadDemo-java-1.4.15 yang telah diekstrak dan tambahkan semua file jar dari direktori
libke proyek Anda.
PentingSetelah mengimpor paket JAR, Anda juga harus mengonfigurasi dependensi.
Anda dapat menambahkan dependensi, seperti Alibaba Cloud SDK untuk Java, OSS SDK, ApsaraVideo VOD SDK, dan ApsaraVideo VOD server-side upload SDK.
PentingAnda harus mengimpor semua dependensi di atas. Jika tidak, integrasi akan gagal.
Jika Anda menggunakan paket JAR terbaru (aliyun-java-vod-upload-1.4.15.jar), pastikan versi aliyun-sdk-oss adalah 3.9.0 atau lebih baru dan versi aliyun-java-sdk-vod adalah 2.16.11 atau lebih baru.
ApsaraVideo VOD tersedia di wilayah Tiongkok (Shanghai), Tiongkok (Shenzhen), dan Tiongkok (Beijing) di Tiongkok daratan. Jika Anda menggunakan Upload SDK V1.4.14 atau versi sebelumnya untuk mengunggah file ke wilayah Tiongkok (Shenzhen) atau Tiongkok (Beijing), pastikan versi aliyun-java-sdk-vod adalah 2.15.11 atau lebih baru dan versi aliyun-java-sdk-core adalah 4.4.5 atau lebih baru. Jika Anda menggunakan Upload SDK V1.4.15 atau versi yang lebih baru untuk mengunggah file ke wilayah Tiongkok (Shenzhen) atau Tiongkok (Beijing), pastikan versi aliyun-java-sdk-vod adalah 2.16.11 atau lebih baru dan versi aliyun-java-sdk-core adalah 4.4.5 atau lebih baru.
Bentangkan untuk melihat 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: Upload file audio dan video
File audio dan video biasa
Anda dapat mengunggah file audio dan video dengan salah satu cara berikut:
Unggah file lokal. Metode ini menggunakan unggah multi-bagian dan mendukung unggah yang dapat dilanjutkan. Untuk informasi selengkapnya, lihat fungsi
testUploadVideodalam kode contoh.Jika unggah yang dapat dilanjutkan dinonaktifkan, tugas upload dapat berjalan maksimal selama 3.000 detik. Ukuran maksimum file yang dapat diunggah bergantung pada lebar pita jaringan dan kinerja I/O disk Anda.
Jika unggah yang dapat dilanjutkan diaktifkan, Anda dapat mengunggah satu file hingga 48,8 TB.
PentingJika Anda mengaktifkan unggah yang dapat dilanjutkan, kemajuan upload ditulis ke file disk lokal selama proses upload. Hal ini dapat memengaruhi kecepatan upload. Kami menyarankan agar Anda memutuskan apakah akan mengaktifkan fitur ini berdasarkan ukuran file.
Unggah aliran jaringan. Anda dapat menentukan URL file untuk mengunggah file. Metode ini mendukung unggah yang dapat dilanjutkan dan memungkinkan Anda mengunggah satu file hingga 48,8 TB. Metode ini memerlukan file jaringan diunduh ke disk lokal sebelum diunggah. Pastikan disk lokal Anda memiliki ruang yang cukup. Untuk informasi selengkapnya, lihat fungsi
testUploadURLStreamdalam kode contoh.Unggah aliran file. Anda dapat menentukan file lokal untuk diunggah. Metode ini tidak mendukung unggah yang dapat dilanjutkan dan memungkinkan Anda mengunggah satu file hingga 5 GB. Untuk informasi selengkapnya, lihat fungsi
testUploadFileStreamdalam kode contoh.Gunakan unggah streaming. Anda dapat menentukan input stream untuk diunggah, seperti aliran file atau aliran jaringan. Metode ini tidak mendukung unggah yang dapat dilanjutkan dan memungkinkan Anda mengunggah satu file hingga 5 GB. Untuk informasi selengkapnya, lihat fungsi
testUploadStreamdalam kode contoh.
Saat menggunakan kode contoh, Anda harus mengimpor kelas yang sesuai secara manual. Untuk mengatasi masalah, seperti dependensi tidak ditemukan selama eksekusi kode, lihat FAQ.
Bentangkan untuk melihat kode contoh
public class UploadVideoDemo {
// Wajib. Tentukan pasangan AccessKey.
// Pasangan AccessKey Akun Alibaba Cloud memiliki izin untuk mengakses semua API. Kami menyarankan agar Anda menggunakan pasangan AccessKey Pengguna RAM untuk panggilan 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 dan keamanan semua resource dalam akun Anda akan terganggu.
// Contoh ini menunjukkan cara membaca pasangan AccessKey dari variabel lingkungan untuk mengotentikasi akses API. 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 video.
// Judul video. Parameter ini wajib.
String title = "Test Title";
// 1. Untuk upload file lokal dan upload aliran file, atur nama file ke jalur mutlak file yang diunggah, misalnya /User/sample/FileName.mp4. Parameter ini wajib.
// 2. Untuk upload aliran jaringan, atur nama file ke nama file sumber, misalnya FileName.mp4. Parameter ini wajib.
// 3. Untuk unggah streaming, atur nama file ke nama file sumber, misalnya FileName.mp4. Parameter ini wajib.
// Nama file harus mencakup ekstensi nama file terlepas dari metode upload yang digunakan.
String fileName = "/Users/test/video/test.mp4";
// Unggah file lokal.
testUploadVideo(accessKeyId, accessKeySecret, title, fileName);
// URL aliran jaringan untuk video yang akan diunggah.
String url = "http://test.aliyun.com/video/test.mp4";
// 2. Unggah aliran jaringan.
// Ekstensi nama file. Jika URL tidak berisi ekstensi nama file, Anda harus mengatur parameter ini.
String fileExtension = "mp4";
testUploadURLStream(accessKeyId, accessKeySecret, title, url, fileExtension);
// 3. Unggah aliran file.
testUploadFileStream(accessKeyId, accessKeySecret, title, fileName);
// 4. Unggah streaming, seperti aliran file dan 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);
}
/**
* API untuk upload 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 setiap bagian untuk unggah multi-bagian. Nilai default: 2 MB. */
request.setPartSize(2 * 1024 * 1024L);
/* Jumlah thread konkuren untuk unggah multi-bagian. Nilai default: 1. Catatan: Konfigurasi ini mengonsumsi sumber daya CPU server. Tentukan jumlah thread berdasarkan kinerja server Anda. */
request.setTaskNum(1);
/* Menentukan apakah akan mengaktifkan unggah yang dapat dilanjutkan. Nilai default: false. Jika jaringan tidak stabil atau program crash, Anda dapat melanjutkan tugas upload dengan mengirim permintaan upload yang sama. Fitur ini cocok untuk file besar yang tidak dapat diunggah dalam waktu 3.000 detik.
Catatan: Jika Anda mengaktifkan unggah yang dapat dilanjutkan, kemajuan upload ditulis ke file disk lokal selama proses upload. Hal ini memengaruhi kecepatan upload. Pilih apakah akan mengaktifkan fitur ini sesuai kebutuhan. */
//request.setEnableCheckpoint(false);
/* Periode timeout untuk mencatat permintaan OSS lambat. Jika waktu untuk mengunggah satu bagian melebihi ambang batas ini, log debug akan dicetak. Untuk menekan log ini, sesuaikan ambang batasnya. Satuan: milidetik. Nilai default: 300000. */
//request.setSlowRequestsThreshold(300000L);
/* Ambang batas waktu untuk mencatat permintaan lambat setiap bagian. Nilai default: 300 detik. */
//request.setSlowRequestsThreshold(300000L);
/* Menentukan apakah akan menampilkan watermark. Parameter ini opsional. Jika Anda menentukan ID grup templat, watermark akan ditampilkan berdasarkan konfigurasi grup templat. */
//request.setIsShowWaterMark(true);
/* Pengaturan callback pesan kustom dan pengaturan akselerasi upload. Parameter ini opsional. Extend menentukan pengaturan ekstensi kustom. MessageCallback menentukan pengaturan callback pesan. AccelerateConfig menentukan pengaturan akselerasi upload. Anda harus mengaktifkan fitur akselerasi upload sebelum menggunakannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* ID kategori video. Parameter ini opsional. */
//request.setCateId(0);
/* Tag video. Pisahkan beberapa tag dengan koma (,). Parameter ini opsional. */
//request.setTags("Tag 1,Tag 2");
/* Deskripsi video. Parameter ini opsional. */
//request.setDescription("Video description");
/* URL gambar mini. Parameter ini opsional. */
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* ID grup templat. Parameter ini opsional. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e5****");
/* ID alur kerja. Parameter ini opsional. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Wilayah penyimpanan. Parameter ini opsional. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Mengaktifkan callback kemajuan upload default. */
//request.setPrintProgress(false);
/* Menetapkan callback kemajuan upload kustom. Callback harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika Anda mengaktifkan fitur ini, server mengembalikan detail upload dalam log selama proses upload. Jika Anda tidak perlu menerima pesan ini, nonaktifkan fitur ini. */
//request.setProgressListener(new PutObjectProgressListener());
/* Menetapkan kelas implementasi antarmuka yang digunakan untuk menghasilkan informasi STS. */
// request.setVoDRefreshSTSTokenListener(new RefreshSTSTokenImpl());
/* Menetapkan ID aplikasi. */
//request.setAppId("app-100****");
/* Titik akhir ApsaraVideo VOD. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah penerapan ECS. */
// request.setEcsRegionId("cn-shanghai");
// Jika wilayah penerapan ECS sama dengan wilayah titik akhir ApsaraVideo VOD, upload jaringan internal akan diaktifkan secara otomatis.
/* Mengonfigurasi proxy. Parameter ini opsional. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Host server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk menghubungkan ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyPassword("<yourProxyPassword>");
//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 yang ditentukan tidak valid, upload video tidak terpengaruh. VideoId dan kode kesalahan dikembalikan. Dalam kasus lain, jika upload gagal, VideoId kosong. Dalam hal ini, analisis penyebab kegagalan berdasarkan kode kesalahan yang dikembalikan. */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* Mengunggah aliran jaringan menggunakan URL. Metode ini mendukung unggah yang dapat dilanjutkan. Anda dapat mengunggah satu file hingga 48,8 TB.
* Metode ini memerlukan file jaringan diunduh ke disk lokal sebelum diunggah. Pastikan disk lokal Anda memiliki ruang yang cukup.
* Jika URL yang Anda tentukan tidak menyertakan ekstensi nama file, Anda harus mengatur 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 jaringan. Satuan: milidetik. Nilai 0 menunjukkan tanpa batas. */
request.setDownloadConnectTimeout(1000);
/* Periode timeout baca untuk mengunduh file jaringan. Satuan: milidetik. Nilai 0 menunjukkan tanpa batas. */
request.setDownloadReadTimeout(0);
/* Direktori lokal tempat file jaringan yang diunduh disimpan. */
request.setLocalDownloadFilePath("/Users/download");
/* Menentukan apakah akan menampilkan watermark. Parameter ini opsional. Jika Anda menentukan ID grup templat, watermark akan ditampilkan berdasarkan konfigurasi grup templat. */
//request.setShowWaterMark(true);
/* Pengaturan callback pesan kustom dan pengaturan akselerasi upload. Parameter ini opsional. Extend menentukan pengaturan ekstensi kustom. MessageCallback menentukan pengaturan callback pesan. AccelerateConfig menentukan pengaturan akselerasi upload. Anda harus mengaktifkan fitur akselerasi upload sebelum menggunakannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* ID kategori video. Parameter ini opsional. */
//request.setCateId(0);
/* Tag video. Pisahkan beberapa tag dengan koma (,). Parameter ini opsional. */
//request.setTags("Tag 1,Tag 2");
/* Deskripsi video. Parameter ini opsional. */
//request.setDescription("Video description");
/* URL gambar mini. Parameter ini opsional. */
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* ID grup templat. Parameter ini opsional. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* ID alur kerja. Parameter ini opsional. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Wilayah penyimpanan. Parameter ini opsional. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Mengaktifkan callback kemajuan upload default. */
//request.setPrintProgress(true);
/* Menetapkan callback kemajuan upload kustom. Callback harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika Anda mengaktifkan fitur ini, server mengembalikan detail upload dalam log selama proses upload. Jika Anda tidak perlu menerima pesan ini, nonaktifkan fitur ini. */
//request.setProgressListener(new PutObjectProgressListener());
/* Menetapkan ID aplikasi. */
//request.setAppId("app-100****");
/* Titik akhir ApsaraVideo VOD. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah penerapan ECS. */
// request.setEcsRegionId("cn-shanghai");
// Jika wilayah penerapan ECS sama dengan wilayah titik akhir ApsaraVideo VOD, upload jaringan internal akan diaktifkan secara otomatis.
/* Mengonfigurasi proxy. Parameter ini opsional. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Host server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk menghubungkan ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyPassword("<yourProxyPassword>");
//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 yang ditentukan tidak valid, upload video tidak terpengaruh. VideoId dan kode kesalahan dikembalikan. Dalam kasus lain, jika upload gagal, VideoId kosong. Dalam hal ini, analisis penyebab kegagalan berdasarkan kode kesalahan yang dikembalikan. */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* API untuk upload 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);
/* Menentukan apakah akan menggunakan watermark default. Parameter ini opsional. Jika Anda menentukan ID grup templat, watermark default akan digunakan berdasarkan konfigurasi grup templat. */
//request.setShowWaterMark(true);
/* Pengaturan callback pesan kustom dan pengaturan akselerasi upload. Parameter ini opsional. Extend menentukan pengaturan ekstensi kustom. MessageCallback menentukan pengaturan callback pesan. AccelerateConfig menentukan pengaturan akselerasi upload. Anda harus mengaktifkan fitur akselerasi upload sebelum menggunakannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* ID kategori video. Parameter ini opsional. */
//request.setCateId(0);
/* Tag video. Pisahkan beberapa tag dengan koma (,). Parameter ini opsional. */
//request.setTags("Tag 1,Tag 2");
/* Deskripsi video. Parameter ini opsional. */
//request.setDescription("Video description");
/* URL gambar mini. Parameter ini opsional. */
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* ID grup templat. Parameter ini opsional. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* ID alur kerja. Parameter ini opsional. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Wilayah penyimpanan. Parameter ini opsional. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Mengaktifkan callback kemajuan upload default. */
//request.setPrintProgress(true);
/* Menetapkan callback kemajuan upload kustom. Callback harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika Anda mengaktifkan fitur ini, server mengembalikan detail upload dalam log selama proses upload. Jika Anda tidak perlu menerima pesan ini, nonaktifkan fitur ini. */
//request.setProgressListener(new PutObjectProgressListener());
/* Menetapkan ID aplikasi. */
//request.setAppId("app-100****");
/* Titik akhir ApsaraVideo VOD. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah penerapan ECS. */
// request.setEcsRegionId("cn-shanghai");
// Jika wilayah penerapan ECS sama dengan wilayah titik akhir ApsaraVideo VOD, upload jaringan internal akan diaktifkan secara otomatis.
/* Mengonfigurasi proxy. Parameter ini opsional. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Host server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk menghubungkan ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyPassword("<yourProxyPassword>");
//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 yang ditentukan tidak valid, upload video tidak terpengaruh. VideoId dan kode kesalahan dikembalikan. Dalam kasus lain, jika upload gagal, VideoId kosong. Dalam hal ini, analisis penyebab kegagalan berdasarkan kode kesalahan yang dikembalikan. */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* API untuk 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);
/* Menentukan apakah akan menggunakan watermark default. Parameter ini opsional. Jika Anda menentukan ID grup templat, watermark default akan digunakan berdasarkan konfigurasi grup templat. */
//request.setShowWaterMark(true);
/* Pengaturan callback pesan kustom dan pengaturan akselerasi upload. Parameter ini opsional. Extend menentukan pengaturan ekstensi kustom. MessageCallback menentukan pengaturan callback pesan. AccelerateConfig menentukan pengaturan akselerasi upload. Anda harus mengaktifkan fitur akselerasi upload sebelum menggunakannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* ID kategori video. Parameter ini opsional. */
//request.setCateId(0);
/* Tag video. Pisahkan beberapa tag dengan koma (,). Parameter ini opsional. */
//request.setTags("Tag 1,Tag 2");
/* Deskripsi video. Parameter ini opsional. */
//request.setDescription("Video description");
/* URL gambar mini. Parameter ini opsional. */
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* ID grup templat. Parameter ini opsional. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* ID alur kerja. Parameter ini opsional. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Wilayah penyimpanan. Parameter ini opsional. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Mengaktifkan callback kemajuan upload default. */
// request.setPrintProgress(true);
/* Menetapkan callback kemajuan upload kustom. Callback harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika Anda mengaktifkan fitur ini, server mengembalikan detail upload dalam log selama proses upload. Jika Anda tidak perlu menerima pesan ini, nonaktifkan fitur ini. */
// request.setProgressListener(new PutObjectProgressListener());
/* Menetapkan ID aplikasi. */
//request.setAppId("app-100****");
/* Titik akhir ApsaraVideo VOD. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah penerapan ECS. */
// request.setEcsRegionId("cn-shanghai");
// Jika wilayah penerapan ECS sama dengan wilayah titik akhir ApsaraVideo VOD, upload jaringan internal akan diaktifkan secara otomatis.
/* Mengonfigurasi proxy. Parameter ini opsional. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Host server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk menghubungkan ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyPassword("<yourProxyPassword>");
//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 yang ditentukan tidak valid, upload video tidak terpengaruh. VideoId dan kode kesalahan dikembalikan. Dalam kasus lain, jika upload gagal, VideoId kosong. Dalam hal ini, analisis penyebab kegagalan berdasarkan kode kesalahan yang dikembalikan.
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
}File M3U8
Bentangkan untuk melihat kode contoh
public class UploadVideoDemo {
// Wajib. Tentukan pasangan AccessKey.
// Pasangan AccessKey Akun Alibaba Cloud memiliki izin untuk mengakses semua API. Kami menyarankan agar Anda menggunakan pasangan AccessKey Pengguna RAM untuk panggilan 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 dan keamanan semua resource dalam akun Anda akan terganggu.
// Contoh ini menunjukkan cara membaca pasangan AccessKey dari variabel lingkungan untuk mengotentikasi akses API. 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 berbasis web.
testUploadWebM3u8(accessKeyId, accessKeySecret);
}
/**
* Mengunggah file video atau audio M3U8 lokal ke ApsaraVideo VOD. Secara default, file M3U8 dan shard-nya berada di direktori yang sama. Jika sliceFilenames kosong, alamat shard diurai dari direktori yang sama.
*
* @param request Permintaan untuk mengunggah file M3U8 lokal.
* m3u8Filename: Jalur mutlak manifes M3U8 lokal. Informasi shard dalam file M3U8 harus berupa jalur relatif. Tidak boleh berisi URL atau jalur lokal absolut.
* sliceFilenames: Daftar jalur mutlak shard TS. Jika Anda menentukan parameter ini, daftar ini akan digunakan. Jika tidak, file m3u8 yang ditentukan oleh m3u8Filename akan diurai secara otomatis.
*/
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"
};
// Daftar file shard TS. Parameter ini opsional. Jika Anda tidak menentukan parameter ini, alamat shard diurai langsung dari file M3U8.
request.setSliceFilenames(sliceFilenames);
/* Ukuran setiap bagian untuk unggah multi-bagian. Nilai default: 2 MB. */
request.setPartSize(2 * 1024 * 1024L);
/* Jumlah thread konkuren untuk unggah multi-bagian. Nilai default: 1. Catatan: Konfigurasi ini mengonsumsi sumber daya CPU server. Tentukan jumlah thread berdasarkan kinerja server Anda. */
request.setTaskNum(1);
/* Menentukan apakah akan menampilkan watermark. Parameter ini opsional. Jika Anda menentukan ID grup templat, watermark akan ditampilkan berdasarkan konfigurasi grup templat. */
//request.setShowWaterMark(true);
/* Pengaturan callback pesan kustom dan pengaturan akselerasi upload. Parameter ini opsional. Extend menentukan pengaturan ekstensi kustom. MessageCallback menentukan pengaturan callback pesan. AccelerateConfig menentukan pengaturan akselerasi upload. Anda harus mengaktifkan fitur akselerasi upload sebelum menggunakannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* ID kategori video. Parameter ini opsional. */
//request.setCateId(-1L);
/* Tag video. Pisahkan beberapa tag dengan koma (,). Parameter ini opsional. */
//request.setTags("Tag 1,Tag 2");
/* Deskripsi video. Parameter ini opsional. */
//request.setDescription("Video description");
/* URL gambar mini. Parameter ini opsional. */
//request.setCoverURL("http://cover.sample.com/sample.jpg");
/* ID grup templat. Parameter ini opsional. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* ID alur kerja. Parameter ini opsional. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Wilayah penyimpanan. Parameter ini opsional. */
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* Menetapkan ID aplikasi. */
// request.setAppId("app-1000000");
/* Titik akhir ApsaraVideo VOD. */
// request.setApiRegionId("cn-shanghai");
/* Wilayah penerapan ECS. */
// request.setEcsRegionId("cn-shanghai");
/* Mengonfigurasi proxy. Parameter ini opsional. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Host server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk menghubungkan ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi server proxy. Parameter ini wajib untuk 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 video atau audio M3U8 berbasis web ke ApsaraVideo VOD. Ruang disk lokal yang cukup diperlukan karena file tersebut pertama-tama diunduh ke direktori lokal sementara lalu diunggah ke penyimpanan ApsaraVideo VOD.
*
* @param request Permintaan untuk mengunggah file M3U8 berbasis web.
* m3u8FileURL: URL manifes M3U8 berbasis web. Informasi shard dalam file M3U8 harus berupa jalur relatif. Tidak boleh berisi URL atau jalur lokal absolut.
* sliceFileURLs: Daftar URL shard TS. Anda harus membuat daftar URL shard TS sendiri.
*/
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"
};
// Alamat shard TS. Parameter ini opsional. Jika Anda tidak menentukan parameter ini, alamat shard diurai langsung dari m3u8FileURL.
request.setSliceFileURLs(sliceFileURLs);
/* Direktori penyimpanan sementara untuk file yang diunduh. Anda dapat menyesuaikan direktori ini. Jika Anda tidak menentukan direktori, file akan disimpan di direktori tempat program dijalankan. */
// request.setGlobalLocalFilePath("/User/download/");
/* Ukuran setiap bagian untuk unggah multi-bagian. Nilai default: 2 MB. */
request.setPartSize(2 * 1024 * 1024L);
/* Jumlah thread konkuren untuk unggah multi-bagian. Nilai default: 1. Catatan: Konfigurasi ini mengonsumsi sumber daya CPU server. Tentukan jumlah thread berdasarkan kinerja server Anda. */
request.setTaskNum(1);
/* Menentukan apakah akan menampilkan watermark. Parameter ini opsional. Jika Anda menentukan ID grup templat, watermark akan ditampilkan berdasarkan konfigurasi grup templat. */
//request.setShowWaterMark(true);
/* Pengaturan callback pesan kustom dan pengaturan akselerasi upload. Parameter ini opsional. Extend menentukan pengaturan ekstensi kustom. MessageCallback menentukan pengaturan callback pesan. AccelerateConfig menentukan pengaturan akselerasi upload. Anda harus mengaktifkan fitur akselerasi upload sebelum menggunakannya. */
//request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
/* ID kategori video. Parameter ini opsional. */
//request.setCateId(-1L);
/* Tag video. Pisahkan beberapa tag dengan koma (,). Parameter ini opsional. */
//request.setTags("Tag 1,Tag 2");
/* Deskripsi video. Parameter ini opsional. */
//request.setDescription("Video description");
/* URL gambar mini. Parameter ini opsional. */
//request.setCoverURL("http://cover.example.com/sample.jpg");
/* ID grup templat. Parameter ini opsional. */
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* ID alur kerja. Parameter ini opsional. */
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* Wilayah penyimpanan. Parameter ini opsional. */
//request.setStorageLocation("in-2017032321****-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
/* Menetapkan ID aplikasi. */
//request.setAppId("app-100****");
/* Titik akhir ApsaraVideo VOD. */
//request.setApiRegionId("cn-shanghai");
/* Wilayah penerapan ECS. */
// request.setEcsRegionId("cn-shanghai");
/* Mengonfigurasi proxy. Parameter ini opsional. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Host server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk menghubungkan ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi server proxy. Parameter ini wajib untuk 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 upload
Jika Anda ingin mengunggah file besar berukuran gigabyte atau terabyte, atau mengunggah video lintas wilayah, misalnya dari Tiongkok daratan ke alamat penyimpanan di wilayah Singapore, Anda dapat mengaktifkan fitur akselerasi upload. Untuk informasi selengkapnya, lihat Aktifkan akselerasi upload. Setelah mengaktifkan akselerasi upload, Anda harus menambahkan pasangan key-value AccelerateConfig ke objek UserData dalam konfigurasi upload. Jika objek tersebut belum ada, Anda harus membuatnya. Kode berikut memberikan contohnya:
request.setUserData("{\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");Deskripsi parameter
Nama | Tipe | Deskripsi |
Type | string | Tipe untuk mana Anda ingin mengaktifkan akselerasi upload. Hanya oss yang didukung. |
Domain | string | Nama domain yang dipercepat dari bucket. Protokol default adalah HTTPS. Catatan Gunakan titik akhir yang dipercepat yang ditetapkan setelah Anda mengaktifkan akselerasi upload, seperti vod-*******.oss-accelerate.aliyuncs.com. |
Skenario 2: Upload gambar
Bentangkan untuk melihat kode contoh
public class UploadImageDemo {
// Wajib. Tentukan pasangan AccessKey.
// Pasangan AccessKey Akun Alibaba Cloud memiliki izin untuk mengakses semua API. Kami menyarankan agar Anda menggunakan pasangan AccessKey Pengguna RAM untuk panggilan 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 dan keamanan semua resource dalam akun Anda akan terganggu.
// Contoh ini menunjukkan cara membaca pasangan AccessKey dari variabel lingkungan untuk mengotentikasi akses API. 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 file gambar lokal.
testUploadImageLocalFile(accessKeyId, accessKeySecret);
// 2. Gunakan unggah streaming untuk mengunggah aliran file atau aliran jaringan sebagai gambar.
testUploadImageStream(accessKeyId, accessKeySecret);
}
/**
* API untuk upload file gambar lokal.
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadImageLocalFile(String accessKeyId, String accessKeySecret) {
/* Tipe gambar. Parameter ini wajib. Nilai yang valid: default, cover, dan watermark. */
String imageType = "cover";
UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType);
request.setImageType("cover");
/* Ekstensi nama file gambar. Parameter ini opsional. Nilai yang valid: png, jpg, dan jpeg. */
//request.setImageExt("png");
/* Judul gambar. Parameter ini opsional. Judul dapat memiliki panjang hingga 128 byte dan harus dikodekan UTF-8. */
//request.setTitle("Image Title");
/* Tag gambar. Parameter ini opsional. Satu tag dapat memiliki panjang hingga 32 byte. Anda dapat menambahkan hingga 16 tag. Pisahkan beberapa tag dengan koma (,). Tag harus dikodekan UTF-8. */
//request.setTags("Tag 1,Tag 2");
/* Wilayah penyimpanan. Parameter ini opsional. */
//request.setStorageLocation("out-4f3952f78c0211e8b30200****.oss-cn-shanghai.aliyuncs.com");
/* Untuk unggah streaming, InputStream wajib, dan fileName opsional. fileName menentukan nama file sumber, seperti FileName.png. */
String fileName = "/Users/demo/png/test.png";
request.setFileName(fileName);
/* Mengaktifkan callback kemajuan upload default. */
//request.setPrintProgress(false);
/* Menetapkan callback kemajuan upload kustom. Callback harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika Anda mengaktifkan fitur ini, server mengembalikan detail upload dalam log selama proses upload. Jika Anda tidak perlu menerima pesan ini, nonaktifkan fitur ini. */
// request.setProgressListener(new PutObjectProgressListener());
/* Menetapkan ID aplikasi. */
//request.setAppId("app-100****");
/* Titik akhir ApsaraVideo VOD. */
//request.setApiRegionId("cn-shanghai");
/* Mengonfigurasi proxy. Parameter ini opsional. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Host server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk menghubungkan ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi server proxy. Parameter ini wajib untuk 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");
}
}
/**
* API untuk unggah streaming gambar. Metode ini mendukung aliran file dan aliran jaringan.
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadImageStream(String accessKeyId, String accessKeySecret) {
/* Tipe gambar. Parameter ini wajib. Nilai yang valid: default, cover, dan watermark. */
String imageType = "cover";
UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType);
/* Ekstensi nama file gambar. Parameter ini opsional. Nilai yang valid: png, jpg, dan jpeg. */
//request.setImageExt("png");
/* Judul gambar. Parameter ini opsional. Judul dapat memiliki panjang hingga 128 byte dan harus dikodekan UTF-8. */
//request.setTitle("Image Title");
/* Tag gambar. Parameter ini opsional. Satu tag dapat memiliki panjang hingga 32 byte. Anda dapat menambahkan hingga 16 tag. Pisahkan beberapa tag dengan koma (,). Tag harus dikodekan UTF-8. */
//request.setTags("Tag 1,Tag 2");
/* Wilayah penyimpanan. Parameter ini opsional. */
//request.setStorageLocation("out-4f3952f78c0211e8b30200****.oss-cn-shanghai.aliyuncs.com");
/* Untuk unggah streaming, InputStream wajib, dan fileName opsional. fileName menentukan nama file sumber, seperti FileName.png. */
//request.setFileName("TestFileName.png");
/* Mengaktifkan callback kemajuan upload default. */
// request.setPrintProgress(true);
/* Menetapkan callback kemajuan upload kustom. Callback harus mewarisi VoDProgressListener. */
/* Fitur ini dinonaktifkan secara default. Jika Anda mengaktifkan fitur ini, server mengembalikan detail upload dalam log selama proses upload. Jika Anda tidak perlu menerima pesan ini, nonaktifkan fitur ini. */
// request.setProgressListener(new PutObjectProgressListener());
/* Menetapkan ID aplikasi. */
//request.setAppId("app-1000000");
/* Mengonfigurasi proxy. Parameter ini opsional. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Host server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk menghubungkan ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi server proxy. Parameter ini wajib untuk 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 mengunggah 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: Upload aset media pendukung
Bentangkan untuk melihat kode contoh
public class UploadAttachedMediaDemo {
// Wajib. Tentukan pasangan AccessKey.
// Pasangan AccessKey Akun Alibaba Cloud memiliki izin untuk mengakses semua API. Kami menyarankan agar Anda menggunakan pasangan AccessKey Pengguna RAM untuk panggilan 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 dan keamanan semua resource dalam akun Anda akan terganggu.
// Contoh ini menunjukkan cara membaca pasangan AccessKey dari variabel lingkungan untuk mengotentikasi akses API. 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 file aset media pendukung lokal.
testUploadAttachedMediaLocalFile(accessKeyId, accessKeySecret);
// Gunakan unggah streaming untuk mengunggah aset media pendukung. Metode ini mendukung aliran file dan aliran jaringan.
testUploadAttachedMediaStream(accessKeyId, accessKeySecret);
}
/**
* API untuk upload file aset media pendukung lokal.
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadAttachedMediaLocalFile(String accessKeyId, String accessKeySecret) {
/* Tipe 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);
/* Tag. Pisahkan beberapa tag dengan koma (,). Parameter ini opsional. */
request.setTags("tag1,tag2");
/* Deskripsi. Parameter ini opsional. */
request.setDescription("test_desc");
/* Wilayah penyimpanan. Parameter ini opsional. */
request.setStorageLocation("out-20170323225118266-5l3hs5****.oss-cn-shanghai.aliyuncs.com");
/* Titik akhir ApsaraVideo VOD. */
request.setApiRegionId("cn-shanghai");
/* Menetapkan ID aplikasi. */
//request.setAppId("app-1000000");
/* Mengonfigurasi proxy. Parameter ini opsional. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Host server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk menghubungkan ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi server proxy. Parameter ini wajib untuk 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");
}
}
/**
* API untuk unggah streaming aset media pendukung. Metode ini mendukung aliran file dan aliran jaringan.
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadAttachedMediaStream(String accessKeyId, String accessKeySecret) {
/* Tipe bisnis. */
String businessType = "watermark";
/* Ekstensi nama file. */
String mediaExt = "png";
String filename = "http://test.aliyun.com/test.png";
UploadAttachedMediaRequest request;
// 1. Unggah aliran file.
InputStream fileStream = getFileStream(filename);
request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt);
request.setInputStream(fileStream);
// 2. Unggah 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);
/* Tag. Pisahkan beberapa tag dengan koma (,). Parameter ini opsional. */
request.setTags("tag1,tag2");
/* Deskripsi. Parameter ini opsional. */
request.setDescription("test_desc");
/* Wilayah penyimpanan. Parameter ini opsional. */
request.setStorageLocation("out-20170323225118266-5l3****wa.oss-cn-shanghai.aliyuncs.com");
/* Titik akhir ApsaraVideo VOD. */
request.setApiRegionId("cn-shanghai");
/* Menetapkan ID aplikasi. */
// request.setAppId("app-1000000");
/* Mengonfigurasi proxy. Parameter ini opsional. */
//OSSConfig ossConfig = new OSSConfig();
/* <Wajib> Host server proxy. */
//ossConfig.setProxyHost("<yourProxyHost>");
/* <Wajib> Port server proxy. */
//ossConfig.setProxyPort(-1);
/* Protokol yang digunakan untuk menghubungkan ke OSS. Nilai yang valid: HTTP dan HTTPS. Nilai default: HTTP. */
//ossConfig.setProtocol("HTTP");
/* User agent, yaitu header User-Agent dalam HTTP. Nilai default: aliyun-sdk-java. */
//ossConfig.setUserAgent("<yourUserAgent>");
/* Username untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* Password untuk autentikasi server proxy. Parameter ini wajib untuk protokol HTTPS. */
//ossConfig.setProxyPassword("<yourProxyPassword>");
//request.setOssConfig(ossConfig);
// Mulai upload.
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 kemajuan upload
File
PutObjectProgressListener.javadalam direktori contoh menyediakan kode contoh untuk fungsi callback kemajuan upload.Kelas ini harus mewarisi kelas VoDProgressListener. ProgressEvent adalah notifikasi callback kemajuan yang dihasilkan saat file diunggah ke OSS. Anda dapat menyesuaikan logika bisnis untuk setiap notifikasi event.
Kode berikut memberikan contohnya:
Bentangkan untuk melihat kode contoh
/** * Kelas untuk metode callback kemajuan upload. * Callback event ini hanya berlaku setelah Anda mengaktifkan callback kemajuan upload. * Callback event yang sesuai dipicu terlepas dari apakah unggah multi-bagian ke OSS berhasil atau gagal. Anda dapat menangani callback event berdasarkan logika bisnis Anda. * Setelah informasi audio atau video dibuat, videoId dalam callback kemajuan upload ini adalah ID video yang dihasilkan untuk upload ini. Anda dapat mengelola file audio dan video berdasarkan ID video tersebut. * Setelah informasi gambar dibuat, ImageId dalam callback kemajuan upload ini adalah ID gambar yang dihasilkan untuk upload ini. Anda dapat mengelola gambar berdasarkan ID gambar tersebut. */ public class PutObjectProgressListener implements VoDProgressListener { /** * Jumlah byte yang telah berhasil diunggah ke OSS. */ private long bytesWritten = 0; /** * Jumlah total byte dari file sumber. */ private long totalBytes = -1; /** * Flag keberhasilan untuk upload ini. */ 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) { // Event awal upload. 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; // Event yang memberi tahu ukuran total file yang akan diunggah. Event ini hanya didukung untuk upload file lokal. case REQUEST_CONTENT_LENGTH_EVENT: this.totalBytes = bytes; System.out.println(this.totalBytes + " byte secara total akan diunggah ke OSS."); break; // Event yang memberi tahu ukuran file yang telah diunggah. 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, kemajuan upload: "+ percent +"%(" + this.bytesWritten + "/" + this.totalBytes + ")"); } else { System.out.println(bytes + " byte telah ditulis saat ini, total sub upload : " + "(" + this.bytesWritten + ")"); } break; // Event yang memberi tahu bahwa file berhasil diunggah. 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; // Event yang memberi tahu bahwa upload file 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 direktori contoh menyediakan kode contoh untuk memperbarui token sementara.Berikut adalah contohnya.
Bentangkan untuk melihat kode contoh
/** * @author vod * Kelas implementasi untuk menghasilkan informasi 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
Mengapa saya gagal menemukan dependensi terkait? Masalah ini dapat terjadi karena perbedaan lingkungan pengembangan dan biasanya disebabkan oleh masalah kompilasi di IntelliJ IDEA. Jika Anda telah mengimpor paket resource yang diperlukan, coba solusi berikut.
Dalam proyek Maven Anda, klik Maven di sebelah kanan, klik ikon m, lalu masukkan
mvn idea:moduleuntuk memuat ulang resource.
Dari bilah menu atas, pilih Build > Rebuild Project.

Salin paket aliyun-java-vod-upload-1.4.15.jar ke direktori resource proyek Anda dan tambahkan sebagai dependensi lokal ke dependensi Maven Anda.

<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
<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>