개요: Dynamic Ingest API

이 주제에서는 Dynamic Dynamic Ingest API Delivery를 통해 동영상을 전송할 수 있도록 동영상을 인제스트하는 방법을 알아봅니다.

서문

Dynamic Ingest API브라이트코브는 고객의 스토리지 위치에서 비디오 소스 파일을 다운로드하고 소스 파일의 지정된 렌디션을 생성하는 기능을 기반으로 합니다. (Dynamic Ingest에서 액세스할 수 있는 임시 위치에 소스 파일을업로드하는 옵션도 있습니다.) 이 플랫폼은 클라우드 중심이며 전 세계에 분산되어 있으며 최신 관행을 기반으로 동급 최고의 일관성과 속도를 제공합니다.

API 레퍼런스도 참조하십시오 .

워크 플로 개요

미디어의 전체 트랜스코딩 및 저장에는 여러 시스템/기술이 사용됩니다. 그들은 다음과 같습니다:

  • CMS API : DI API에서 사용할 비디오 객체를 만듭니다.
  • 젠코더 : 비디오를 트랜스 코딩하여 여러 변환을 만듭니다.
  • 아마존 S3 : 프로필 설정에 따라 마스터 및 변환을 저장소로 이동합니다.
  • 카탈로그 : 비디오와 관련된 필수 정보를 저장합니다.

초기 트랜스코딩 후에는 미디어에서 다음과 같은 작업을 수행할 수 있습니다.

운영

DI API를 사용할 때 수집 프로필 읽기 및 계정에 수집 정보 쓰기와 같은 다양한 작업을 수행합니다. 다음은 DI 작업에 필요한 전체 작업 목록입니다.

  • video-cloud/video/create
  • video-cloud/video/read
  • video-cloud/video/update
  • video-cloud/ingest-profiles/profile/read
  • video-cloud/ingest-profiles/account/read
  • video-cloud/ingest-profiles/account/write
  • video-cloud/ingest-profiles/profile/write
  • video-cloud/upload-urls/read

클라이언트 자격 증명을 얻으려면 Studio 관리 도구를사용하거나 다음 문서 중 하나를 참조하십시오.

모범 사례

동적 인제스트 API를 참조하십시오. 모범 사례 .

유효한 소스 위치

가져 오기 기반 수집

Dynamic Ingest는 다음에서 소스 비디오 파일을 가져올 수 있습니다. HTTP / HTTPS, S3 및 FTP-인증 유무

예:

  • https://example.com/path/to/input.avi
  • https://dl.dropboxusercontent.com/u/3641457/Bird_Titmouse.mp4
  • s3://my-bucket/video.mp4
  • ftp://server/file.mp4

S3에 대한 참고 사항

비디오가 보호된 S3 버킷에 있는 경우 다음을 참조하십시오. S3에서 동적 수집 사용파일에 액세스할 수 있도록 Dynamic Ingest에 대한 권한을 설정하는 방법에 대한 자세한 내용을 참조하세요.

FTP에 대한 참고 사항

동영상이 보호 된 FTP 서버에있는 경우 다음과 같이 URL에 사용자 이름과 비밀번호를 전달하는 표준 방법을 사용합니다.

    ftp://username:password@server/file.mp4

소스 파일 업로드

Dynamic Ingest가 가져올 수있는 안전한 임시 위치에 파일을 업로드 할 수도 있습니다. 자세한 내용은소스 파일 업로드를 참조하십시오 .

특수 문자

비디오를 가져오기 위해 Video Cloud에 URL을 제공하고 URL의 일부로 자격 증명을 보내는 경우 , 당신은퍼센트 인코딩예약된 특정 특수 문자:

