라이브 API: VOD 클립 만들기

이 항목에서는 Live API를 사용하여 라이브 스트림에서 주문형 비디오(VOD) 클립을 만드는 방법을 배웁니다.

개요

클립은 라이브 스트림에서 추출한 비디오입니다. S3 버킷, FTP 사이트 또는Video Cloud계정으로 전송할 수 있습니다. 클립은 MP4 비디오로 생성되며 모든 경우에 대상으로 전송됩니다. 의Video Cloud경우 인제스트 시스템에서 MP4를 트랜스코딩하며 비디오에 어떤 종류의 렌디션이 생성되는지는 사용된 인제스트 프로필에 따라 달라집니다.

클립에 대한 정의는/vods끝점을 사용하여 생성됩니다.

클립은 여러 가지 방법으로 만들 수 있습니다.

  • 라이브 스트림 이벤트의 SMPTE 타임코드 포함stream_start_timecode및/또는stream_end_timecode정의됨 - 이를 위해서는 인코더에서 타임코드 정보를 전송해야 한다는점에 유의하십시오.
  • 와 함께start_time및/또는end_time시작 시간( stream_start_time ) 전체 실시간 스트림 이벤트의
  • Epoch (Unix) 시간 포함start_time및/또는end_time정의 시간 (초 단위)
  • 와 함께duration
  • 라이브 API와 라이브 모듈 모두 암호화 또는 DRM 보호 작업에서 클립 생성을 지원합니다.

참고 사항

  1. 클립을 가능한 한 빨리 사용할 수 있도록 먼저 세그먼트에 정확한 클립을 만든 다음 사용 가능한 즉시 프레임에 정확한 클립으로 교체합니다.
  2. 지정한duration경우 결과 클립은 다음과 같습니다.
    • 작업이 활성 상태이고 아직 실행 중인 경우: (요청 시간 - 기간) ~ (요청 시간)
    • 작업이 완료된 경우: ( finished_at - 기간) ~ ( finished_at )
  3. AND start_timeend_time모두 지정하는 경우
    • 작업이 활성 상태이고 아직 실행 중인 경우: Epoch 시간 창이 완전히 요청 시간 내에created_at있으면 클립이 만들어집니다.
    • 작업이 완료되면: Epoch 시간 창이 완전히 시간 범위 내에created_at있으면 클립이 만들어집니다. finished_at
  4. SSAI를 사용하는 실시간 스트림 클립에는 광고가 포함되지 않습니다.
  5. 클립은 이벤트 후 최대 7 일까지 생성 할 수 있습니다. 의 경우SEP , 다음 활성화 시점이나 7일 (둘 중 더 짧은 날짜) 까지 등록할 수 있습니다.
  6. VOD API는 스트림에있는 것 이외의 콘텐츠를 추가하지 않습니다. 300 초 길이의 라이브 스트림에 350을 지정하면 출력 길이는 300 초가됩니다.
  7. 라이브 스트림은 방송되는 그대로 저장되고 이벤트 종료 후 7 일 동안 즉시 사용할 수 있으므로 클리핑을 위해 DVR 지원 라이브 스트림을 사용할 필요가 없습니다.
  8. Brightcove Live 클리핑은 최고 해상도 출력과 동일한 해상도의 클립 만 생성합니다. 소스 입력 해상도와 일치하지 않습니다 (최고 해상도 출력과 동일하지 않은 경우).

클립을 여러 대상으로 보낼 수도 있습니다.

  • Video Cloud어카운트
  • FTP 서버
  • S3 버킷

클립을 지정하면 출력 ~ 해야 하다포함하다어느 하나url목적지또는videocloud비디오 생성 및 클립 수집을 자세히 설명하는 객체Video Cloud .

참고: 라이브 스트림이 실행되는 동안 클립을 만들있습니다. 이렇게 하려면 클립의 시작 및 종료 시간을 Epoch 시간으로 정의하거나 실시간 스트림의시작시간을 기준으로 정의해야 합니다.

자격 증명

클립을 보내는 대상에 액세스하는 데 자격 증명이 필요한 경우 Live API의 자격 증명 작업을 사용하여 이러한 자격 증명을 만들 수 있습니다. 보다라이브 API에 대한 자격 증명 관리상세 사항은.

끝점

클립은 다음 주소로POST요청을 전송하여 생성됩니다.

https://api.bcovlive.io/v1/vods

요청 본문- Video Cloud

