Java Upload SDK

최신 업데이트:2023-02-01 18:26:06

목록


사용자의 편의를 위해 클라우드 VoD에 파일을 업로드하고 업로드 기능을 자신의 프로젝트에 통합할 수 있도록 Java 언어로 업로드 SDK 툴킷을 제공합니다. SDK를 애플리케이션에 내장하여 클라우드 VoD에 비디오를 업로드할 수 있습니다.

기능

  • 일반 업로드와 멀티파트 업로드를 모두 지원합니다.
  • 멀티 스레드 업로드를 지원합니다.
  • 파일 크기가 50MB보다 작으면 일반 업로드가 사용됩니다.
  • 파일 크기가 50MB를 초과하면 멀티 파트 업로드가 사용됩니다.
  • 파일이 업로드되면 해시가 자동으로 파일 무결성을 확인하는 데 사용됩니다.
  • 파일 업로드가 실패하면 SDK는 파일 다시 업로드를 위해 자동으로 재시도를 수행합니다(기본적으로 3회 재시도).

요구사항

  • SDK는 자바 플랫폼만 지원하고 JDK 1.6 이상이 필요합니다. JDK 1.8을 권장합니다.

  • SDK를 사용하기 전에 클라우드 VoD 서비스를 사용할 수 있는지 확인하고 AccountID와 AccessKey Secret을 확인하십시오.

사용방법

SDK 시작하기

  1. Java SDK 를 다운로드하고 압축을 풉니다.
  2. cnc-java-sdk-cloudv-upload-xxx.jar를 Java 프로젝트로 가져옵니다.
  3. lib 폴더에 있는 모든 제3자 종속 jar 패키지를 Java 프로젝트에 추가합니다.

파일 업로드

** CloudvUploadHandler** 클래스를 통해 업로드할 수 있습니다. 다음은 이 수업에 대한 개요입니다:

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

입력 파라미터

파라미터 유형 필수 여부 설명
uploadfilePath string 업로드할 파일의 전체 경로입니다.
userId string 필수 계정 ID, 고객 지원에 문의하여 계정 ID를 가져올 수 있습니다.
secretKey string AccessKey 비밀. 콘솔의 보안 설정 > 접근 제어 > 사용자 정보 관리 > AccessKey 관리 에서 접근 키 암호를 가져올 수 있습니다.
uploadObserver uploadObserver 아니오 업로드 시작, 업로드 성공, 업로드 실패 및 업로드 진행률에 대한 콜백 알림을 받는 데 사용되는 인터페이스 uploadObserver를 구현하는 클래스 CustomUploadObserver의 인스턴스입니다. 자세한 내용은 업로드 진행률 알림을 참조하십시오.
uploadFileParam uploadFileParam 아니오 다음과 같이 업로드 과정에서 설정에 대한 각종 파라미터를 설정하는 데 사용합니다.

UploadFileParam에 대한 설명

파라미터 유형 필수 여부 설명
categoryNameBeanList 목록 선택적인 비디오 카테고리, 상위 카테고리와 하위 카테고리를 한 번에 설정할 수 있습니다.
예를 들어, [{“childName”:“child-category1”,“parentName”:“parent-category1”},{“childName”:“child-category2”,“parentName”:“parent-category2” } ].
transCodeCombineName string 선택적인 트랜스코딩 템플릿. 지정하면 파일이 업로드된 후 트랜스코딩이 자동으로 수행됩니다.
waterMarkName string 선택적인 비디오에 추가할 워터마크입니다. 이 파라미터는 transCodeCombineName을 통해 특정 트랜스코딩 템플릿을 지정한 경우에만 유효합니다. transCodeCombineName만 지정하고 waterMarkName을 지정하지 않으면 워터마크도 작동하지 않습니다.
도메인 string 선택적인 Play 도메인입니다. 도메인을 입력합니다. 비워 두거나 도메인이 존재하지 않으면 주문형 비디오의 기본 도메인이 사용됩니다.

응답

유형 설명
string 비디오 ID, 업로드된 비디오의 고유 ID입니다.

예시

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();
    }
}

고급 구성

일반적으로 기본 설정은 만족스러운 업로드 속도를 보장합니다. 업로드 속도 또는 안정성이 요구에 충족하지 못할 경우 업로드 파라미터를 조정하여 추가 설정을 할 수 있습니다. 이는 전 세계적으로 한 번에 적용됩니다.

설정 업로드

파라미터

파라미터 설명 기본값 설정 예
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 여러 부분으로 구성된 업로드를 사용할 때의 스레드 수, 범위 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 내에 4가지 함수 onBegin, onSuccess4, onFail, onProcess를 구현합니다.
  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();
        }
    }
이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.