Java Upload SDK

最終更新日:2023-02-01 18:26:06

リスト


クラウドVoDにファイルをアップロードし、アップロード機能をご自身のプロジェクトに統合するお客様の便宜のために、Java言語のアップロードSDKツールキットを提供しています。 SDKをご自身のアプリケーションに埋め込み、クラウドVoDに動画をアップロードすることができます。

機能

  • 通常のアップロードとマルチパートアップロードの両方に対応しています。
  • マルチスレッドアップロードをサポートします。
  • ファイルサイズが50MB未満の場合、適宜通常アップロードが使用されます。
  • ファイルサイズが50MBを超える場合、適宜、マルチパートアップロードが使用されます。
  • ファイルがアップロードされると、ファイルの整合性を検証するためにハッシュが自動的に使用されます。
  • ファイルのアップロードに失敗した場合、SDKは自動的にファイルを再アップロードするために再試行を行い、デフォルトでは3回の再試行を行います。

要件

  • SDKはJavaプラットフォームのみをサポートしており、JDK 1.6以上が必要です。 JDK 1.8を推奨します。

  • SDKを使用する前に、クラウドVoDサービスが利用可能であることを確認し、AccountIDとアクセスキーのシークレットを取得してください。

説明

SDK を使ってみる

  1. Java SDKをダウンロードして解凍します。
  2. cnc-java-sdk-cloudv-upload-xxx.jarをJavaプロジェクトにインポートします。
  3. lib フォルダーにあるサードパーティの依存するすべての jar パッケージを Java プロジェクトに追加します。

ファイルのアップロード

クラス ** CloudvUploadHandler** を介してアップロードできます。ここでは、このクラスの概要を説明します。

public String upload(String uploadFilePath, String userId, String secretKey, UploadObserver uploadObserver, UploadFileParam uploadFileParam)

入力パラメータ

パラメータ タイプ 必須 説明
uploadfilePath 文字列 はい アップロードするファイルのフルパス。
userId 文字列 必要な アカウント ID。カスタマーサポートに連絡して、アカウント ID を取得することができます。
secretKey 文字列 はい AccessKeyシークレットは、コンソールの**[セキュリティ設定]** > [アクセス制御] > [ユーザー情報管理] > [アクセスキー管理] でアクセスキーのシークレットを取得することができます。
uploadObserver アップロードオブサーバー いいえ アップロードの開始、アップロードの成功、アップロードの失敗、アップロードの進行状況のコールバック通知を受信するために使用されるインターフェイスuploadObserverを実装する、クラスCustomUploadObserverのインスタンス。詳しくは、アップロードの進行状況の通知をご覧ください。
uploadFileParam アップロードファイルパラメータ いいえ 以下で説明するように、アップロードプロセス中に、設定の様々なパラメータを設定するために使用されます。

UploadFileParamの説明

パラメータ タイプ 必須 説明
categoryNameBeanList リスト オプション ビデオ カテゴリの場合、カテゴリとサブカテゴリの両方を一度に親に設定することができます。
例えば、 [{“childName”:“子カテゴリ1”,“parentName”:“親カテゴリ1”},{“childName”:“子カテゴリ2”,“parentName”:“親カテゴリ2” } ]。
transCodeCombineName 文字列 オプション トランスコードテンプレート。指定した場合、ファイルがアップロードされた後、トランスコードが自動的に実行されます。
waterMarkName 文字列 オプション ビデオに追加する透かし。このパラメータは、transCodeCombineNameで特定のトランスコードテンプレートが指定された場合のみ有効です。 transCodeCombineName のみが指定され、waterMarkName が指定されていない場合、ウォーターマークも機能しません。
domain 文字列 オプション ドメイン名を再生する.ドメイン名を記入し、空欄またはドメイン名が存在しない場合は、ビデオオンデマンドのデフォルトのドメイン名が使用されます。

レスポンス

タイプ 説明
string アップロードされたビデオの一意の識別情報であるビデオ ID。

