このトピックでは、Java 用サーバーサイドアップロード SDK を使用して、さまざまなメディアファイルを ApsaraVideo VOD ストレージにアップロードする方法の例を示します。
概要
Java 用アップロード SDK は、他の ApsaraVideo VOD サーバーサイド SDK と同じ一般的なプロセスに従います。詳細については、「アップロードプロセス」をご参照ください。Java 用アップロード SDK を使用するための基本的なステップは次のとおりです。
前提条件を完了します。詳細については、「前提条件」をご参照ください。
Java 用アップロード SDK を統合します。詳細については、「Java 用アップロード SDK の統合」をご参照ください。
アップロードロジックを実装します。このステップでは、主にアップロード情報を構成します。
オーディオファイルとビデオファイルをアップロードするには、「シナリオ 1: オーディオファイルとビデオファイルのアップロード」をご参照ください。
イメージをアップロードするには、「シナリオ 2: イメージのアップロード」をご参照ください。
補助メディアアセットをアップロードするには、「シナリオ 3: 補助メディアアセットのアップロード」をご参照ください。
より高度な機能については、「高度な機能」をご参照ください。
前提条件
ApsaraVideo VOD が有効化されています。詳細については、「ApsaraVideo VOD の有効化」をご参照ください。
指定されたリージョンのストレージパスやコールバック設定など、アップロードに必要なシステム設定が構成されています。詳細については、「ストレージバケットの管理」および「コールバックの設定」をご参照ください。
RAM ユーザーが作成され、ApsaraVideo VOD へのアクセスに使用されます。Alibaba Cloud アカウントの AccessKey ペアの漏洩によるセキュリティリスクを防ぐため、RAM ユーザーを作成し、その RAM ユーザーに ApsaraVideo VOD へのアクセスに必要な権限を付与することを推奨します。その後、RAM ユーザーの AccessKey ペア を使用して ApsaraVideo VOD にアクセスできます。詳細については、「RAM ユーザーの作成と権限付与」をご参照ください。
ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を構成します。詳細については、「Linux、macOS、および Windows で環境変数を構成する」をご参照ください。
重要Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API の呼び出しや日常の O&M を実行するには、RAM ユーザーの AccessKey ペアを使用することを推奨します。
AccessKey ID と AccessKey Secret をプロジェクトコードにハードコーディングしないことを推奨します。ハードコーディングすると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
任意。Security Token Service (STS) を使用して ApsaraVideo VOD にアクセスする場合、RAM ユーザー用のロールが作成され、そのロールに ApsaraVideo VOD へのアクセスに必要な権限が付与されます。詳細については、「STS トークンの取得」をご参照ください。
説明STS を使用できるシナリオの詳細については、「認証情報と STS の比較」をご参照ください。
Java 用アップロード SDK の統合
このトピックでは、Java 1.8 以降と Java V1.4.15 用アップロード SDK を使用して統合手順を説明します。必要に応じて他のバージョンを使用できます。アップロード SDK は依存関係の統合をサポートしていません。JAR パッケージをダウンロードしてインポートする必要があります。統合中に問題が発生した場合は、「よくある質問」をご参照ください。
Java 用アップロード SDK とサンプルコードをダウンロードします。
バージョン: 1.4.15
最終更新日: 2022-11-03
ダウンロード URL: V1.4.15 SDK およびデモソースコード
ダウンロードしたパッケージを解凍します。
この例では VODUploadDemo-java-1.4.15.zip パッケージを使用します。パッケージを解凍すると、次のサブフォルダが作成されます。
lib: Java 用アップロード SDK に必要な JAR パッケージを格納します。sample: Java 用アップロード SDK のサンプルコードを格納します。
JAR パッケージをインポートします。
Eclipse と統合している場合は、プロジェクトを右クリックし、[プロパティ] > [Java ビルドパス] > [JAR の追加] を選択します。解凍した VODUploadDemo-java-1.4.15 フォルダを見つけ、
libディレクトリからすべての JAR ファイルをプロジェクトに追加します。IntelliJ IDEA と統合するには、プロジェクトを開き、[ファイル] > [プロジェクト構造] > [モジュール] を選択します。[依存関係] タブで、[+] アイコンをクリックし、[JAR またはディレクトリ] を選択します。解凍した VODUploadDemo-java-1.4.15 フォルダを見つけ、
libディレクトリからすべての JAR ファイルをプロジェクトに追加します。
重要JAR パッケージをインポートした後、依存関係も構成する必要があります。
Alibaba Cloud SDK for Java、OSS SDK、ApsaraVideo VOD SDK、ApsaraVideo VOD サーバーサイドアップロード SDK などの依存関係を追加できます。
重要上記のすべての依存関係をインポートする必要があります。そうしないと、統合は失敗します。
最新の JAR パッケージ (aliyun-java-vod-upload-1.4.15.jar) を使用する場合は、aliyun-sdk-oss のバージョンが 3.9.0 以降、aliyun-java-sdk-vod のバージョンが 2.16.11 以降であることを確認してください。
ApsaraVideo VOD は、中国本土の中国 (上海)、中国 (深圳)、中国 (北京) リージョンで利用できます。アップロード SDK V1.4.14 以前を使用して中国 (深圳) または中国 (北京) リージョンにファイルをアップロードする場合は、aliyun-java-sdk-vod のバージョンが 2.15.11 以降、aliyun-java-sdk-core のバージョンが 4.4.5 以降であることを確認してください。アップロード SDK V1.4.15 以降を使用して中国 (深圳) または中国 (北京) リージョンにファイルをアップロードする場合は、aliyun-java-sdk-vod のバージョンが 2.16.11 以降、aliyun-java-sdk-core のバージョンが 4.4.5 以降であることを確認してください。
依存関係を展開して表示
<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>
シナリオ 1: オーディオファイルとビデオファイルのアップロード
通常のオーディオファイルとビデオファイル
次のいずれかの方法でオーディオファイルとビデオファイルをアップロードできます。
ローカルファイルをアップロードします。このメソッドはマルチパートアップロードを使用し、再開可能なアップロードをサポートします。詳細については、サンプルコードの
testUploadVideo関数をご参照ください。再開可能なアップロードが無効になっている場合、アップロードタスクは最大 3,000 秒間実行できます。アップロードできるファイルの最大サイズは、ネットワーク帯域幅とディスク I/O パフォーマンスによって異なります。
再開可能なアップロードが有効になっている場合、最大 48.8 TB の単一ファイルをアップロードできます。
重要再開可能なアップロードを有効にすると、アップロード中にアップロードの進行状況がローカルディスクファイルに書き込まれます。これにより、アップロード速度が影響を受ける可能性があります。ファイルサイズに基づいてこの機能を有効にするかどうかを決定することを推奨します。
ネットワークストリームをアップロードします。ファイル URL を指定してファイルをアップロードできます。このメソッドは再開可能なアップロードをサポートし、最大 48.8 TB の単一ファイルをアップロードできます。このメソッドでは、アップロードする前にネットワークファイルをローカルディスクにダウンロードする必要があります。ローカルディスクに十分な空き領域があることを確認してください。詳細については、サンプルコードの
testUploadURLStream関数をご参照ください。ファイルストリームをアップロードします。ローカルファイルを指定してアップロードできます。このメソッドは再開可能なアップロードをサポートしておらず、最大 5 GB の単一ファイルをアップロードできます。詳細については、サンプルコードの
testUploadFileStream関数をご参照ください。ストリーミングアップロードを使用します。ファイルストリームやネットワークストリームなどの入力ストリームを指定してアップロードできます。このメソッドは再開可能なアップロードをサポートしておらず、最大 5 GB の単一ファイルをアップロードできます。詳細については、サンプルコードの
testUploadStream関数をご参照ください。
サンプルコードを使用する場合、対応するクラスを手動でインポートする必要があります。コード実行中に依存関係が見つからないなどの問題を解決するには、「よくある質問」をご参照ください。
サンプルコードを展開して表示
public class UploadVideoDemo {
// 必須。AccessKey ペアを指定します。
// Alibaba Cloud アカウントの AccessKey ペアは、すべての API にアクセスする権限を持っています。API の呼び出しや日常の O&M には、RAM ユーザーの AccessKey ペアを使用することを推奨します。
// AccessKey ID と AccessKey Secret をプロジェクトコードにハードコーディングしないことを強く推奨します。ハードコーディングすると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
// この例では、環境変数から AccessKey ペアを読み取って API アクセスを認証する方法を示します。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および 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) {
// ビデオファイルをアップロードします。
// ビデオのタイトル。このパラメーターは必須です。
String title = "Test Title";
// 1. ローカルファイルのアップロードとファイルストリームのアップロードの場合、ファイル名をアップロードファイルの絶対パス (例: /User/sample/FileName.mp4) に設定します。このパラメーターは必須です。
// 2. ネットワークストリームのアップロードの場合、ファイル名をソースファイル名 (例: FileName.mp4) に設定します。このパラメーターは必須です。
// 3. ストリーミングアップロードの場合、ファイル名をソースファイル名 (例: FileName.mp4) に設定します。このパラメーターは必須です。
// アップロード方法に関係なく、ファイル名にはファイル名拡張子を含める必要があります。
String fileName = "/Users/test/video/test.mp4";
// ローカルファイルをアップロードします。
testUploadVideo(accessKeyId, accessKeySecret, title, fileName);
// アップロードするビデオのネットワークストリームの URL。
String url = "http://test.aliyun.com/video/test.mp4";
// 2. ネットワークストリームをアップロードします。
// ファイル名拡張子。URL にファイル名拡張子が含まれていない場合は、このパラメーターを設定する必要があります。
String fileExtension = "mp4";
testUploadURLStream(accessKeyId, accessKeySecret, title, url, fileExtension);
// 3. ファイルストリームをアップロードします。
testUploadFileStream(accessKeyId, accessKeySecret, title, fileName);
// 4. ストリーミングアップロード (ファイルストリーム、ネットワークストリームなど)。
InputStream inputStream = null;
// 4.1 ファイルストリーム。
try {
inputStream = new FileInputStream(fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 4.2 ネットワークストリーム。
try {
inputStream = new URL(url).openStream();
} catch (IOException e) {
e.printStackTrace();
}
testUploadStream(accessKeyId, accessKeySecret, title, fileName, inputStream);
}
/**
* ローカルファイルアップロード用の API。
*
* @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);
/* マルチパートアップロードの各パートのサイズ。デフォルト値: 2 MB。*/
request.setPartSize(2 * 1024 * 1024L);
/* マルチパートアップロードの同時スレッド数。デフォルト値: 1。注: この構成はサーバーの CPU リソースを消費します。サーバーのパフォーマンスに基づいてスレッド数を指定してください。*/
request.setTaskNum(1);
/* 再開可能なアップロードを有効にするかどうかを指定します。デフォルト値: false。ネットワークが不安定な場合やプログラムがクラッシュした場合、同じアップロードリクエストを送信することでアップロードタスクを再開できます。この機能は、3,000 秒以内にアップロードできない大きなファイルに適しています。
注: 再開可能なアップロードを有効にすると、アップロード中にアップロードの進行状況がローカルディスクファイルに書き込まれます。これにより、アップロード速度が影響を受けます。必要に応じてこの機能を有効にするかどうかを選択してください。*/
//request.setEnableCheckpoint(false);
/* 低速な OSS リクエストをログに記録するためのタイムアウト期間。パートのアップロード時間がこのしきい値を超えると、デバッグログが出力されます。このログを抑制するには、しきい値を調整します。単位: ミリ秒。デフォルト値: 300000。*/
//request.setSlowRequestsThreshold(300000L);
/* 各パートの低速リクエストをログに記録するための時間しきい値。デフォルト値: 300 秒。*/
//request.setSlowRequestsThreshold(300000L);
/* ウォーターマークを表示するかどうかを指定します。このパラメーターは任意です。テンプレートグループ ID を指定した場合、ウォーターマークはテンプレートグループの構成に基づいて表示されます。*/
//request.setIsShowWaterMark(true);
/* カスタムメッセージコールバック設定とアップロードアクセラレーション設定。このパラメーターは任意です。Extend はカスタム拡張設定を指定します。MessageCallback はメッセージコールバック設定を指定します。AccelerateConfig はアップロードアクセラレーション設定を指定します。この機能を使用する前に、アップロードアクセラレーション機能を有効にする必要があります。*/
//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。このパラメーターは任意です。*/
//request.setCateId(0);
/* ビデオタグ。複数のタグはカンマ (,) で区切ります。このパラメーターは任意です。*/
//request.setTags("Tag 1,Tag 2");
/* ビデオの説明。このパラメーターは任意です。*/
//request.setDescription("Video description");
/* サムネイル URL。このパラメーターは任意です。*/
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* テンプレートグループ ID。このパラメーターは任意です。*/
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e5****");
/* ワークフロー ID。このパラメーターは任意です。*/
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* ストレージリージョン。このパラメーターは任意です。*/
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* デフォルトのアップロード進行状況コールバックを有効にします。*/
//request.setPrintProgress(false);
/* カスタムアップロード進行状況コールバックを設定します。コールバックは VoDProgressListener を継承する必要があります。*/
/* この機能はデフォルトで無効になっています。この機能を有効にすると、アップロード中にサーバーがログにアップロードの詳細を返します。このメッセージを受信する必要がない場合は、この機能を無効にしてください。*/
//request.setProgressListener(new PutObjectProgressListener());
/* STS 情報を生成するために使用するインターフェイスの実装クラスを設定します。*/
// request.setVoDRefreshSTSTokenListener(new RefreshSTSTokenImpl());
/* アプリケーション ID を設定します。*/
//request.setAppId("app-100****");
/* ApsaraVideo VOD エンドポイント。*/
//request.setApiRegionId("cn-shanghai");
/* ECS デプロイメントリージョン。*/
// request.setEcsRegionId("cn-shanghai");
// ECS デプロイメントリージョンが ApsaraVideo VOD エンドポイントリージョンと同じ場合、内部ネットワークアップロードが自動的に有効になります。
/* プロキシを構成します。このパラメーターは任意です。*/
//OSSConfig ossConfig = new OSSConfig();
/* <必須> プロキシサーバーホスト。*/
//ossConfig.setProxyHost("<yourProxyHost>");
/* <必須> プロキシサーバーポート。*/
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用されるプロトコル。有効な値: HTTP および HTTPS。デフォルト値: HTTP。*/
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP の User-Agent ヘッダーです。デフォルト値: aliyun-sdk-java。*/
//ossConfig.setUserAgent("<yourUserAgent>");
/* プロキシサーバー認証用のユーザー名。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* プロキシサーバー認証用のパスワード。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyPassword("<yourProxyPassword>");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadVideoResponse response = uploader.uploadVideo(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ApsaraVideo VOD に送信されたリクエストの ID。
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else {
/* 指定されたコールバック URL が無効な場合、ビデオのアップロードには影響しません。VideoId とエラーコードが返されます。その他の場合、アップロードが失敗すると VideoId は空になります。この場合、返されたエラーコードに基づいて失敗の原因を分析します。*/
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* URL を使用してネットワークストリームをアップロードします。このメソッドは再開可能なアップロードをサポートします。最大 48.8 TB の単一ファイルをアップロードできます。
* このメソッドでは、アップロードする前にネットワークファイルをローカルディスクにダウンロードする必要があります。ローカルディスクに十分な空き領域があることを確認してください。
* 指定した URL にファイル名拡張子が含まれていない場合は、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);
/* ファイル名拡張子。*/
request.setFileExtension(fileExtension);
/* ネットワークファイルのダウンロードの接続タイムアウト期間。単位: ミリ秒。値 0 は制限なしを示します。*/
request.setDownloadConnectTimeout(1000);
/* ネットワークファイルのダウンロードの読み取りタイムアウト期間。単位: ミリ秒。値 0 は制限なしを示します。*/
request.setDownloadReadTimeout(0);
/* ダウンロードしたネットワークファイルが保存されるローカルディレクトリ。*/
request.setLocalDownloadFilePath("/Users/download");
/* ウォーターマークを表示するかどうかを指定します。このパラメーターは任意です。テンプレートグループ ID を指定した場合、ウォーターマークはテンプレートグループの構成に基づいて表示されます。*/
//request.setShowWaterMark(true);
/* カスタムメッセージコールバック設定とアップロードアクセラレーション設定。このパラメーターは任意です。Extend はカスタム拡張設定を指定します。MessageCallback はメッセージコールバック設定を指定します。AccelerateConfig はアップロードアクセラレーション設定を指定します。この機能を使用する前に、アップロードアクセラレーション機能を有効にする必要があります。*/
//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。このパラメーターは任意です。*/
//request.setCateId(0);
/* ビデオタグ。複数のタグはカンマ (,) で区切ります。このパラメーターは任意です。*/
//request.setTags("Tag 1,Tag 2");
/* ビデオの説明。このパラメーターは任意です。*/
//request.setDescription("Video description");
/* サムネイル URL。このパラメーターは任意です。*/
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* テンプレートグループ ID。このパラメーターは任意です。*/
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* ワークフロー ID。このパラメーターは任意です。*/
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* ストレージリージョン。このパラメーターは任意です。*/
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* デフォルトのアップロード進行状況コールバックを有効にします。*/
//request.setPrintProgress(true);
/* カスタムアップロード進行状況コールバックを設定します。コールバックは VoDProgressListener を継承する必要があります。*/
/* この機能はデフォルトで無効になっています。この機能を有効にすると、アップロード中にサーバーがログにアップロードの詳細を返します。このメッセージを受信する必要がない場合は、この機能を無効にしてください。*/
//request.setProgressListener(new PutObjectProgressListener());
/* アプリケーション ID を設定します。*/
//request.setAppId("app-100****");
/* ApsaraVideo VOD エンドポイント。*/
//request.setApiRegionId("cn-shanghai");
/* ECS デプロイメントリージョン。*/
// request.setEcsRegionId("cn-shanghai");
// ECS デプロイメントリージョンが ApsaraVideo VOD エンドポイントリージョンと同じ場合、内部ネットワークアップロードが自動的に有効になります。
/* プロキシを構成します。このパラメーターは任意です。*/
//OSSConfig ossConfig = new OSSConfig();
/* <必須> プロキシサーバーホスト。*/
//ossConfig.setProxyHost("<yourProxyHost>");
/* <必須> プロキシサーバーポート。*/
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用されるプロトコル。有効な値: HTTP および HTTPS。デフォルト値: HTTP。*/
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP の User-Agent ヘッダーです。デフォルト値: aliyun-sdk-java。*/
//ossConfig.setUserAgent("<yourUserAgent>");
/* プロキシサーバー認証用のユーザー名。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* プロキシサーバー認証用のパスワード。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyPassword("<yourProxyPassword>");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadURLStreamResponse response = uploader.uploadURLStream(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ApsaraVideo VOD に送信されたリクエストの ID。
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else {
/* 指定されたコールバック URL が無効な場合、ビデオのアップロードには影響しません。VideoId とエラーコードが返されます。その他の場合、アップロードが失敗すると VideoId は空になります。この場合、返されたエラーコードに基づいて失敗の原因を分析します。*/
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* ファイルストリームアップロード用の API。
*
* @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);
/* デフォルトのウォーターマークを使用するかどうかを指定します。このパラメーターは任意です。テンプレートグループ ID を指定した場合、デフォルトのウォーターマークはテンプレートグループの構成に基づいて使用されます。*/
//request.setShowWaterMark(true);
/* カスタムメッセージコールバック設定とアップロードアクセラレーション設定。このパラメーターは任意です。Extend はカスタム拡張設定を指定します。MessageCallback はメッセージコールバック設定を指定します。AccelerateConfig はアップロードアクセラレーション設定を指定します。この機能を使用する前に、アップロードアクセラレーション機能を有効にする必要があります。*/
//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。このパラメーターは任意です。*/
//request.setCateId(0);
/* ビデオタグ。複数のタグはカンマ (,) で区切ります。このパラメーターは任意です。*/
//request.setTags("Tag 1,Tag 2");
/* ビデオの説明。このパラメーターは任意です。*/
//request.setDescription("Video description");
/* サムネイル URL。このパラメーターは任意です。*/
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* テンプレートグループ ID。このパラメーターは任意です。*/
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* ワークフロー ID。このパラメーターは任意です。*/
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* ストレージリージョン。このパラメーターは任意です。*/
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* デフォルトのアップロード進行状況コールバックを有効にします。*/
//request.setPrintProgress(true);
/* カスタムアップロード進行状況コールバックを設定します。コールバックは VoDProgressListener を継承する必要があります。*/
/* この機能はデフォルトで無効になっています。この機能を有効にすると、アップロード中にサーバーがログにアップロードの詳細を返します。このメッセージを受信する必要がない場合は、この機能を無効にしてください。*/
//request.setProgressListener(new PutObjectProgressListener());
/* アプリケーション ID を設定します。*/
//request.setAppId("app-100****");
/* ApsaraVideo VOD エンドポイント。*/
//request.setApiRegionId("cn-shanghai");
/* ECS デプロイメントリージョン。*/
// request.setEcsRegionId("cn-shanghai");
// ECS デプロイメントリージョンが ApsaraVideo VOD エンドポイントリージョンと同じ場合、内部ネットワークアップロードが自動的に有効になります。
/* プロキシを構成します。このパラメーターは任意です。*/
//OSSConfig ossConfig = new OSSConfig();
/* <必須> プロキシサーバーホスト。*/
//ossConfig.setProxyHost("<yourProxyHost>");
/* <必須> プロキシサーバーポート。*/
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用されるプロトコル。有効な値: HTTP および HTTPS。デフォルト値: HTTP。*/
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP の User-Agent ヘッダーです。デフォルト値: aliyun-sdk-java。*/
//ossConfig.setUserAgent("<yourUserAgent>");
/* プロキシサーバー認証用のユーザー名。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* プロキシサーバー認証用のパスワード。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyPassword("<yourProxyPassword>");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadFileStreamResponse response = uploader.uploadFileStream(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ApsaraVideo VOD に送信されたリクエストの ID。
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else {
/* 指定されたコールバック URL が無効な場合、ビデオのアップロードには影響しません。VideoId とエラーコードが返されます。その他の場合、アップロードが失敗すると VideoId は空になります。この場合、返されたエラーコードに基づいて失敗の原因を分析します。*/
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* ストリーミングアップロード用の API。
*
* @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);
/* デフォルトのウォーターマークを使用するかどうかを指定します。このパラメーターは任意です。テンプレートグループ ID を指定した場合、デフォルトのウォーターマークはテンプレートグループの構成に基づいて使用されます。*/
//request.setShowWaterMark(true);
/* カスタムメッセージコールバック設定とアップロードアクセラレーション設定。このパラメーターは任意です。Extend はカスタム拡張設定を指定します。MessageCallback はメッセージコールバック設定を指定します。AccelerateConfig はアップロードアクセラレーション設定を指定します。この機能を使用する前に、アップロードアクセラレーション機能を有効にする必要があります。*/
//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。このパラメーターは任意です。*/
//request.setCateId(0);
/* ビデオタグ。複数のタグはカンマ (,) で区切ります。このパラメーターは任意です。*/
//request.setTags("Tag 1,Tag 2");
/* ビデオの説明。このパラメーターは任意です。*/
//request.setDescription("Video description");
/* サムネイル URL。このパラメーターは任意です。*/
//request.setCoverURL("http://cover.example.com/image_01.jpg");
/* テンプレートグループ ID。このパラメーターは任意です。*/
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* ワークフロー ID。このパラメーターは任意です。*/
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* ストレージリージョン。このパラメーターは任意です。*/
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* デフォルトのアップロード進行状況コールバックを有効にします。*/
// request.setPrintProgress(true);
/* カスタムアップロード進行状況コールバックを設定します。コールバックは VoDProgressListener を継承する必要があります。*/
/* この機能はデフォルトで無効になっています。この機能を有効にすると、アップロード中にサーバーがログにアップロードの詳細を返します。このメッセージを受信する必要がない場合は、この機能を無効にしてください。*/
// request.setProgressListener(new PutObjectProgressListener());
/* アプリケーション ID を設定します。*/
//request.setAppId("app-100****");
/* ApsaraVideo VOD エンドポイント。*/
//request.setApiRegionId("cn-shanghai");
/* ECS デプロイメントリージョン。*/
// request.setEcsRegionId("cn-shanghai");
// ECS デプロイメントリージョンが ApsaraVideo VOD エンドポイントリージョンと同じ場合、内部ネットワークアップロードが自動的に有効になります。
/* プロキシを構成します。このパラメーターは任意です。*/
//OSSConfig ossConfig = new OSSConfig();
/* <必須> プロキシサーバーホスト。*/
//ossConfig.setProxyHost("<yourProxyHost>");
/* <必須> プロキシサーバーポート。*/
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用されるプロトコル。有効な値: HTTP および HTTPS。デフォルト値: HTTP。*/
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP の User-Agent ヘッダーです。デフォルト値: aliyun-sdk-java。*/
//ossConfig.setUserAgent("<yourUserAgent>");
/* プロキシサーバー認証用のユーザー名。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* プロキシサーバー認証用のパスワード。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyPassword("<yourProxyPassword>");
//request.setOssConfig(ossConfig);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadStreamResponse response = uploader.uploadStream(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // ApsaraVideo VOD に送信されたリクエストの ID。
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else { // 指定されたコールバック URL が無効な場合、ビデオのアップロードには影響しません。VideoId とエラーコードが返されます。その他の場合、アップロードが失敗すると VideoId は空になります。この場合、返されたエラーコードに基づいて失敗の原因を分析します。
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
}M3U8 ファイル
サンプルコードを展開して表示
public class UploadVideoDemo {
// 必須。AccessKey ペアを指定します。
// Alibaba Cloud アカウントの AccessKey ペアは、すべての API にアクセスする権限を持っています。API の呼び出しや日常の O&M には、RAM ユーザーの AccessKey ペアを使用することを推奨します。
// AccessKey ID と AccessKey Secret をプロジェクトコードにハードコーディングしないことを強く推奨します。ハードコーディングすると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
// この例では、環境変数から AccessKey ペアを読み取って API アクセスを認証する方法を示します。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および 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) {
// M3U8 ファイルをアップロードします。
// 1. ローカルの M3U8 オーディオまたはビデオファイルをアップロードします。
testUploadLocalM3u8(accessKeyId, accessKeySecret);
// 2. Web ベースの M3U8 オーディオまたはビデオファイルをアップロードします。
testUploadWebM3u8(accessKeyId, accessKeySecret);
}
/**
* ローカルの M3U8 ビデオまたはオーディオファイルを ApsaraVideo VOD にアップロードします。デフォルトでは、M3U8 ファイルとそのシャードは同じディレクトリにあります。sliceFilenames が空の場合、シャードアドレスは同じディレクトリから解析されます。
*
* @param request ローカル M3U8 ファイルをアップロードするリクエスト。
* m3u8Filename: ローカル M3U8 マニフェストの絶対パス。M3U8 ファイル内のシャード情報は相対パスである必要があります。URL や絶対ローカルパスを含めることはできません。
* sliceFilenames: TS シャードの絶対パスのリスト。このパラメーターを指定すると、このリストが使用されます。このパラメーターを指定しない場合、m3u8Filename で指定された m3u8 ファイルが自動的に解析されます。
*/
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"
};
// TS シャードファイルのリスト。このパラメーターは任意です。このパラメーターを指定しない場合、シャードアドレスは M3U8 ファイルから直接解析されます。
request.setSliceFilenames(sliceFilenames);
/* マルチパートアップロードの各パートのサイズ。デフォルト値: 2 MB。*/
request.setPartSize(2 * 1024 * 1024L);
/* マルチパートアップロードの同時スレッド数。デフォルト値: 1。注: この構成はサーバーの CPU リソースを消費します。サーバーのパフォーマンスに基づいてスレッド数を指定してください。*/
request.setTaskNum(1);
/* ウォーターマークを表示するかどうかを指定します。このパラメーターは任意です。テンプレートグループ ID を指定した場合、ウォーターマークはテンプレートグループの構成に基づいて表示されます。*/
//request.setShowWaterMark(true);
/* カスタムメッセージコールバック設定とアップロードアクセラレーション設定。このパラメーターは任意です。Extend はカスタム拡張設定を指定します。MessageCallback はメッセージコールバック設定を指定します。AccelerateConfig はアップロードアクセラレーション設定を指定します。この機能を使用する前に、アップロードアクセラレーション機能を有効にする必要があります。*/
//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。このパラメーターは任意です。*/
//request.setCateId(-1L);
/* ビデオタグ。複数のタグはカンマ (,) で区切ります。このパラメーターは任意です。*/
//request.setTags("Tag 1,Tag 2");
/* ビデオの説明。このパラメーターは任意です。*/
//request.setDescription("Video description");
/* サムネイル URL。このパラメーターは任意です。*/
//request.setCoverURL("http://cover.sample.com/sample.jpg");
/* テンプレートグループ ID。このパラメーターは任意です。*/
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* ワークフロー ID。このパラメーターは任意です。*/
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* ストレージリージョン。このパラメーターは任意です。*/
//request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
/* アプリケーション ID を設定します。*/
// request.setAppId("app-1000000");
/* ApsaraVideo VOD エンドポイント。*/
// request.setApiRegionId("cn-shanghai");
/* ECS デプロイメントリージョン。*/
// request.setEcsRegionId("cn-shanghai");
/* プロキシを構成します。このパラメーターは任意です。*/
//OSSConfig ossConfig = new OSSConfig();
/* <必須> プロキシサーバーホスト。*/
//ossConfig.setProxyHost("<yourProxyHost>");
/* <必須> プロキシサーバーポート。*/
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用されるプロトコル。有効な値: HTTP および HTTPS。デフォルト値: HTTP。*/
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP の User-Agent ヘッダーです。デフォルト値: aliyun-sdk-java。*/
//ossConfig.setUserAgent("<yourUserAgent>");
/* プロキシサーバー認証用のユーザー名。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* プロキシサーバー認証用のパスワード。このパラメーターは 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());
}
/**
* Web ベースの M3U8 ビデオまたはオーディオファイルを ApsaraVideo VOD にアップロードします。ファイルは最初に一時的なローカルディレクトリにダウンロードされ、その後 ApsaraVideo VOD ストレージにアップロードされるため、十分なローカルディスク領域が必要です。
*
* @param request Web ベースの M3U8 ファイルをアップロードするリクエスト。
* m3u8FileURL: Web ベースの M3U8 マニフェストの URL。M3U8 ファイル内のシャード情報は相対パスである必要があります。URL や絶対ローカルパスを含めることはできません。
* sliceFileURLs: TS シャードの URL のリスト。TS シャード URL のリストは自分で作成する必要があります。
*/
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"
};
// TS シャードアドレス。このパラメーターは任意です。このパラメーターを指定しない場合、シャードアドレスは m3u8FileURL から直接解析されます。
request.setSliceFileURLs(sliceFileURLs);
/* ダウンロードしたファイルの一時ストレージディレクトリ。このディレクトリはカスタマイズできます。ディレクトリを指定しない場合、ファイルはプログラムが実行されるディレクトリに保存されます。*/
// request.setGlobalLocalFilePath("/User/download/");
/* マルチパートアップロードの各パートのサイズ。デフォルト値: 2 MB。*/
request.setPartSize(2 * 1024 * 1024L);
/* マルチパートアップロードの同時スレッド数。デフォルト値: 1。注: この構成はサーバーの CPU リソースを消費します。サーバーのパフォーマンスに基づいてスレッド数を指定してください。*/
request.setTaskNum(1);
/* ウォーターマークを表示するかどうかを指定します。このパラメーターは任意です。テンプレートグループ ID を指定した場合、ウォーターマークはテンプレートグループの構成に基づいて表示されます。*/
//request.setShowWaterMark(true);
/* カスタムメッセージコールバック設定とアップロードアクセラレーション設定。このパラメーターは任意です。Extend はカスタム拡張設定を指定します。MessageCallback はメッセージコールバック設定を指定します。AccelerateConfig はアップロードアクセラレーション設定を指定します。この機能を使用する前に、アップロードアクセラレーション機能を有効にする必要があります。*/
//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。このパラメーターは任意です。*/
//request.setCateId(-1L);
/* ビデオタグ。複数のタグはカンマ (,) で区切ります。このパラメーターは任意です。*/
//request.setTags("Tag 1,Tag 2");
/* ビデオの説明。このパラメーターは任意です。*/
//request.setDescription("Video description");
/* サムネイル URL。このパラメーターは任意です。*/
//request.setCoverURL("http://cover.example.com/sample.jpg");
/* テンプレートグループ ID。このパラメーターは任意です。*/
//request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
/* ワークフロー ID。このパラメーターは任意です。*/
//request.setWorkflowId("d4430d07361f0*be1339577859b0****");
/* ストレージリージョン。このパラメーターは任意です。*/
//request.setStorageLocation("in-2017032321****-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
/* アプリケーション ID を設定します。*/
//request.setAppId("app-100****");
/* ApsaraVideo VOD エンドポイント。*/
//request.setApiRegionId("cn-shanghai");
/* ECS デプロイメントリージョン。*/
// request.setEcsRegionId("cn-shanghai");
/* プロキシを構成します。このパラメーターは任意です。*/
//OSSConfig ossConfig = new OSSConfig();
/* <必須> プロキシサーバーホスト。*/
//ossConfig.setProxyHost("<yourProxyHost>");
/* <必須> プロキシサーバーポート。*/
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用されるプロトコル。有効な値: HTTP および HTTPS。デフォルト値: HTTP。*/
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP の User-Agent ヘッダーです。デフォルト値: aliyun-sdk-java。*/
//ossConfig.setUserAgent("<yourUserAgent>");
/* プロキシサーバー認証用のユーザー名。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* プロキシサーバー認証用のパスワード。このパラメーターは 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());
}
}アップロードアクセラレーション
ギガバイトまたはテラバイトサイズの大きなファイルをアップロードする場合や、中国本土から シンガポール リージョンのストレージの場所にビデオをアップロードするなど、リージョンをまたいでアップロードする場合は、アップロードアクセラレーション機能を有効にできます。詳細については、「アップロードアクセラレーションの有効化」をご参照ください。アップロードアクセラレーションを有効にした後、対応する キーと値 のペア AccelerateConfig をアップロード構成の UserData オブジェクトに追加する必要があります。オブジェクトが存在しない場合は、作成する必要があります。次のコードに例を示します。
request.setUserData("{\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");パラメーターの説明
名前 | タイプ | 説明 |
Type | string | アップロードアクセラレーションを有効にするタイプ。oss のみがサポートされています。 |
Domain | string | バケットの高速化ドメイン名。デフォルトのプロトコルは HTTPS です。 説明 アップロードアクセラレーションを有効にした後に割り当てられる高速化エンドポイント (例: vod-*******.oss-accelerate.aliyuncs.com) を使用します。 |
シナリオ 2: イメージのアップロード
サンプルコードを展開して表示
public class UploadImageDemo {
// 必須。AccessKey ペアを指定します。
// Alibaba Cloud アカウントの AccessKey ペアは、すべての API にアクセスする権限を持っています。API の呼び出しや日常の O&M には、RAM ユーザーの AccessKey ペアを使用することを推奨します。
// AccessKey ID と AccessKey Secret をプロジェクトコードにハードコーディングしないことを強く推奨します。ハードコーディングすると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
// この例では、環境変数から AccessKey ペアを読み取って API アクセスを認証する方法を示します。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および 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) {
// イメージをアップロードします。
// 1. ローカルイメージファイルをアップロードします。
testUploadImageLocalFile(accessKeyId, accessKeySecret);
// 2. ストリーミングアップロードを使用して、ファイルストリームまたはネットワークストリームをイメージとしてアップロードします。
testUploadImageStream(accessKeyId, accessKeySecret);
}
/**
* ローカルイメージファイルアップロード用の API。
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadImageLocalFile(String accessKeyId, String accessKeySecret) {
/* イメージタイプ。このパラメーターは必須です。有効な値: default、cover、watermark。*/
String imageType = "cover";
UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType);
request.setImageType("cover");
/* イメージのファイル名拡張子。このパラメーターは任意です。有効な値: png、jpg、jpeg。*/
//request.setImageExt("png");
/* イメージのタイトル。このパラメーターは任意です。タイトルは最大 128 バイトの長さで、UTF-8 でエンコードされている必要があります。*/
//request.setTitle("Image Title");
/* イメージタグ。このパラメーターは任意です。単一のタグは最大 32 バイトの長さです。最大 16 個のタグを追加できます。複数のタグはカンマ (,) で区切ります。タグは UTF-8 でエンコードされている必要があります。*/
//request.setTags("Tag 1,Tag 2");
/* ストレージリージョン。このパラメーターは任意です。*/
//request.setStorageLocation("out-4f3952f78c0211e8b30200****.oss-cn-shanghai.aliyuncs.com");
/* ストリーミングアップロードの場合、InputStream は必須で、fileName は任意です。fileName はソースファイル名 (例: FileName.png) を指定します。*/
String fileName = "/Users/demo/png/test.png";
request.setFileName(fileName);
/* デフォルトのアップロード進行状況コールバックを有効にします。*/
//request.setPrintProgress(false);
/* カスタムアップロード進行状況コールバックを設定します。コールバックは VoDProgressListener を継承する必要があります。*/
/* この機能はデフォルトで無効になっています。この機能を有効にすると、アップロード中にサーバーがログにアップロードの詳細を返します。このメッセージを受信する必要がない場合は、この機能を無効にしてください。*/
// request.setProgressListener(new PutObjectProgressListener());
/* アプリケーション ID を設定します。*/
//request.setAppId("app-100****");
/* ApsaraVideo VOD エンドポイント。*/
//request.setApiRegionId("cn-shanghai");
/* プロキシを構成します。このパラメーターは任意です。*/
//OSSConfig ossConfig = new OSSConfig();
/* <必須> プロキシサーバーホスト。*/
//ossConfig.setProxyHost("<yourProxyHost>");
/* <必須> プロキシサーバーポート。*/
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用されるプロトコル。有効な値: HTTP および HTTPS。デフォルト値: HTTP。*/
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP の User-Agent ヘッダーです。デフォルト値: aliyun-sdk-java。*/
//ossConfig.setUserAgent("<yourUserAgent>");
/* プロキシサーバー認証用のユーザー名。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* プロキシサーバー認証用のパスワード。このパラメーターは 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。このメソッドはファイルストリームとネットワークストリームをサポートします。
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadImageStream(String accessKeyId, String accessKeySecret) {
/* イメージタイプ。このパラメーターは必須です。有効な値: default、cover、watermark。*/
String imageType = "cover";
UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType);
/* イメージのファイル名拡張子。このパラメーターは任意です。有効な値: png、jpg、jpeg。*/
//request.setImageExt("png");
/* イメージのタイトル。このパラメーターは任意です。タイトルは最大 128 バイトの長さで、UTF-8 でエンコードされている必要があります。*/
//request.setTitle("Image Title");
/* イメージタグ。このパラメーターは任意です。単一のタグは最大 32 バイトの長さです。最大 16 個のタグを追加できます。複数のタグはカンマ (,) で区切ります。タグは UTF-8 でエンコードされている必要があります。*/
//request.setTags("Tag 1,Tag 2");
/* ストレージリージョン。このパラメーターは任意です。*/
//request.setStorageLocation("out-4f3952f78c0211e8b30200****.oss-cn-shanghai.aliyuncs.com");
/* ストリーミングアップロードの場合、InputStream は必須で、fileName は任意です。fileName はソースファイル名 (例: FileName.png) を指定します。*/
//request.setFileName("TestFileName.png");
/* デフォルトのアップロード進行状況コールバックを有効にします。*/
// request.setPrintProgress(true);
/* カスタムアップロード進行状況コールバックを設定します。コールバックは VoDProgressListener を継承する必要があります。*/
/* この機能はデフォルトで無効になっています。この機能を有効にすると、アップロード中にサーバーがログにアップロードの詳細を返します。このメッセージを受信する必要がない場合は、この機能を無効にしてください。*/
// request.setProgressListener(new PutObjectProgressListener());
/* アプリケーション ID を設定します。*/
//request.setAppId("app-1000000");
/* プロキシを構成します。このパラメーターは任意です。*/
//OSSConfig ossConfig = new OSSConfig();
/* <必須> プロキシサーバーホスト。*/
//ossConfig.setProxyHost("<yourProxyHost>");
/* <必須> プロキシサーバーポート。*/
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用されるプロトコル。有効な値: HTTP および HTTPS。デフォルト値: HTTP。*/
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP の User-Agent ヘッダーです。デフォルト値: aliyun-sdk-java。*/
//ossConfig.setUserAgent("<yourUserAgent>");
/* プロキシサーバー認証用のユーザー名。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* プロキシサーバー認証用のパスワード。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyPassword("<yourProxyPassword>");
//request.setOssConfig(ossConfig);
// 1. ファイルストリームをアップロードします。
// InputStream fileStream = getFileStream(request.getFileName());
// if (fileStream != null) {
// request.setInputStream(fileStream);
// }
// 2. ネットワークストリームをアップロードします。
String url = "http://test.aliyun.com/image/default/test.png";
InputStream urlStream = getUrlStream(url);
if (urlStream != null) {
request.setInputStream(urlStream);
}
// イメージのアップロードを開始します。
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;
}
} シナリオ 3: 補助メディアアセットのアップロード
サンプルコードを展開して表示
public class UploadAttachedMediaDemo {
// 必須。AccessKey ペアを指定します。
// Alibaba Cloud アカウントの AccessKey ペアは、すべての API にアクセスする権限を持っています。API の呼び出しや日常の O&M には、RAM ユーザーの AccessKey ペアを使用することを推奨します。
// AccessKey ID と AccessKey Secret をプロジェクトコードにハードコーディングしないことを強く推奨します。ハードコーディングすると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
// この例では、環境変数から AccessKey ペアを読み取って API アクセスを認証する方法を示します。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および 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) {
// 補助メディアアセットをアップロードします。
// ローカルの補助メディアアセットファイルをアップロードします。
testUploadAttachedMediaLocalFile(accessKeyId, accessKeySecret);
// ストリーミングアップロードを使用して補助メディアアセットをアップロードします。このメソッドはファイルストリームとネットワークストリームをサポートします。
testUploadAttachedMediaStream(accessKeyId, accessKeySecret);
}
/**
* ローカル補助メディアアセットファイルアップロード用の API。
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadAttachedMediaLocalFile(String accessKeyId, String accessKeySecret) {
/* ビジネスタイプ。*/
String businessType = "watermark";
/* ファイル名拡張子。*/
String mediaExt = "png";
String filename = "/Users/demo/png/test.png";
UploadAttachedMediaRequest request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt);
request.setFileName(filename);
/* タイトル。*/
request.setTitle("test_attached_media");
/* カテゴリ ID。*/
request.setCateId(-1L);
/* タグ。複数のタグはカンマ (,) で区切ります。このパラメーターは任意です。*/
request.setTags("tag1,tag2");
/* 説明。このパラメーターは任意です。*/
request.setDescription("test_desc");
/* ストレージリージョン。このパラメーターは任意です。*/
request.setStorageLocation("out-20170323225118266-5l3hs5****.oss-cn-shanghai.aliyuncs.com");
/* ApsaraVideo VOD エンドポイント。*/
request.setApiRegionId("cn-shanghai");
/* アプリケーション ID を設定します。*/
//request.setAppId("app-1000000");
/* プロキシを構成します。このパラメーターは任意です。*/
//OSSConfig ossConfig = new OSSConfig();
/* <必須> プロキシサーバーホスト。*/
//ossConfig.setProxyHost("<yourProxyHost>");
/* <必須> プロキシサーバーポート。*/
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用されるプロトコル。有効な値: HTTP および HTTPS。デフォルト値: HTTP。*/
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP の User-Agent ヘッダーです。デフォルト値: aliyun-sdk-java。*/
//ossConfig.setUserAgent("<yourUserAgent>");
/* プロキシサーバー認証用のユーザー名。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* プロキシサーバー認証用のパスワード。このパラメーターは 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。このメソッドはファイルストリームとネットワークストリームをサポートします。
*
* @param accessKeyId
* @param accessKeySecret
*/
private static void testUploadAttachedMediaStream(String accessKeyId, String accessKeySecret) {
/* ビジネスタイプ。*/
String businessType = "watermark";
/* ファイル名拡張子。*/
String mediaExt = "png";
String filename = "http://test.aliyun.com/test.png";
UploadAttachedMediaRequest request;
// 1. ファイルストリームをアップロードします。
InputStream fileStream = getFileStream(filename);
request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt);
request.setInputStream(fileStream);
// 2. ネットワークストリームをアップロードします。
// String url = "http://test.aliyun.com/image//test.png";
// InputStream urlStream = getUrlStream(url);
// request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt);
// request.setInputStream(urlStream);
/* タイトル。*/
request.setTitle("test_attached_media");
/* カテゴリ ID。*/
request.setCateId(-1L);
/* タグ。複数のタグはカンマ (,) で区切ります。このパラメーターは任意です。*/
request.setTags("tag1,tag2");
/* 説明。このパラメーターは任意です。*/
request.setDescription("test_desc");
/* ストレージリージョン。このパラメーターは任意です。*/
request.setStorageLocation("out-20170323225118266-5l3****wa.oss-cn-shanghai.aliyuncs.com");
/* ApsaraVideo VOD エンドポイント。*/
request.setApiRegionId("cn-shanghai");
/* アプリケーション ID を設定します。*/
// request.setAppId("app-1000000");
/* プロキシを構成します。このパラメーターは任意です。*/
//OSSConfig ossConfig = new OSSConfig();
/* <必須> プロキシサーバーホスト。*/
//ossConfig.setProxyHost("<yourProxyHost>");
/* <必須> プロキシサーバーポート。*/
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用されるプロトコル。有効な値: HTTP および HTTPS。デフォルト値: HTTP。*/
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP の User-Agent ヘッダーです。デフォルト値: aliyun-sdk-java。*/
//ossConfig.setUserAgent("<yourUserAgent>");
/* プロキシサーバー認証用のユーザー名。このパラメーターは HTTPS プロトコルで必須です。*/
//ossConfig.setProxyUsername("<yourProxyUserName>");
/* プロキシサーバー認証用のパスワード。このパラメーターは 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");
}
}
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;
}
}高度な機能
アップロードプログレスバー
サンプルディレクトリの
PutObjectProgressListener.javaファイルには、アップロード進行状況コールバック関数のサンプルコードが記載されています。このクラスは VoDProgressListener クラスを継承する必要があります。ProgressEvent は、ファイルが OSS にアップロードされるときに生成される進行状況コールバック通知です。各イベント通知のビジネスロジックをカスタマイズできます。
次のコードに例を示します。
サンプルコードを展開して表示
/** * アップロード進行状況コールバックメソッドのクラス。 * このイベントコールバックは、アップロード進行状況コールバックを有効にした後にのみ有効になります。 * OSS へのマルチパートアップロードが成功したか失敗したかに関係なく、対応するコールバックイベントがトリガーされます。ビジネスロジックに基づいてイベントコールバックを処理できます。 * オーディオまたはビデオ情報が作成された後、このアップロード進行状況コールバックの videoId は、このアップロードで生成されたビデオの ID です。ビデオ ID に基づいてオーディオおよびビデオファイルを管理できます。 * イメージ情報が作成された後、このアップロード進行状況コールバックの ImageId は、このアップロードで生成されたイメージの ID です。イメージ ID に基づいてイメージを管理できます。 */ public class PutObjectProgressListener implements VoDProgressListener { /** * OSS に正常にアップロードされたバイト数。 */ private long bytesWritten = 0; /** * ソースファイルの合計バイト数。 */ private long totalBytes = -1; /** * このアップロードの成功フラグ。 */ private boolean succeed = false; /** * ビデオ ID。 */ private String videoId; /** * イメージ ID。 */ private String imageId; public void progressChanged(ProgressEvent progressEvent) { long bytes = progressEvent.getBytes(); ProgressEventType eventType = progressEvent.getEventType(); switch (eventType) { // アップロード開始イベント。 case TRANSFER_STARTED_EVENT: if (videoId != null) { System.out.println("Start to upload videoId "+videoId+"......"); } if (imageId != null) { System.out.println("Start to upload imageId "+imageId+"......"); } break; // アップロードするファイルの合計サイズを通知するイベント。このイベントはローカルファイルのアップロードでのみサポートされます。 case REQUEST_CONTENT_LENGTH_EVENT: this.totalBytes = bytes; System.out.println(this.totalBytes + "bytes in total will be uploaded to OSS."); break; // アップロードされたファイルのサイズを通知するイベント。 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+" bytes have been written at this time, upload progress: "+ percent +"%(" + this.bytesWritten + "/" + this.totalBytes + ")"); } else { System.out.println(bytes + " bytes have been written at this time, upload sub total : " + "(" + this.bytesWritten + ")"); } break; // ファイルが正常にアップロードされたことを通知するイベント。 case TRANSFER_COMPLETED_EVENT: this.succeed = true; if (videoId != null) { System.out.println("Succeed to upload videoId " + videoId + " , " + this.bytesWritten + " bytes have been transferred in total."); } if (imageId != null) { System.out.println("Succeed to upload imageId " + imageId + " , " + this.bytesWritten + " bytes have been transferred in total."); } break; // ファイルのアップロードが失敗したことを通知するイベント。 case TRANSFER_FAILED_EVENT: if (videoId != null) { System.out.println("Failed to upload videoId " + videoId + " , " + this.bytesWritten + " bytes have been transferred."); } if (imageId != null) { System.out.println("Failed to upload imageId " + imageId + " , " + this.bytesWritten + " bytes have been transferred."); } 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; } }一時トークンの更新
サンプルディレクトリの
RefreshSTSTokenImpl.javaファイルには、一時トークンを更新するためのサンプルコードが記載されています。次に例を示します。
サンプルコードを展開して表示
/** * @author vod * 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; } }
よくある質問
関連する依存関係が見つからないのはなぜですか? この問題は、開発環境の違いによって発生する可能性があり、通常は IntelliJ IDEA のコンパイルの問題が原因です。必要なリソースパッケージをインポートしている場合は、次の解決策を試してください。
Maven プロジェクトで、右側の [Maven] をクリックし、[m] アイコンをクリックしてから、
mvn idea:moduleを入力してリソースを再読み込みします。
メニューバーで、[ビルド] > [プロジェクトの再ビルド] を選択してプロジェクトを再ビルドします。

aliyun-java-vod-upload-1.4.15.jar パッケージをプロジェクトのリソースディレクトリにコピーし、ローカル依存関係として Maven の依存関係に追加します。

<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>ローカル依存関係を追加した後の 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>