특수 문자
문자 백분율 인코딩
] %5B
[ %5D
? %3F
/ %2F
< %3C
~ %7E
# %23
` %6D
! %21
@ %40
$ %24
% %25
^ %5E
& %26
* %2A
( %28
) %29
+ %2B
= %3D
} %7D
| %7C
: %3A
%22
; %3B
' %27
, %2C
> %3E
{ %7B
공간 %20

예:

/* unencoded */
ftp://user@example.com:pass!word@example.com/path/to/input.mp3

/* encoded */
ftp://user%40example.com:pass%21word@example.com/path/to/input.mp3

이중 URL 인코딩

처리 전에 URL이 한 번 디코딩될 때마다 수집 작업을 제출하기 전에 입력 URL을 두 번 URL 인코딩해야 합니다.

예:

다음의 master.url

https://some.file.storage.com/path/to/video.mp4?Signature=some%2Bcool%2B%25sig

처리 전에 다음으로 변환됩니다.

https://some.file.storage.com/path/to/video.mp4?Signature=some+cool+%sig

대신 다음과 같이 이중 인코딩해야 합니다.

https://some.file.storage.com/path/to/video.mp4?Signature=some%252Bcool%252B%2525sig

URL을 인코딩하려면 문자열 인코더 문서를 참조하십시오.

소스 파일 이름

모든 입력 URL은 다음에 따라 적절하게 URL 인코딩되어야 합니다. RFC 3986 Brightcove로 전송될 때. 즉, URL 경로에 있는 모든예약된 문자는퍼센트 인코딩 (공백 인코딩 대상%20 ) 되고, URL 쿼리에서 발견된 모든 예약 문자는 퍼센트 인코딩 ( +또는%20로 인코딩 대상 공백) 됩니다. +%2B ) 로 인코딩됩니다.

사전 서명 S3( v2포함서명 , 만료그리고 AWSAccessKeyId , 그리고 v4포함 X-Amz-알고리즘 , X-Amz 자격 증명 , X-Amz-날짜 , X-Amz-만료 , X-Amz 서명 헤더 , 그리고 X-Amz-서명 ) 또는 GCS (포함서명 , 만료 , 그리고 Google액세스 ID ) url은 이미 적절하게 인코딩되어 있어야 하며그대로 사용할 수 있습니다 .

샘플 자산

브라이트코브 학습 서비스는 동적 인제스트를 시작하는 데 사용할 수 있는 몇 가지 샘플 자산을 제공합니다. 이러한 자산에는 여러 언어로 된 짧은 비디오, 이미지 및 WebVTT 캡션이 포함됩니다.

수집 프로파일

Dynamic Delivery 비디오를 만들려면 특수 수집 프로필이 필요합니다. 당신은 몇 가지를 찾을 수 있습니다표준 수집 프로필 Dynamic Delivery가 활성화되면 귀하의 계정에서 권장됩니다.

Studio의 관리 섹션에서 수집 프로필에 사용자 정의 Dynamic Delivery 프로필을 추가할 수도 있습니다. 다이내믹 딜리버리를 위한 인제스트 프로필 만들기자세한 내용은

샘플 Dynamic Delivery 프로필

다음은 시작하는 데 사용할 수있는 샘플 Dynamic Delivery 프로필입니다. 계정YOUR_ACCOUNT_ID ID로 바꾸기만 하면 프로필을 복사하여 인제스트 프로필 편집기에 붙여넣을 수 있습니다.

    {
      "name": "DynamicDeliveryIngestProfile",
      "description": "Dynamic Delivery ingest profile.",
      "account_id": "YOUR_ACCOUNT_ID",
      "digital_master": {
        "rendition": "passthrough",
        "distribute": false
      },
      "dynamic_origin": {
        "renditions": [
          "default/audio64",
          "default/audio96",
          "default/audio128",
          "default/video450",
          "default/video700",
          "default/video900",
          "default/video1200",
          "default/video1700",
          "default/video2000"
        ],
        "images": [
          {
            "label": "poster",
            "height": 720,
            "width": 1280
          },
          {
            "label": "thumbnail",
            "height": 90,
            "width": 160
          }
        ]
      }
    }
    

표준 동적 전송 프로필 및 변환에 대한 자세한 내용은 동적 전송을 위한표준 인제스트 프로필을 참조하십시오.

비디오 수집

동영상 수집에 필요한 두 가지 API 요청이 있습니다.

  1. CMS API호출하여 Video Cloud 시스템에서 비디오 객체를 생성하고 해당 ID를 가져옵니다.
  2. Dynamic Ingest API호출하여 비디오 소스 파일의 URL을 제공하고 필요에 따라 인제스트에 사용할 다른 파일 및 설정을 지정합니다.

기본 요청의 샘플 집합은 다음과 같습니다.

CMS API 요청

HTTP 메소드
우편
요청 URL
https://cms.api.brightcove.com/v1/accounts/{account_id}/videos
요청 본문
    {
    "name": "My First Dynamic Delivery Video"
    }
    
    

응답 데이터에는 다음 요청에 사용되는id 비디오가 포함됩니다.

API 요청 수집

HTTP 메소드
우편
요청 URL
https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests
요청 본문
    {
      "master": {
        "url": "https://host/master.mp4"
      },
      "profile": "DynamicDeliverIngestProfile",
      "callbacks": [
        "https://mydomain.com/di-callbacks.php"
      ]
    }
    

참고 사항

  • profile 필드를 포함하지 않으면 해당 계정 기본 프로필이 사용됩니다. 다른 종류의 동영상에 다른 프로필을 사용해야하는 경우가 아니라면 계정 기본값을 사용하는 것이 좋습니다. 계정 기본값을 (가장 자주) 사용하려는 프로필로 설정해야합니다.
  • callbacks 필드는 선택 사항이지만 인제스트 작업의 진행 상황을 추적하는 가장 좋은 방법으로 사용하는 것이 좋습니다. 보다아래에알림에 대해 자세히 알아보세요.

변환보기

Studio의미디어 모듈로 이동하여 비디오 렌디션을 볼 수있습니다.

변환의 전체 속성을 보려면 아래에 자세히 설명된 CMS API 요청을 사용할 수있습니다.

재생할 URL을 검색하려면 아래에 자세히 설명된 Playback API 요청을 사용할 수있습니다.

비디오 교체

비디오를 새 버전이나 새 렌디션 세트로 바꾸려면Dynamic Ingest API호출은 정확히 동일합니다. 새 비디오 수집 - 유일한 차이점은 사전에 전화를 걸 필요가 없다는 것입니다. CMS API Video Cloud 시스템에서 비디오 객체를 생성하고 ID를 얻습니다. 지정된 URL의 소스 비디오 파일이 원래 수집된 파일과 동일한 경우 새 변환 세트를 가져오기만 하면 됩니다. 소스 파일이 새 것이면 기존 비디오를 교체하게 됩니다. 재코드 변환이 완료될 때까지 모든 동영상은 기존 변환으로 계속 재생됩니다.

여기에서작업 샘플을 확인하세요 .

비디오 재 트랜스 코딩

선택했다면마스터 아카이브를 통해 비디오를 섭취했을 때Dynamic Ingest API또는 Studio Upload Module을 사용하면 마스터에서 비디오를 다시 코드 변환할 수도 있습니다. 다시 인제스트 요청의 URL은 동일하지만 요청 본문에는 다음이 포함됩니다.

    // request
    POST /v1/accounts/{account_id}/videos/{video_id}/ingest-requests
    // request body
    {
      "master": { "use_archived_master": true },
      "profile": "multi-platform-extended-static"
    }
    
    

이미지 수집

트랜스 코딩 중에 포스터 및 썸네일 이미지를 캡처하는 대신 수집 요청에 자체 이미지를 포함하거나 나중에 별도의 요청에 추가 할 수 있습니다.

샘플 요청 본문

    {
      "profile": "multi-platform-extended-static",
      "poster": {
        "url": "https://bcls@solutions.brightcove.com/bcls/assets/images/great-blue-heron-poster.png",
        "width": 1280,
        "height": 720
      },
      "thumbnail": {
        "url": "https://bcls@solutions.brightcove.com/bcls/assets/images/great-blue-heron-thumbnail.png",
        "width": 160,
        "height": 90
      },
      "callbacks": [
        "https://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
      ]
    }
    

이미지 자산 수집에 대한 알림

다음은 이미지 수집을 위해 특별히받는 알림 샘플입니다.

    {
        "entity": "thumbnail",
        "entityType": "ASSET",
        "version": "1",
        "action": "CREATE",
        "jobId": "0c2767c1-19ea-479d-b371-a0f5f3d154f5",
        "videoId": "5209530177001",
        "accountId": "57838016001",
        "status": "SUCCESS"
      }
      {
        "entity": "poster",
        "entityType": "ASSET",
        "version": "1",
        "action": "CREATE",
        "jobId": "0c2767c1-19ea-479d-b371-a0f5f3d154f5",
        "videoId": "5209530177001",
        "accountId": "57838016001",
        "status": "SUCCESS"
    }
    
    

캡션 수집

WebVTT 형식의 캡션은 초기 수집 요청이나 이후 요청에서 비디오에 추가 할 수 있습니다.

샘플 요청 본문

    {
      "text_tracks": [
        {
          "url": "https://solutions.brightcove.com/bcls/assets/vtt/sample.vtt",
          "srclang": "en",
          "kind": "captions",
          "label": "EN",
          "default": true
        },
        {
          "url": "https://solutions.brightcove.com/bcls/assets/vtt/sample-es.vtt",
          "srclang": "es",
          "kind": "captions",
          "label": "ES",
          "default": false
        }
      ],
      "callbacks": [
        "https://solutions.brightcove.com/bcls/di-api/di-callbacks.php"
      ]
    }
    

사이드카 텍스트 트랙은 비 Dynamic Delivery 비디오와 마찬가지로 CMS 또는 재생 응답에 표시됩니다.

    "text_tracks": [
        {
        "id": null,
        "src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt?akamai_token=exp=1479236791~acl=/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt*~hmac=df5b4ba1ef2549a7572346dd36a761534ffafe4b8cfbdf92d89013ec2f95699c",
        "srclang": "en",
        "label": "EN",
        "kind": "captions",
        "mime_type": "text/webvtt",
        "asset_id": null,
        "sources": [
          {
          "src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt?akamai_token=exp=1479236791~acl=/media/v1/text/vtt/clear/57838016001/3de8c552-74e8-4c53-aa11-2a4375edf658/bce0d3dc-11d9-4ca4-ae1b-a39cb7b88a1c/text.vtt*~hmac=df5b4ba1ef2549a7572346dd36a761534ffafe4b8cfbdf92d89013ec2f95699c"
          }
        ],
        "in_band_metadata_track_dispatch_type": "",
        "default": false
      ]
    }
    

텍스트 트랙은 HLS 및 DASH 매니페스트에도 표시됩니다.

HLS

    #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles-0",NAME="Captions",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="es",URI="https://manifest.prod.boltdns.net/manifest/v1/hls/v5/clear/57838016001/1bd49b7b-df40-414f-bb05-8840624663e1/de8144f4-b7d7-46ca-848f-dd2f7fa453d7/rendition.m3u8?fastly_token=NTg0ZjA5MWZfMzU1N2VhY2Y2MDA3NzkzYWM0ZjU2ZWQwNWE2NTYzMmI4MzMzMmJkZWM5Y2JmNzQ1MjRjM2QxYjI0NTYzODA5Zg%3D%3D"
    #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles-0",NAME="Captions",DEFAULT=NO,AUTOSELECT=YES,LANGUAGE="en",URI="https://manifest.prod.boltdns.net/manifest/v1/hls/v5/clear/57838016001/1bd49b7b-df40-414f-bb05-8840624663e1/6399fcf2-cd27-4d97-ad30-e443f13563bd/rendition.m3u8?fastly_token=NTg0ZjA5MWZfYWMxYjllNDlkYzVlOTJkZWQ3ODk2YjE3MGI5NDlhYTlkOGQ1YzI5ZmI4ZjRlOWMzMzU5YmM1YzZkNTA4MTFmNQ%3D%3D"
    
    

대시

    <AdaptationSet mimeType="text/vtt" lang="en">
      <Representation bandwidth="256" id="2f4bb3fb-1a7d-4f4c-bf44-00ef0e611131">
      <BaseURL>https://bcbolt446c5271-a.akamaihd.net/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557/2f4bb3fb-1a7d-4f4c-bf44-00ef0e611131.vtt?akamai_token=exp=1484784452~acl=/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557*~hmac=ae568ea5294280968de0a2766afd82922ea9aa83fe23a81b3379a46b8ef13284</BaseURL>
      </Representation>
      </AdaptationSet>
      <AdaptationSet mimeType="text/vtt" lang="hi">
      <Representation bandwidth="256" id="f5875617-40f4-4991-bc5b-7152c6e2a93a">
      <BaseURL>https://bcbolt446c5271-a.akamaihd.net/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557/f5875617-40f4-4991-bc5b-7152c6e2a93a.vtt?akamai_token=exp=1484784452~acl=/media/v1/dash/live/clear/57838016001/785d5ddf-6672-4ece-9191-d105445b2557*~hmac=ae568ea5294280968de0a2766afd82922ea9aa83fe23a81b3379a46b8ef13284</BaseURL>
      </Representation>
    </AdaptationSet>
    
    

텍스트 트랙 자산에 대한 알림

다음은 텍스트 트랙 처리와 관련된 알림 샘플입니다.

    {
      "entity": "en-captions-EN",
      "entityType": "ASSET",
      "version": "1",
      "action": "CREATE",
      "jobId": "ed429284-77c9-4905-a700-4c8edb77be3e",
      "videoId": "5209530177001",
      "accountId": "57838016001",
      "status": "SUCCESS"
    }
    {
      "entity": "es-captions-ES",
      "entityType": "ASSET",
      "version": "1",
      "action": "CREATE",
      "jobId": "ed429284-77c9-4905-a700-4c8edb77be3e",
      "videoId": "5209530177001",
      "accountId": "57838016001",
      "status": "SUCCESS"
    }
    
    

텍스트 트랙이있는 샘플 플레이어 (영어 및 스페인어)

Dynamic Delivery 비디오 플레이어

iOS 앱의 사이드카 캡션

Dynamic Delivery 사이드카 캡션
Dynamic Delivery 사이드카 캡션

동적 변환 검색

비디오의 동적 변환에 대한 정보를 검색하려면 다음 주소로 GET 요청을 제출하십시오.

    https://cms.api.brightcove.com/v1/accounts/account_id/videos/video_id/assets/dynamic_renditions
    
    

샘플 응답

    [
      {
        "rendition_id": "default/audio128",
        "frame_height": null,
        "frame_width": null,
        "media_type": "audio",
        "size": 506818,
        "created_at": "2016-11-14T15:05:56.209214859Z",
        "updated_at": "2016-11-14T15:05:56.209214859Z",
        "encoding_rate": 125,
        "duration": 31488,
        "audio_configuration": "L_R",
        "language": "en"
      },
      {
        "rendition_id": "default/audio64",
        "frame_height": null,
        "frame_width": null,
        "media_type": "audio",
        "size": 261129,
        "created_at": "2016-11-14T15:05:53.926747456Z",
        "updated_at": "2016-11-14T15:05:53.926747456Z",
        "encoding_rate": 62,
        "duration": 31488,
        "audio_configuration": "L_R",
        "language": "en"
      },
      {
        "rendition_id": "default/audio96",
        "frame_height": null,
        "frame_width": null,
        "media_type": "audio",
        "size": 384568,
        "created_at": "2016-11-14T15:05:59.023381448Z",
        "updated_at": "2016-11-14T15:05:59.023381448Z",
        "encoding_rate": 94,
        "duration": 31488,
        "audio_configuration": "L_R",
        "language": "en"
      },
      {
        "rendition_id": "default/video1200",
        "frame_height": 540,
        "frame_width": 960,
        "media_type": "video",
        "size": 4761241,
        "created_at": "2016-11-14T15:06:10.410020728Z",
        "updated_at": "2016-11-14T15:06:10.410020728Z",
        "encoding_rate": 1206,
        "duration": 31465
      },
      {
        "rendition_id": "default/video1700",
        "frame_height": 540,
        "frame_width": 960,
        "media_type": "video",
        "size": 6712422,
        "created_at": "2016-11-14T15:06:15.593063021Z",
        "updated_at": "2016-11-14T15:06:15.593063021Z",
        "encoding_rate": 1703,
        "duration": 31465
      },
      {
        "rendition_id": "default/video2500",
        "frame_height": 720,
        "frame_width": 1280,
        "media_type": "video",
        "size": 9795721,
        "created_at": "2016-11-14T15:06:12.148783841Z",
        "updated_at": "2016-11-14T15:06:12.148783841Z",
        "encoding_rate": 2486,
        "duration": 31465
      },
      {
        "rendition_id": "default/video4000",
        "frame_height": 1080,
        "frame_width": 1920,
        "media_type": "video",
        "size": 15718943,
        "created_at": "2016-11-14T15:06:15.463012005Z",
        "updated_at": "2016-11-14T15:06:15.463012005Z",
        "encoding_rate": 3992,
        "duration": 31465
      },
      {
        "rendition_id": "default/video450",
        "frame_height": 270,
        "frame_width": 480,
        "media_type": "video",
        "size": 1784858,
        "created_at": "2016-11-14T15:06:20.719400854Z",
        "updated_at": "2016-11-14T15:06:20.719400854Z",
        "encoding_rate": 451,
        "duration": 31465
      },
      {
        "rendition_id": "default/video700",
        "frame_height": 360,
        "frame_width": 640,
        "media_type": "video",
        "size": 2746520,
        "created_at": "2016-11-14T15:06:10.918331816Z",
        "updated_at": "2016-11-14T15:06:10.918331816Z",
        "encoding_rate": 695,
        "duration": 31465
      },
      {
        "rendition_id": "default/video900",
        "frame_height": 360,
        "frame_width": 640,
        "media_type": "video",
        "size": 3561912,
        "created_at": "2016-11-14T15:06:17.295871425Z",
        "updated_at": "2016-11-14T15:06:17.295871425Z",
        "encoding_rate": 902,
        "duration": 31465
      }
    ]
    

재생할 URL 검색

비디오의 동적 변환에 대한 정보를 검색하려면 다음 주소로 GET 요청을 제출하십시오.

    https://edge.api.brightcove.com/playback/v1/accounts/account_id/videos/video_id
    
    

샘플 응답

    {
      "description": null,
      "poster_sources": [
      {
        "src": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/1280x720/24s816ms/match/image.jpg"
      }
      ],
      "tags": [
        "dd-static"
      ],
      "cue_points": [],
      "custom_fields": {},
      "account_id": "57838016001",
      "sources": [
        {
          "ext_x_version": "4",
          "type": "application/x-mpegURL",
          "src": "https://manifest.prod.boltdns.net/manifest/v1/hls/v4/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/10s/master.m3u8?fastly_token=NTk1YmE0ZmZfOGU5Njg0NGU1OWQ3NjI3ZDhmY2FhZTVmNGE0YzI1MWM1NjMyNTZkNzMzZmExMzRkN2ZmYzU0YWU5NzUyZTM2YQ%3D%3D"
        },
        {
          "ext_x_version": "5",
          "type": "application/x-mpegURL",
          "src": "https://manifest.prod.boltdns.net/manifest/v1/hls/v5/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/10s/master.m3u8?fastly_token=NTk1YmE0ZmZfOTBkOThhYmQ5MWM0MmQwYmQwYTM4MGEzMjAzZTgyNDVlMDYzYzNhMzQ1ZWQ3MTMyMzVmM2Q1YjM2N2VlMjM0Yg%3D%3D"
        },
        {
          "type": "application/dash+xml",
          "src": "https://manifest.prod.boltdns.net/manifest/v1/dash/live-baseurl/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/2s/manifest.mpd?fastly_token=NTk1YmE0ZmZfYzQyOWJiOTEzMGJmNGIyMjM1NmMwMzZmNGZkZjlkYjEzMzNmNzFlYmQxODg0Y2YzZDk3ZTljNzVhODg1YzRjMQ%3D%3D",
          "profiles": "urn:mpeg:dash:profile:isoff-live:2011"
        },
        {
          "avg_bitrate": 2129000,
          "width": 1280,
          "src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/high.mp4?akamai_token=exp=1499178239~acl=/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/high.mp4*~hmac=5880698556297bbe2f2f43ac8904c659c61fb9510db1a9bb106037eaea393339",
          "size": 13242064,
          "height": 720,
          "duration": 49690,
          "container": "MP4",
          "codec": "H264"
        },
        {
          "avg_bitrate": 574000,
          "width": 480,
          "src": "https://bcbolt446c5271-a.akamaihd.net/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/mid.mp4?akamai_token=exp=1499178239~acl=/media/v1/pmp4/static/clear/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/mid.mp4*~hmac=75e51439623a41b93d2a234c25683e76d43656f97a9dfb8efe61a5342d5ff2da",
          "size": 3586929,
          "height": 270,
          "duration": 49690,
          "container": "MP4",
          "codec": "H264"
        }
      ],
      "name": "Canada_Geese_Family",
      "reference_id": null,
      "long_description": null,
      "duration": 49633,
      "economics": "AD_SUPPORTED",
      "published_at": "2017-06-05T11:20:52.412Z",
      "text_tracks": [],
      "updated_at": "2017-06-05T12:06:55.121Z",
      "thumbnail": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/160x90/24s816ms/match/image.jpg",
      "poster": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/1280x720/24s816ms/match/image.jpg",
      "offline_enabled": false,
      "link": null,
      "id": "5459968909001",
      "ad_keys": null,
      "thumbnail_sources": [
        {
          "src": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/57838016001/853641cb-d66b-4f08-bb02-8489b5fba897/main/160x90/24s816ms/match/image.jpg"
        }
      ],
      "created_at": "2017-06-05T11:20:52.412Z"
    }
    
    

DRM

DRM이 지원되지만 일반 비디오 수집과는 다르게 작동합니다. 당신은 ~ 아니다수집 프로필에서 패키징을 지정해야 합니다. 대신, 패키지는 계정의 DRM 설정에 따라 자동으로 이루어집니다. 브라이트코브 지원팀에문의하여 비디오의 DRM 패키징에 대한 기본값을 설정하십시오.

자세한 내용은 DRM을 사용한콘텐츠 인제스트를 참조하십시오 .

워터 마크 변환

워터마크가 표시된 렌디션이지원됩니다. 일부 또는 모든 비디오에 워터 마크를 추가하려면 Brightcove 지원에 문의하십시오.

정적 동적 전송 프로필에는 워터마크가 표시된 변환을 추가할 수 있지만 컨텍스트 인식 인코딩 (CAE) 프로필에는 추가할 수없습니다 .

수집 상태

콜백을 구독하거나 상태 API를 쿼리하여 작업 상태를 가져옴으로써 Dynamic Delivery 수집 처리에 대한 정보를받을 수 있습니다.

콜백

수집 요청에서 하나 이상의 콜백 URL을 지정하여 수집 프로세스 결과 알림을받을 수 있습니다. 지정하는 URL은 POST 요청을 수락 할 수있는 앱용이어야합니다. 알림은 JSON 형식으로 전송됩니다.

알림 수신 및 해석에 대한 자세한 내용은알림에서 확인할 수 있습니다.

상태 API

Status API를 사용하여 수집 작업의 현재 상태를 가져올 수도 있습니다. 상태 메시지는 지난 7 일 이내에 제출 된 수집 작업에 대해서만 사용할 수 있습니다.

엔드포인트

비디오에 대한 모든 상태 메시지
    https://cms.api.brightcove.com/v1/accounts/:account_id/videos/:video_id/ingest_jobs
    
    
    https://cms.api.brightcove.com/v1/accounts/57838016001/videos/5128433746001/ingest_jobs
    
    
특정 작업에 대한 상태 메시지
    https://cms.api.brightcove.com/v1/accounts/:account_id/videos/:video_id/ingest_jobs/:job_id
    
    

응답

다음은 현재 처리중인 작업에 대한 샘플 응답입니다.

    {
    "id": "7a196557-56ba-4218-ada5-e107ed554555",
    "state": "processing",
    "account_id": "57838016001",
    "video_id": "5128433746001",
    "error_code": null,
    "error_message": null,
    "updated_at": "2016-09-16T16:51:46.313Z",
    "started_at": "2016-09-16T16:51:22.258Z"
    }
    
    

여기서 가장 중요한 항목은 다음과 같습니다.

  • state : 작업 상태 ( processing | publishing | finished | failed - 이 작업이 완료되고 비디오를 재생할 준비가 되면state 될 것이다finished )
  • error_code 그리고error_message : 성공적인 작업의 경우 다음과 같습니다null . 실패한 작업의 경우 오류 코드와 설명 메시지가 표시됩니다.

다음은 비교를 위해 실패한 작업에 대한 상태 메시지의 예입니다.

    {
    "id": "bc9dfb58-d502-43d5-97e4-41f3dcd44265",
    "state": "failed",
    "account_id": "57838016001",
    "video_id": "5128710227001",
    "error_code": "NoMediaError",
    "error_message": "Audio-only output was requested on a file that only contains video.",
    "updated_at": "2016-09-16T20:30:58.016Z",
    "started_at": "2016-09-16T20:29:14.139Z"
    }
    
    

컨텍스트 인식 인코딩

CAE (Context Aware Encoding)는 Brightcove에서 트랜스 코딩하는 동안 소스 비디오를 분석하고 비디오의 복잡성과 제공된 경계 매개 변수 세트 (최소 렌 디션 수, 최대 비트 레이트)를 기반으로 최적의 렌 디션 및 비트 레이트 세트를 생성하기 위해 개발 한 기술입니다. 등).

CAE 프로파일을 사용하는 방법을 알아보려면컨텍스트 인식 인코딩을 참조하십시오 .

여러 오디오 트랙

Dynamic Delivery에 대해 설정된 계정은 비디오에 대해 여러 오디오 트랙을 허용하도록 활성화 할 수 있습니다.

여러 오디오 트랙을 단일 제목과 연결하는 기능은 다음 두 가지 주요 시나리오에서 유용 할 수 있습니다.

  • 전 세계적으로 더 광범위한 도달을 위해 동일한 비디오를 다른 언어로 재생 
  • 시각 장애인을위한 설명과 함께 오디오 제공

이 기능을 사용하는 방법에 대한 자세한 내용은다중 오디오 트랙을 참조하십시오 .

샘플 코드

학습 서비스는 웹 인터페이스를 제공하고 전송하는 여러 샘플 앱을 제공합니다. Dynamic Ingest API PHP 프록시를 통한 요청. 샘플 앱 보기 .

또한 다음 GitHub 리포지토리에는 Java, Python 및 C#의 샘플 코드가 포함되어 있습니다. 이 샘플 코드는지원되지 않음브라이트코브:

제한 사항

  • 세그먼트 화 된 비디오 유형 (HLS 및 DASH)의 경우 일부 플레이어는 오디오 및 비디오 스트림 길이가 세그먼트의 지속 시간 이상으로 다른 경우를 처리하지 않습니다. 이 문제가 발생하면 더 짧은 세그먼트 길이를 사용해보십시오.