예 1: 스트림 시작을 기준으로 한 시작/종료 시간

요청 본문에는 시작 및 종료 시간과 클립을 보낼 위치에 대한 세부 정보가 포함됩니다. 다음은 스트림의 3분짜리 클립을 만들어Video Cloud계정에 보내는 샘플 요청 본문입니다.

{
  "live_job_id":"PUT-LIVE-JOB-ID-HERE",
  "outputs":[
    {
      "label": "60 secs by stream from min 2 to min 3",
      "stream_start_time": 120,
      "stream_end_time": 180,
      "credentials": "USER_VIDEOCLOUD_CREDENTIAL_LABEL",
      "videocloud": {
        "video": {
        "name": "One Minute Clip",
        "tags": ["live", "clip"]
        },
          "ingest": {
            "capture-images": true
        }
      }
    }
  ]
}

이 예시에서는 길이가 1분인 클립을 만들어 로Video Cloud전송합니다. 클립에 이름과 몇 개의 태그를 지정하고ingest profile재트랜스코딩에 사용할 값을 지정하지 않으므로 계정 기본값이 사용되고 트랜스코딩 중에 클립에서 썸네일과 포스터 이미지를Video Cloud캡처하도록 지시합니다.

예 2: Epoch 시간의 시작/종료 시간

요청 본문에는 Epoch 시간의 시작 및 종료 시간과 클립을 보낼 위치에 대한 세부 정보가 포함됩니다. 다음은 스트림의 3분짜리 클립을 만들어Video Cloud계정에 보내는 샘플 요청 본문입니다.

{
  "live_job_id":"PUT-LIVE-JOB-ID-HERE",
    "outputs":[
      {
        "label": "60 secs - epoch time",
        "start_time": 1516652694,
        "end_time": 1516652754,
        "credentials": "USER_VIDEOCLOUD_CREDENTIAL_LABEL",
        "videocloud": {
          "video": {
          "name": "One Minute Clip",
          "tags": ["live", "clip"]
          },
            "ingest": {
            "capture-images": true
        }
      }
    }
  ]
}

이 예시에서는 특정 Epoch 시간 (이 예에서는 2018년 1월 22일 08:24:54 GMT) 에 길이가 1분인 클립을 만들고 있습니다.

예 3: 스트리밍 시작을 기준으로 한 시작 시간을 포함한 지속 시간

요청 본문에는 기간 및 stream_start_time, 클립을 보낼 위치에 대한 세부 정보가 포함됩니다. 다음은 스트림의 3분짜리 클립을 만들어Video Cloud계정에 보내는 샘플 요청 본문입니다.

{
  "live_job_id":"PUT-LIVE-JOB-ID-HERE",
  "outputs":[
    {
      "label": "60 secs from start time",
      "stream_start_time": 300,
      "duration": 60,
      "credentials": "USER_VIDEOCLOUD_CREDENTIAL_LABEL",
      "videocloud": {
        "video": {
        "name": "One Minute Clip",
        "tags": ["live", "clip"]
        },
        "ingest": {
        "capture-images": true,
        "profile": "valid-ingest-profile-name"
        }
      }
    }
  ]
}

이 예시에서는 실시간 스트림이 시작된 지 5분 후부터 시작하여 길이가 1분인 클립을 만들고 있습니다.

예 4: 시작 또는 종료 시간이 없는 기간

요청 본문에는 Epoch 시간의 시작 및 종료 시간과 클립을 보낼 위치에 대한 세부 정보가 포함됩니다. 다음은 스트림의 3분짜리 클립을 만들어Video Cloud계정에 보내는 샘플 요청 본문입니다.

{
  "live_job_id":"PUT-LIVE-JOB-ID-HERE",
  "outputs":[
    {
      "label": "60 secs - duration",
      "duration": 60,
      "credentials": "USER_VIDEOCLOUD_CREDENTIAL_LABEL",
      "videocloud": {
        "video": {
        "name": "One Minute Clip",
        "tags": ["live", "clip"]
        },
        "ingest": {
          "capture-images": true
        }
      },
      "notifications": ["https://myserver.com/api/notification_listener?type=jvod"]
    }
  ]
}

이 예시에서는 길이가 1분인 클립을 만들고 있습니다. 시작 또는 종료 시간을 지정하지 않았으므로 클립은 라이브 스트림의 마지막 60 초부터 가져옵니다.

예 5: stream_start_timecode및 사용stream_end_timecode