public static void main(String[] args) {
    try {
        CloudvUploadHandler cloudvUploadHandler = new CloudvUploadHandler();
        String filePath = "F:\\test.mp4";
        String userId = "xxxxxx";
        String secretKey = "xxxxxxxxxxxxxxxxxxxx";
        CategoryNameBean categoryNameBean = new CategoryNameBean();
        categoryNameBean.setParentName("Parent Category");
        categoryNameBean.setChildName("Child Category");
        List<CategoryNameBean> categoryNameBeanList = new ArrayList<CategoryNameBean>();
        categoryNameBeanList.add(categoryNameBean);
        String transCodeCombineName = "Transcoding Template Name";
        String waterMarkName = "Watermark";
        String domain = "Your domain";

        UploadFileParam uploadFileParam = new UploadFileParam();
        uploadFileParam.setCategoryNameBeanList(categoryNameBeanList);
        uploadFileParam.setTransCodeCombineName(transCodeCombineName);
        uploadFileParam.setWaterMarkName(waterMarkName);
        uploadFileParam.setDomain(domain);
        String videoId = cloudvUploadHandler.upload(filePath, userId, secretKey, null, uploadFileParam);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

高度な設定

一般的に、デフォルト設定で、満足のいくアップロード速度を実現できます。アップロードの速度や安定性がお客様の要件を満たしていない場合、アップロードパラメータを調整して追加の設定を行うと、一度にグローバルに有効になります。

設定をアップロードする

パラメータ

パラメータ 説明 デフォルト 構成例
BLOCK_SIZE マルチパートアップロードのブロックサイズ。値の範囲:4M-32M、4の倍数です。 4MB BaseBlockUtil.BLOCK_SIZE = 32 * BaseBlockUtil.MB
CHUNK_SIZE マルチパートアップロードのチャンクサイズ。値の範囲:4M-32Mで、4の倍数です。この値は設定されたブロックサイズより大きくしないでください。
スライスサイズを適切に大きくすると、アップロード速度が向上する場合があります。
4MB BaseBlockUtil.CHUNK_SIZE = 4 * BaseBlockUtil.MB
THREAD_NUN マルチパート uplaod を使用する場合のスレッド数。1-10 の範囲です。 5 BaseBlockUtil。 THREAD_NUN = 5
FILE_BUFFER_SIZE アップロードするファイルのコンテンツを読み込むためのバッファサイズ。バッファサイズを適切に大きくすると、アップロード速度が向上する場合がありますが、メモリ使用量が増加する可能性があります。値は 4 の倍数である必要があります。 4KB BaseBlockUtil.FILE_BUFFER_SIZE = 1024 * BaseBlockUtil.KB
TRIED_TIMES アップロードに失敗した場合の自動再試行の数。 3 BaseBlockUtil.TRIED_TIMES = 5

public static void main(String[] args) {
    try {
        //Set the block size
        BaseBlockUtil.BLOCK_SIZE = 32 * BaseBlockUtil.MB;
        //Set the chunk size
        BaseBlockUtil.CHUNK_SIZE = 4 * BaseBlockUtil.MB;
        //Set the number of threads
        BaseBlockUtil.THREAD_NUN = 5;
        //Set the buffer size
        BaseBlockUtil.FILE_BUFFER_SIZE = 2 * BaseBlockUtil.MB;
        //Set retry times
        BaseBlockUtil.TRIED_TIMES = 5;
        CloudvUploadHandler cloudvUploadHandler = new CloudvUploadHandler();
        String filePath = "D:\\test.mp4";
        String userId = "xxxxxx";
        String secretKey = "xxxxxxxxxxxxxxxxxxxx";
        String videoId = cloudvUploadHandler.upload(filePath, userId, secretKey, null);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

アップロードの進行状況の通知

アップロードの開始、アップロードの進行状況、アップロードの成功、アップロードの失敗のアップロードの進行状況の取得など、アップロードの進行状況通知をカスタマイズすることができます。

はじめに

  1. インターフェイス UploadObserver を実装する新しいクラスを作成します。
  2. UploadObserver内に、onBegin、onSuccess4、onFail、onProcessの4つの関数を実装します。
  3. cloudvUploadHandler.uploadを呼び出す際のパラメータにuploadObserverを追加します。
public interface UploadObserver {
    /**
     * Call this function before upload
     * @param id
     * @param filePath
     */
    void onBegin(String id, String filePath);

    /**
     * Call this function after upload success
     * @param result
     */
    void onSuccess(UploadResult result);

    /**
     * Call this function when there is an error
     * @param ex
     */
    void onFail(Exception ex);

    /**
     * Callback after multi-part upload
     *
     * @param uploaded 
     * @param total    
     */
    void onProcess(long uploaded, long total);
}

UploadObserverの実装方法:

public class CustomUploadObserver implements UploadObserver {
    private static final Logger LOGGER = LoggerFactory.getLogger(CustomUploadObserver.class);
    private String videoId;
    private String filePath;

    @Override
    public void onBegin(String videoId, String filePath) {
        this.videoId = videoId;
        this.filePath = filePath;
        LOGGER.info("videoId:{}, filePath:{}, Start upload", videoId, filePath);
    }

    @Override
    public void onSuccess(UploadResult result) {
        LOGGER.info("videoId:{}, filePath:{}, Success upload", videoId, filePath);
    }

    @Override
    public void onFail(Exception ex) {
        String message = "videoId:" + videoId + "filePath:" + filePath + ",Error occurs during upload";
        LOGGER.error("message:{}, error:", message, ex);
        throw new RuntimeException(message, ex);
    }

    @Override
    public void onProcess(long uploaded, long total) {
        LOGGER.info("videoId:{},filePath:{}, Upload progress:{},", videoId, filePath, uploaded * 100 / total + "%");
    }
}

呼び出し方法:

public static void main(String[] args) {
        try {
            CloudvUploadHandler cloudvUploadHandler = new CloudvUploadHandler();
            String filePath = "D:\\test.mp4";
            String userId = "xxxxxx";
            String secretKey = "xxxxxxxxxxxxxxxxxxxx";
            CustomUploadObserver uploadObserver = new CustomUploadObserver();
            String videoId = cloudvUploadHandler.upload(filePath, userId, secretKey,  uploadObserver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }