지원 고객 지원 문의 | 시스템 상태 시스템 상태
페이지 내용

    동적 인제스트를 위한 소스 파일 업로드 API

    이 항목에서는 동적 인제스트용 소스 파일 업로드 API를 사용하여 Video Cloud 계정에 비디오를 추가하는 방법에 대해 알아봅니다. 소스 파일 업로드 API는 동적 인제스트를 통해 소스 파일을 비디오 클라우드로 업로드 (“푸시”) 하는 기능을 제공합니다.

    서문

    소스 파일 업로드를 통한 수집의 경우 Brightcove는 비디오 및 자산 파일을 업로드 할 수있는 S3 버킷을 제공하고 Dynamic Ingest는 자체 S3 버킷 또는 URL에서와 동일한 방식으로 S3 버킷에서 비디오를 가져옵니다. 아래 다이어그램은 기본 동적 수집과 소스 파일 업로드를 통한 수집을위한 워크 플로의 차이점을 보여줍니다.

    워크플로 차이점
    워크플로 차이점

    자주하는 질문

    동영상은 일시적으로 저장되는 기간과 URL은 언제 무효화 되나요?
    동영상은 업로드 된 후 24 시간이 지나면 임시 저장소에서 삭제되며 그 이후에는 URL이 더 이상 유효하지 않습니다.
    S3 자격 증명은Dynamic Ingest API유효한?
    S3 자격 증명은 API가 보낸 후 24 시간 동안도 유효합니다.
    24 시간 후에 비디오 파일이 S3 버킷에서 물리적으로 삭제됩니까?
    동영상이 성공적으로 수집 된 후 S3 버킷에서 삭제됩니까?
    모든 동영상은 성공적으로 처리되었는지 여부에 관계없이 24 시간 후에 임시 저장소에서 삭제됩니다.
    URL을 알고있는 사람이 임시 저장소에있는 동영상에 공개적으로 액세스 할 수 있나요?
    아니요
    보안 자격 증명없이 임시 저장소에서 비디오를 다운로드하거나 볼 수있는 방법이 있습니까?
    아니요
    다른 Brightcove 고객과 공유되는 임시 스토리지에 액세스하기위한 보안 자격 증명이 있습니까?
    아니요, 임시 저장소를 사용하는 모든 고객에게는 고유 한 보안 자격 증명이 제공됩니다.
    다른 Brightcove 고객이 자신의 보안 자격 증명을 사용하여 임시 저장소에있는 내 비디오에 액세스 할 수있는 방법이 있습니까?
    아니요, 보안 자격 증명은 임시 저장소로 푸시 한 동영상에 대한 액세스 만 제공합니다.
    파일 업로드 용 S3 버킷이 상주하는 리전은 어디입니까?
    US-EAST-1 (수정 됨).

    소스 파일 이름

    Brightcove Player에서 비디오 및 자산에 액세스하는 데 문제가 발생하지 않도록하려면 비디오, 이미지 또는 텍스트 트랙 (WebVTT 파일)에 관계없이 소스 파일 이름에 특수 문자를 사용하지 않아야합니다. 이는 원격 자산에도 적용됩니다. 파일 이름에는 다음 만 포함되어야합니다.

    • 1 바이트문자 (대문자 또는 소문자)
    • 번호
    • 대시 (-) 및 밑줄 (_)
    • 공백 URL로 인코딩 된 경우

    인증

    Dynamic Ingest에 대한 클라이언트 자격 증명을 얻는 가장 쉬운 방법은 API 인증을위한 Studio 관리자 페이지 . API 권한의 경우 최소한 다음이 필요합니다.

    • CMS> 비디오 읽기
    • 동적 수집> 만들기
    • Dynamic Ingest> Push Files (새로운 소스 파일 업로드 API)
    API 인증
    API 인증

    푸시 기반 수집을위한 Brightcove API 요청에 대한 인증에는기타 Dynamic Ingest 요청 :

          video-cloud/upload-urls/read

    소스 파일 업로드에 필요한 전체 권한 세트는 다음과 같습니다.

    • 비디오 클라우드/비디오/생성
    • 비디오 클라우드/비디오/읽기
    • 비디오-클라우드/비디오/업데이트
    • 비디오 클라우드 / 업로드 URL / 읽기

    이러한 권한은사진관 . 또는 다음과 같이 POST 요청을 수행하여 OAuth API에서 직접 소스 파일 업로드 API를 사용하기위한 클라이언트 자격 증명을 얻을 수 있습니다.

    요청 URL

          https://oauth.brightcove.com/v4/client_credentials

    헤더

    • Authorization: BC_TOKEN {YOUR_BC_TOKEN}
    • 콘텐츠 유형: 응용 프로그램/json

    요청 본문

          {
          "type": "credential",
          "maximum_scope": [
          {
            "identity": {
              "type": "video-cloud-account",
              "account-id": {YOUR_ACCOUNT_ID}
            },
            "operations": [
              "video-cloud/upload-urls/read",
              "video-cloud/video/create",
              "video-cloud/video/read",
              "video-cloud/video/update",
              "video-cloud/ingest-profiles/profile/write",
              "video-cloud/ingest-profiles/account/write",
              "video-cloud/ingest-profiles/profile/read",
              "video-cloud/ingest-profiles/account/read"
            ]
          }
          ],
          "name": "Source File Upload Credentials"
          }

    API 요청

    푸시 기반 수집과 관련된 네 가지 API 요청이 있습니다.

    1. Video Cloud에서 비디오 객체를 생성하기위한 CMS API POST 요청 (풀 기반 수집과 동일)
    2. Brightcove S3 버킷 URL을 얻기위한 Dynamic Ingest GET 요청
    3. 소스 파일을 Brightcove S3 버킷에 업로드하기위한 PUT 요청
    4. 소스 파일을 수집하기위한 동적 수집 POST 요청 (풀 기반 수집과 동일)

    이러한 요청은 다음 섹션에서 자세히 설명합니다.

    CMS API 요청

    그만큼CMS API요청은 새 비디오를 추가하기위한 모든 Dynamic Ingest 작업과 동일합니다. 이 요청은 새 동영상을 수집하는 데 필요합니다. 기존 동영상에 자산을 교체하거나 추가하는 경우이 단계가 필요하지 않습니다. 대신 다른 요청에서 기존 동영상 ID를 사용합니다.

    요청 구문

    이것은 다음과 같은POST요청입니다.

          https://cms.api.brightcove.com/v1/accounts/{ACCOUNT_ID}/videos

    매개변수

    요청에 대한 URL 매개 변수:

    • {ACCOUNT_ID} - 계정 ID

    요청 본문

    요청 본문은 다음을 포함하는 JSON 객체로 구성됩니다. name (필수) 및 동영상에 대한 기타 메타 데이터 (선택 사항) :

          {
          "name": "My Video"
          }

    참조 API 참조자세한 내용은.

    헤더

    요청에 포함시켜야하는 HTTP 헤더는 다음과 같습니다.

    • Authorization: Bearer {ACCESS_TOKEN}
    • Content-Type: application/json

    대응

    응답은 동영상 메타 데이터를 포함하는 JSON 개체입니다. 나머지 Dynamic Ingest 작업에서 중요한 항목은id , 대체 할{VIDEO_ID} Ingest API에 대한 요청에서.

    S3 URL 요청

    Ingest API에 대한 첫 번째 요청은 소스 파일을 Brightcove S3 버킷에 넣은 다음 거기에서 Video Cloud로 수집하는 데 필요한 정보를 검색합니다.

    요청 구문

    이것은GET요청 :

          https://ingest.api.brightcove.com/v1/accounts/{ACCOUNT_ID}/videos/{VIDEO_ID}/upload-urls/{SOURCE_NAME}

    매개변수

    요청에 대한 URL 매개 변수:

    • {ACCOUNT_ID} - 계정 ID
    • {VIDEO_ID} - CMS API요청에서 반환 된 비디오 ID
    • {SOURCE_NAME} -비디오 소스 파일 이름- 이름에는 다음과 같은 URL 예약 문자가 포함되지 않아야합니다. ? , & , #또는 공백

    헤더

    요청에 포함시켜야하는 HTTP 헤더는 다음과 같습니다.

    • Authorization: Bearer {ACCESS_TOKEN}

    대응

    응답은 다음과 유사한 JSON 객체입니다.

          {
          "bucket": "ingestion-upload-production",
          "object_key": "57838016001/4752143002001/ed5a5ba0-1d97-4f95-a8ec-cbb786b04a37/greatblueheron.mp4",
          "access_key_id": "ACCESS_KEY_APPEARS_HERE",
          "secret_access_key": "SECRET_ACCESS_KEY_APPEARS_HERE",
          "session_token": "FQoDYXdzEKf//////////wEaDKR0wDgquq/qvkZgbyKOA7URC/9io6cmRBDkhbvxoHIKkPZlK/9YNvdWcESPkm75/2PvU6FV1Mc+/XENPzY8KgvP86MBJNxYLPdkuP1phgHs2Yh2p1KIDcQSCZJ3i6i9m4S14ewjWIugYLYDQi6CG+3fiFwfzbKT5jes1kh24m9BQQIuvVOiM1GLTldyDzlrdDopJkdYd4IEU7FU36CUT7RL/aeMwR2Usk56nwqyqkkQHPmvqmGyiLdrD3OrIbUU+6+ZP4usS9dbV3eAqOWDIk3HCN+Kuc9f/eUWhY21ftNDXWgasqQqXwPRs3T1i/hoiIKODbzr8F",
          "signed_url": "https://ingestion-upload-production.s3.amazonaws.com/57838016001/4752143002001/ed5a5ba0-1d97-4f95-a8ec-cbb786b04a37/greatblueheron.mp4?AWSAccessKeyId=ACCESS_KEY_HERE&Expires=1475673952&Signature=%2Fsr5cV%2FVOfGCBkodol9xQIKlbu4%3D",
          "api_request_url": "https://ingestion-upload-production.s3.amazonaws.com/57838016001/4752143002001/ed5a5ba0-1d97-4f95-a8ec-cbb786b04a37/greatblueheron.mp4"
          }

    응답의 항목은 다음과 같습니다.

    • bucket -S3 버킷 이름
    • object_key -파일 업로드를위한 객체 키 (멀티 파트 업로드를위한 도착 URL 구성에 사용됨)
    • access_key_id -업로드 요청 인증에 사용되는 액세스 키 (멀티 파트 업로드에 사용됨)
    • secret_access_key -업로드 요청 인증에 사용되는 비밀 액세스 키 (멀티 파트 업로드에 사용됨)
    • session_token -대상 objec에 쓸 수있는 기능을 제공하는 수명이 짧은 AWS 토큰
    • signed_url -비교적 작은 동영상이 있고 멀티 파트 업로드를 구현하지 않는 경우 소스 파일을 넣을 수있는 S3 단축 URL입니다.
    • api_request_url -마스터 URL에 대한 Dynamic Ingest POST 요청에 포함 할 URL 또는 image / text_tracks 자산에 대한 URL입니다.

    사용중인 언어에 대해 AWS SDK를 사용하여 멀티 파트 업로드를 사용하는 것이 좋습니다. SDK는 Java, .NET, Ruby, PHP, Python, JavaScript, Go 및 C ++를 포함한 다양한 언어로 제공됩니다. 참조 AWS 개발자 블로그자세한 내용은.

    멀티 파트 업로드를 구현하는 경우 다음 문서와 샘플 코드가 유용합니다.

    다음은 PHP의 간단한 예입니다.

          <?php
          // AWS SDK (푸시 수집 용)
          'vendor / aws-autoloader.php'가 필요합니다.
          
          Aws \\ S3 \\ S3Client 사용;
          Aws \\ S3 \\ MultipartUploader를 사용하십시오.
          Aws \\ Exception \\ MultipartUploadException을 사용하십시오.
          
          /**
           *이 문서에서 위에 설명 된대로 S3 정보 얻기
           * 아래 코드는 $ s3response로 디코딩되었다고 가정합니다.
           * 그리고 $ filePath는 자산 파일의 로컬 경로입니다.
           */
          
          s3 = 새 S3Client ([
              '버전'=> '최신',
              '지역'=> 'us-east-1',
              '신임 정보'=> array (
                  '키'=> $ s3response-> access_key_id,
                  '비밀'=> $ s3response-> secret_access_key,
                  '토큰'	 => $ s3response-> session_token
              )
          ]);
          $ params = array (
              'bucket'=> $ s3response-> s3-> bucket,
              '키'=> $ s3response-> s3-> object_key
          );
          $ uploader = new MultipartUploader ($ this-> s3, $ filePath, $ params);
          {
              $ uploadResponse = $ uploader-> upload ();
          } catch (MultipartUploadException $ e) {
              echo $ e-> getMessage (). "\\엔";
          }
          ?>

    소스 파일을 S3에 PUT

    S3 URL을 가져온 후 다음을 사용하여 비디오 파일 업로드를위한 PUT 요청을합니다. signed_url목적지로.

    다음을 사용할 수 있습니다. 곱슬 곱슬하다 PUT 작업을 테스트하는 명령 :

          curl -X PUT "SIGNED_URL_GOES_HERE" --upload-file FILE_PATH_FOR_LOCAL_ASSET_GOES_HERE 

    단일 및 다중 부분 업로드

    AWS는 최대 5GB 크기의 파일에 대한 단일 부분 업로드를 허용합니다 (파일 크기에 대한 다른 제한은 없음). 더 큰 파일의 경우 멀티 파트 업로드를 사용해야합니다. 단일 부분 업로드는 설정하기가 다소 쉽지만 가능하면 멀티 파트 업로드를 사용하는 것이 좋습니다. 두 가지의 차이점은 다음과 같습니다.

    • 단일 부분 업로드는 비디오를 모두 하나의 파일로 업로드합니다. 단일 부분 업로드는 5GB 이하의 파일 크기로 제한됩니다. 어떤 이유로 업로드가 중단 된 경우 다시 시작해야합니다.
    • 멀티 파트 업로드는 파일을 청크로 푸시합니다. 업로드가 여러 연결을 활용할 수 있기 때문에 더 효율적입니다. 또한 업로드가 중단 된 경우 나머지 청크와 함께 중단 된 부분부터 다시 시작할 수 있습니다.

    동적 수집 요청

    파일이 Brightcove S3 버킷에 업로드 된 후 S3 위치에서 파일을 수집하기 위해 일반적인 Dynamic Ingest 요청을합니다.

    요청 구문

    이것은 다음과 같은POST요청입니다.

          https://ingest.api.brightcove.com/v1/accounts/{ACCOUNT_ID}/videos/{VIDEO_ID}/ingest-requests

    매개변수

    요청에 대한 URL 매개 변수:

    • {ACCOUNT_ID} - 계정 ID
    • {VIDEO_ID} - CMS API요청에서 반환 된 비디오 ID

    요청 본문

    요청 본문은 다음을 포함하는 JSON 객체로 구성됩니다. master (필수) 수집 작업에 대한 세부 정보입니다. 그만큼url에 대한master될 것입니다api_request_url S3 버킷 정보 요청에 의해 반환 됨

          {
          "master": {
              "url": "https://ingestion-upload-prod.s3.amazonaws.com/12345/5678/3712cd37504911ab06a77a26a387ce/source.mp4"
          },
          "profile": "multi-platform-standard-static",
          "capture-images": true
          }

    참조 API 참조자세한 내용은.

    헤더

    요청에 포함시켜야하는 HTTP 헤더는 다음과 같습니다.

    • Authorization: Bearer {ACCESS_TOKEN}
    • Content-Type: application/json

    대응

    응답에는job_id수집 요청을 위해 다음을 통해 상태를 추적 할 수 있습니다. 알림 .

    샘플 코드

    푸시 기반 Dynamic Ingest를 시작하는 데 도움이되도록 Java 및 Python으로 몇 가지 샘플 앱을 만들었습니다. 우리에서 찾을 수 있습니다. Github 사이트 .