요청 본문에는 HH:MM:SS:FF 타임코드의 시작 및 종료 시간/프레임과 클립 전송 위치에 대한 세부 정보가 포함됩니다. 타임 코드를 사용하려면 인코더가 타임 코드를 전송해야합니다. 다음은 50분 분량의 스트리밍 클립을 만들어Video Cloud계정에 전송하는 샘플 요청 본문입니다.

{
  "live_job_id":"PUT-LIVE-JOB-ID-HERE",
  "outputs":[
    {
      "label": "Clipping using Timecode from-01:10:18:15 to-01:11:08:15",
      "stream_start_timecode": "01:10:18:15",
      "stream_end_timecode": "01:11:08:15",
      "credentials": "USER_VIDEOCLOUD_CREDENTIAL_LABEL",
      "videocloud": {
        "video": {
          "name": "Fifty Minute Clip",
          "tags": ["live", "clip"]
        },
        "ingest": {
        "capture-images": true
        }
      }
    },
    "notifications": ["https://myserver.com/api/notification_listener?type=jvod"]
  ]
}

클립 전송에 대한 일반 정보Video Cloud

videoingest객체에 포함할 수 있는 필드를 보려면 를 참조하십시오Dynamic Ingest API Reference .

요청 본문-S3

요청 본문에는 시작 및 종료 시간과 클립을 보낼 위치에 대한 세부 정보가 포함됩니다. 다음은 스트림의 3분의 1 분량의 클립을 생성하여 S3 버킷으로 전송하는 샘플 요청 본문입니다.

{
  "live_job_id":"",
  "outputs":[
    {
      "label": "last_30",
      "duration": 30,
      "url": "s3://YOUR_BUCKET_NAME/file_name.mp4",
      "credentials": "s3-credentials",
      "notifications": ["https://myserver.com/api/notification_listener?type=jvod"]
    }
  ],
}

이 예에서는 30 초 길이의 클립을 생성하여 S3 버킷으로 보냅니다. 클립의 파일 이름이 포함된 버킷 URL과 저장된 S3 버킷 자격 증명의 이름인 문자열을 제공합니다.

Live API를 사용하여 자격 증명을 만들고 관리할 수 있습니다. 자세한 내용은 다음을 참조하십시오.

본문 필드 요청

다음은 요청 본문 필드의 전체 표입니다.

요청 본문 필드
필드 유형 설명
live_job_id 문자열

VOD 클립을 생성 할 라이브 스트림 작업의 ID입니다.

outputs 객체 []

VOD 출력 배열

outputs.label 문자열

출력용 레이블

outputs.duration 번호

클립의 길이 (초)입니다. 그만큼duration최종 파일로 만들 클립을 정의하기 위해 단독으로 사용할 수 있습니다. {duration}스트림의 초. duration어떤 것과도 사용할 수 있습니다. 중 하나stream_start_time , stream_end_time , start_time , end_time , stream_end_timecode , 또는stream_start_timecode .

outputs.stream_start_time 번호

라이브 스트림의 시작 시간을 기준으로 클립의 시작 시간(초), stream_start_time와 함께 사용해야 합니다어느 하나stream_end_time또는duration .

outputs.stream_end_time 번호

라이브 스트림의 시작 시간을 기준으로 클립의 종료 시간(초), stream_end_time와 함께 사용해야 합니다어느 하나stream_start_time또는duration .

outputs.start_time 번호

