public class UploadVideoDemo {
// 必須:AccessKey ペアを指定します。
// Alibaba Cloud アカウントの AccessKey ペアはすべての API にアクセスできます。API へのアクセスや日常の O&M には、RAM ユーザーの使用を推奨します。
// AccessKey ID と AccessKey Secret をプロジェクトにハードコードしないでください。ハードコードすると、AccessKey ペアが漏えいし、アカウント内のすべてのリソースが危険にさらされる可能性があります。
// この例では、AccessKey ペアを環境変数から取得します。サンプルコードを実行する前に、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. ローカルファイルのアップロードおよびファイルストリームのアップロードの場合は、fileName をアップロードするファイルの絶対パスに設定します。例:/User/sample/FileName.mp4。(必須)
// 2. ネットワークストリームのアップロードの場合は、fileName をソースファイル名に設定します。例:FileName.mp4。(必須)
// 3. ストリーミングのアップロードの場合は、fileName をソースファイル名に設定します。例: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);
}
/**
* ローカルファイルのアップロード
*
* @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);
/* 再開可能なアップロードを有効にするかどうかを指定します。デフォルトでは無効です。ネットワークが不安定な場合やプログラムがクラッシュした場合でも、同じアップロードリクエストを再送信することで、中断点からアップロードを再開できます。アップロードに 3,000 秒以上かかる大容量ファイルには、この機能を使用することを推奨します。
注:再開可能なアップロードを有効にすると、アップロードの進行状況がローカルファイルに書き込まれます。これにより、アップロード速度に影響する場合があります。要件に応じて、この機能を有効にするかどうかを判断してください。 */
//request.setEnableCheckpoint(false);
/* 低速な OSS リクエストをログに記録するための時間しきい値。パートのアップロードにかかる時間がこのしきい値を超えると、システムはデバッグログを出力します。これらのログが出力されないようにするには、しきい値を大きくしてください。単位:ミリ秒。デフォルト値:300000。 */
//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("Tag1,Tag2");
/* 任意。動画の説明。 */
//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");
/* デフォルトのアップロード進行状況コールバックを有効にするかどうかを指定します。デフォルトでは有効です。この例では無効化 (false) しています。 */
//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("");
/* 必須。プロキシサーバーのポート番号。 */
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP リクエストの User-Agent ヘッダーです。デフォルト値:aliyun-sdk-java。 */
//ossConfig.setUserAgent("");
/* プロキシサーバー認証に使用するユーザー名。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
//ossConfig.setProxyUsername("");
/* プロキシサーバー認証に使用するパスワード。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
//ossConfig.setProxyPassword("");
//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 が無効な場合、アップロードには影響せず、サービスは動画 ID とエラーコードを返します。それ以外の場合、アップロードが失敗すると動画 ID は返されません。エラーコードに基づいて問題を解決してください。 */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* ネットワークストリームのアップロード。この方法では再開可能なアップロードに対応しており、最大 48.8 TB の単一ファイルをアップロードできます。
* この方法では、まず指定した URL からファイルをローカルディスクにダウンロードし、その後ファイルをアップロードします。ローカルディスクに十分な空き容量があることを確認してください。
* 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("Tag1,Tag2");
/* 任意。動画の説明。 */
//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("");
/* 必須。プロキシサーバーのポート番号。 */
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP リクエストの User-Agent ヘッダーです。デフォルト値:aliyun-sdk-java。 */
//ossConfig.setUserAgent("");
/* プロキシサーバー認証に使用するユーザー名。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
//ossConfig.setProxyUsername("");
/* プロキシサーバー認証に使用するパスワード。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
//ossConfig.setProxyPassword("");
//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 が無効な場合、アップロードには影響せず、サービスは動画 ID とエラーコードを返します。それ以外の場合、アップロードが失敗すると動画 ID は返されません。エラーコードに基づいて問題を解決してください。 */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* ファイルストリームのアップロード
*
* @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("Tag1,Tag2");
/* 任意。動画の説明。 */
//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("");
/* 必須。プロキシサーバーのポート番号。 */
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP リクエストの User-Agent ヘッダーです。デフォルト値:aliyun-sdk-java。 */
//ossConfig.setUserAgent("");
/* プロキシサーバー認証に使用するユーザー名。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
//ossConfig.setProxyUsername("");
/* プロキシサーバー認証に使用するパスワード。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
//ossConfig.setProxyPassword("");
//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 が無効な場合、アップロードには影響せず、サービスは動画 ID とエラーコードを返します。それ以外の場合、アップロードが失敗すると動画 ID は返されません。エラーコードに基づいて問題を解決してください。 */
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
/**
* ストリーミングアップロードの実行
*
* @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("Tag1,Tag2");
/* 任意。動画の説明。 */
//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("");
/* 必須。プロキシサーバーのポート番号。 */
//ossConfig.setProxyPort(-1);
/* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
//ossConfig.setProtocol("HTTP");
/* ユーザーエージェント。HTTP リクエストの User-Agent ヘッダーです。デフォルト値:aliyun-sdk-java。 */
//ossConfig.setUserAgent("");
/* プロキシサーバー認証に使用するユーザー名。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
//ossConfig.setProxyUsername("");
/* プロキシサーバー認証に使用するパスワード。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
//ossConfig.setProxyPassword("");
//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 が無効な場合、アップロードには影響せず、サービスは動画 ID とエラーコードを返します。それ以外の場合、アップロードが失敗すると動画 ID は返されません。エラーコードに基づいて問題を解決してください。
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
}