클립의 시작 시간(Epoch(Unix) 시간(초), start_time와 함께 사용해야 합니다어느 하나end_time또는duration .

outputs.end_time 번호

클립의 종료 시간(Epoch(Unix) 시간(초), end_time와 함께 사용해야 합니다어느 하나start_time또는duration .

outputs.stream_start_timecode 번호

스트림 시작부터 SMPTE 형식(HH:MM:SS:FF) 타임코드의 클립 시작 시간, stream_start_timecode와 함께 사용해야 합니다어느 하나stream_end_timecode또는duration .

outputs.stream_end_timecode 번호

스트림 끝에서 SMPTE 형식(HH:MM:SS:FF) 타임코드의 클립 종료 시간, outputs.stream_end_timecode와 함께 사용해야 합니다어느 하나stream_start_timecode또는duration .

outputs.url 문자열

클립의 대상 URL, 출력은 ~ 해야 하다포함하다어느 하나이것url필드또는videocloud비디오 속성 및 인제스트 옵션을 정의하는 객체Video Cloud .

outputs.credentials 문자열

이 주소에 대해 계정에 구성된 자격 증명의 이름

outputs.videocloud 객체

Video Cloud섭취를 위한 입력을 포함하는 객체입니다.

outputs.videocloud.video 물체

Video Cloud비디오 객체 생성을 위한 입력을 포함하는 객체 - 참조CMS API Reference for creating a video

outputs.videocloud.ingest 물체

다음에 대한 입력을 포함하는 객체Video Cloud비디오 수집 - 참조Dynamic Ingest Reference - 하다 ~ 아니다포함master해당 정보는 Live API에서 제공하므로 필드입니다. 수집 프로필이 지정되지 않은 경우 계정 기본 프로필이 사용됩니다.

Video Cloud인제스트용 비디오 필드

참조 CMS API 참조상세 사항은.

비디오 필드
필드 유형 설명
ad_keys 문자열 동영상에 할당된 광고 키/값 쌍을 나타내는 문자열입니다. 키/값 쌍은 키 = 값으로 형식이 지정되며 앰퍼샌드로 구분됩니다. 예를 들면 다음과 같습니다. "adKeys": "category=sports&live=true"
cue_points 지도 배열 큐 포인트 맵 배열
custom_fields 필드-값 쌍 (문자열) 의지도 관습fieldname:value비디오에 대한 설정 - 수행하는 사용자 정의 필드에 유의하십시오. ~ 아니다이 동영상에 대한 값이 이 지도에 포함되어 있지 않습니다. 사용자 정의 필드 값의 최대 길이는 1024개의 1바이트 문자입니다.
description 문자열; 이전 간략한 설명을 대신합니다. 비디오에 대한 간단한 설명 (최대 길이: 248 싱글 바이트 문자)
economics 문자열은 유효한 열거 형 값 중 하나 여야합니다. “AD_지원” (기본값) 또는 “무료”
geo 속성-값 쌍의 맵 비디오의 지리적 제한 속성
link 속성-값 쌍의 맵 관련 링크 속성 맵
long_description 문자열 긴 설명 (최대 5000자)
name 문자열 비디오 이름 (최대 길이: 248자의 싱글바이트 문자) 이필요합니다.
offline_enabled 부울 비디오가 오프라인 재생을 사용하도록 설정되었는지 여부
projection 문자열 360° 비디오의 매핑 프로젝션 (예: “정방형”)
reference_id 문자열 동영상을고유하게 식별하는 사용자 지정 ID로 , 150자로 제한됩니다. ReferenceID는 다른 시스템에서 이 비디오를 식별하는 외래 키로 사용할 수 있습니다. 참조 ID는 공백, 쉼표 또는 특수 문자를 포함하지 않아야 합니다.
schedule 속성-값 쌍의 맵 동영상 가용성을 위한 시작 및 종료 날짜-시간 맵
state 문자열 활성, 비활성
tags 태그 배열 (문자열) 비디오에 할당된 태그 배열
text_tracks HTML5 스타일 텍스트 트랙의 배열 비디오에 할당된 텍스트 트랙 배열 (WebVTT 파일)

비디오 큐 포인트 필드

아래 표에는 에 대한 필드가 나와video.cuepoints있습니다.

큐포인트 필드
필드 유형 설명
id 문자열 큐 포인트의 시스템 ID
force_stop 부울 큐 포인트에서 비디오를 중지할지 여부
metadata 문자열, 코드 포인트만 큐 포인트와 연결된 메타데이터 문자열
name 스트링 큐 포인트 이름
time 플로트 비디오 시작부터 측정된 큐 포인트의 시간 (초)
type 스트링 큐 포인트 유형 ( AD또는DATA )

비디오 지역 필드

아래 표에는video.geo객체 필드가 나와 있습니다.

지역 필터링 필드
필드 유형 설명
countries 국가 코드 문자열 배열 동영상 재생이 허용되거나 허용되지 않는 국가의 ISO 3166 2 자 또는 4 자 코드 목록 (https://www.iso.org/obp/ui/)
exclude_countries 부울 true인 경우 국가 배열이 보기에서 제외된 국가 목록으로 처리됩니다.
restricted 부울 이 동영상에 대해 지역 필터링이 활성화되었는지 여부

아래 표에는video.link객체 필드가 나와 있습니다.

링크 필드
필드 유형 설명
url 문자열 관련 링크 URL
text 문자열 관련 링크 텍스트

비디오 일정 필드

아래 테이블은video.schedule객체의 필드를 보여줍니다.

video.schedule 필드
필드 유형 설명
ends_at ISO-8601 날짜 형식의 문자열 비디오를 볼 수 없게 되는 날짜-시간
starts_at ISO-8601 날짜 형식의 문자열 비디오를 볼 수 있게 되는 날짜-시간

Video Cloud인제스트 필드

Video Cloud인제스트 필드
필드 유형 설명
audio_tracks선택적동적 전송만 해당 객체 []

오디오 트랙 개체의 배열 - 참조 API를 사용하여 여러 오디오 트랙 구현자세한 내용은.

audio_tracks.merge_with_existing선택 과목 부울

기존 오디오 트랙을 교체할지 아니면 새 오디오 트랙을 추가할지 여부 ( false현재는 지원됨), 동적 전송만 가능

기본값: false

audio_tracks.masters선택 과목 객체 []

오디오 트랙 객체 배열 ( 동적 전달 전용)

audio_tracks.masters.url선택 과목 문자열

오디오 파일의 URL 동적 전송만 해당

audio_tracks.masters.language선택 과목 문자열

https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry 하위 태그의 오디오 트랙에 대한 언어 코드 (Brightcove 지원팀에 문의하여 계정에 기본값을 설정할 수 있음) 동적 전송만 해당

audio_tracks.masters.variant선택 과목 문자열

오디오 트랙 유형 (기본적으로 브라이트코브 지원에 문의하여 계정에 대해 설정할 수 있음) 동적 전송만 가능

허용되는 값: "main""alternate" , "commentary" , "dub" , "descriptive"

profile선택 과목 스트링

트랜스코딩에 사용할 인제스트 프로필의 ID (이름이 아님) 없을 경우 기본 프로필이 사용됩니다(이 필드를 생략하고 기본 프로필을 사용하는 것이 좋습니다).

text_tracks선택 과목 객체 []

text_tracks객체 배열 - WebVTT 파일 (텍스트 트랙) 인제스트를 참조하십시오.

text_tracks.url URL

웹VTT 파일의 URL

text_tracks.srclang 문자열

텍스트 트랙에 대한 ISO 639 2글자 (알파-2) 언어 코드

text_tracks.kind선택 과목 문자열

vtt 파일을 사용하는 방법

기본값: captions

허용되는 값: "captions" , "subtitles" , "chapters" , "metadata"

text_tracks.label선택 과목 문자열

사용자가 읽을 수 있는 제목

text_tracks.default선택 과목 부울

캡션/자막의 기본 언어를 설정합니다.

capture-images선택 과목 부울

트랜스코딩 중에 포스터와 썸네일을 캡처해야 하는지 여부. 프로필에 이미지 변환이 있는true경우 기본값으로 설정되고 그렇지 않은false경우 - 자세한 내용은이미지 및 Dynamic Ingest API를참조하십시오.

poster선택 과목 객체

인제스트할 비디오 포스터 - 자세한 내용은이미지 및 동적 인제스트 API를참조하십시오.

poster.url URL

비디오 포스터 이미지의 URL

poster.height선택 과목 정수

이미지의 픽셀 높이

poster.width선택 과목 정수

이미지의 픽셀 너비

thumbnail선택 과목 객체

인제스트할 비디오 썸네일 - 자세한 내용은이미지 및 동적 인제스트 API를참조하십시오.

thumbnail.url URL

비디오 축소판 이미지의 URL

thumbnail.height선택 과목 정수

이미지의 픽셀 높이

thumbnail.width선택 과목 정수

이미지의 픽셀 너비

callbacks선택 과목 문자열 [] 알림을보내야 하는 URL 배열

 

API 응답

클립 생성 요청에 대한 응답에는 작업의 ID와 요청 본문에 설정 한 라벨 및 라이브 작업 ID가 포함됩니다.

{
  "vod_jobs": [
    {
      "jvod_id": "9582606c50d84be5ad4bc104f2aa3360",
      "label": "last 60 secs of live job"
    }
  ],
  "live_job_id": "88ba5d87b61a4ef3a6dddabd0c38d319"
}

응답 필드

응답 본문 필드
필드 유형 설명
vod_jobs 객체

클립 응답 객체

jvod_id 문자열

클립 작업 ID

label 문자열

클립 레이블 (입력에서)

live_job_id 문자열

라이브 작업 ID (입력에서)