라이브 API: VOD 클립 만들기
개요
클립은 라이브 스트림에서 추출한 비디오입니다. S3 버킷, FTP 사이트 또는Video Cloud계정. 클립은 MP4 비디오로 생성되며 모든 경우에 대상으로 전송됩니다. 의 경우Video Cloud , MP4는 인제 스트 시스템에 의해 트랜스 코딩되며 비디오에 대해 생성되는 변환 유형은 사용 된 인제 스트 프로파일에 따라 다릅니다.
클립에 대한 정의는/vods
끝점.
클립은 여러 가지 방법으로 만들 수 있습니다.
- 와
stream_start_timecode
및 / 또는stream_end_timecode
라이브 스트림 이벤트에 대한 SMPTE 타임 코드에 정의 됨- 이를 위해서는 인코더가 타임 코드 정보를 전송해야합니다. - 와
start_time
및 / 또는end_time
시작 시간 (stream_start_time
) 전체 실시간 스트림 이벤트 - 와
start_time
및 / 또는end_time
Epoch (Unix) 시간 (초)으로 정의 됨 - 와
duration
- VOD API는 암호화 또는 DRM 보호 작업과 함께 사용할 수 있습니다 . 현재 라이브 모듈은 이를 지원하지 않지만 향후 릴리스에서 지원할 예정입니다.
참고 사항
- 클립을 가능한 한 빨리 사용할 수 있도록 먼저 세그먼트에 정확한 클립을 만든 다음 사용 가능한 즉시 프레임에 정확한 클립으로 교체합니다.
- 지정하는 경우
duration
, 결과 클립은 다음과 같습니다.- 작업이 활성 상태이고 여전히 활성 상태 인 경우 : (요청 시간-기간) ~ (요청 시간)
- 작업이 완료된 경우 : (
finished_at
-기간) ~ (finished_at
)
- 둘 다 지정하는 경우
start_time
과end_time
:- 작업이 활성 상태이고 여전히 활성 상태 인 경우 : Epoch 시간 창이 완전히
created_at
그리고 요청 시간, 클립이 만들어 질 것입니다 - 작업이 완료된 경우 : Epoch 시간 창이 완전히
created_at
과finished_at
, 클립이 만들어집니다
- 작업이 활성 상태이고 여전히 활성 상태 인 경우 : Epoch 시간 창이 완전히
- 다음을 사용하는 라이브 스트림 클립 SSAI광고가 포함되지 않습니다.
- 클립은 이벤트 후 최대 7 일까지 생성 할 수 있습니다. 에 대한SEP , 다음 활성화까지 또는 7 일 (둘 중 더 짧은 기간)까지 생성 할 수 있습니다.
- VOD API는 스트림에있는 것 이외의 콘텐츠를 추가하지 않습니다. 300 초 길이의 라이브 스트림에 350을 지정하면 출력 길이는 300 초가됩니다.
- 라이브 스트림은 방송되는 그대로 저장되고 이벤트 종료 후 7 일 동안 즉시 사용할 수 있으므로 클리핑을 위해 DVR 지원 라이브 스트림을 사용할 필요가 없습니다.
- Brightcove Live 클리핑은 최고 해상도 출력과 동일한 해상도의 클립 만 생성합니다. 소스 입력 해상도와 일치하지 않습니다 (최고 해상도 출력과 동일하지 않은 경우).
클립을 여러 대상으로 보낼 수도 있습니다.
- ㅏVideo Cloud계정
- FTP 서버
- S3 버킷
클립을 지정하면 출력절대로 필요한 것있다어느 한 쪽ㅏurl
목적지또는ㅏvideocloud
비디오 생성 및 클립 수집을 자세히 설명하는 개체Video Cloud .
참고 : 클립라이브 스트림이 실행되는 동안 만들 수 있습니다. . 이렇게하려면 클립의 시작 및 종료 시간을 Epoch 시간으로 정의하거나스타트실시간 스트림 시간.
자격 증명
클립을 보내는 대상에 액세스하는 데 자격 증명이 필요한 경우 Live API의 자격 증명 작업을 사용하여 이러한 자격 증명을 만들 수 있습니다. 보다 Live 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
}
}
}
]
}
이 예에서는 라이브 스트림이 시작된 후 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": ["http://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": ["http://myserver.com/api/notification_listener?type=jvod"]
]
}
클립 보내기에 대한 일반 정보Video Cloud
어떤 필드를 포함 할 수 있는지 확인하려면video
과ingest
개체, 참조Dynamic Ingest API Reference .
요청 본문-S3
요청 본문에는 시작 및 종료 시간과 클립을 보낼 위치에 대한 세부 정보가 포함됩니다. 다음은 스트림의 3 분 클립을 생성하여 S3 버킷으로 보내는 샘플 요청 본문입니다.
{
"live_job_id":"",
"outputs":[
{
"label": "last_30",
"duration": 30,
"url": "s3://YOUR_BUCKET_NAME/file_name.mp4",
"credentials": "s3-credentials",
"notifications": ["http://myserver.com/api/notification_listener?type=jvod"]
}
],
}
이 예에서는 30 초 길이의 클립을 생성하여 S3 버킷으로 보냅니다. 클립의 파일 이름이 포함 된 버킷 URL과 저장된 S3 버킷 자격 증명의 이름 인 문자열을 제공합니다. 자격 증명은 Brightcove 지원에서 계정에 대해 설정할 수 있습니다.
본문 필드 요청
다음은 요청 본문 필드의 전체 표입니다.
필드 | 유형 | 설명 |
---|---|---|
live_job_id |
문자열 |
VOD 클립을 생성 할 라이브 스트림 작업의 ID입니다. |
outputs |
객체 [] |
VOD 출력 배열 |
outputs.label |
문자열 |
출력용 레이블 |
outputs.duration |
번호 |
클립의 길이 (초)입니다. 그만큼 |
outputs.stream_start_time |
번호 |
라이브 스트림의 시작 시간을 기준으로 한 클립의 시작 시간 (초) |
outputs.stream_end_time |
번호 |
라이브 스트림의 시작 시간을 기준으로 한 클립의 종료 시간 (초) |
outputs.start_time |
번호 |
Epoch (Unix) 시간 (초)의 클립 시작 시간, |
outputs.end_time |
번호 |
Epoch (Unix) 시간 (초)의 클립 종료 시간, |
outputs.stream_start_timecode |
번호 |
스트림 시작부터 SMPTE 형식 (HH : MM : SS : FF) 타임 코드의 클립 시작 시간, |
outputs.stream_end_timecode |
번호 |
스트림 끝에서 SMPTE 형식 (HH : MM : SS : FF) 타임 코드의 클립 종료 시간, |
outputs.url |
문자열 |
클립의 대상 URL, 출력은절대로 필요한 것있다어느 한 쪽이 |
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 - 하다아니포함 |
비디오 필드Video Cloud음식물 섭취
참조 CMS API 참조상세 사항은.
필드 | 유형 | 설명 |
---|---|---|
ad_keys |
문자열 | 동영상에 할당된 광고 키/값 쌍을 나타내는 문자열입니다. 키/값 쌍은 키 = 값으로 형식이 지정되며 앰퍼샌드로 구분됩니다. 예를 들면 다음과 같습니다. "adKeys": "category=sports&live=true" |
cue_points |
지도 배열 | 큐 포인트 맵 배열 |
custom_fields |
필드-값 쌍 (문자열) 의지도 | 커스텀fieldname:value 비디오 세트-사용자 정의 필드가아니이 비디오에 대한 값이이 맵에 포함되어 있지 않습니다. 사용자 정의 필드 값의 최대 길이는 1 바이트 1024 자입니다. |
description |
문자열; 이전 간략한 설명을 대신합니다. | 비디오에 대한 간단한 설명 (최대 길이: 248 싱글 바이트 문자) |
economics |
문자열은 유효한 열거 형 값 중 하나 여야합니다. | “AD_지원” (기본값) 또는 “무료” |
geo |
속성-값 쌍의 맵 | 비디오의 지리적 제한 속성 |
link |
속성-값 쌍의 맵 | 관련 링크 속성 맵 |
long_description |
문자열 | 긴 설명 (최대 5000자) |
name |
문자열 | 동영상 이름 (최대 길이 : 1 바이트 문자 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
목적
필드 | 유형 | 설명 |
---|---|---|
ends_at |
ISO-8601 날짜 형식의 문자열 | 비디오를 볼 수 없게 되는 날짜-시간 |
starts_at |
ISO-8601 날짜 형식의 문자열 | 비디오를 볼 수 있게 되는 날짜-시간 |
Video Cloud수집 필드
필드 | 유형 | 설명 |
---|---|---|
audio_tracks 선택적동적 전송 전용 |
객체 [] |
오디오 트랙 객체 배열-참조 API를 사용하여 여러 오디오 트랙 구현자세한 내용은. |
audio_tracks.merge_with_existing 선택 사항 |
부울 |
기존 오디오 트랙을 교체할지 새 트랙을 추가할지 여부 (현재 기본값: |
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 선택 사항 |
문자열 |
오디오 트랙 유형 (기본적으로 브라이트코브 지원에 문의하여 계정에 대해 설정할 수 있음) 동적 전송만 가능 허용되는 값 : |
profile 선택 사항 |
문자열 |
트랜스코딩에 사용할 인제스트 프로파일. 없는 경우 기본 프로파일이 사용됩니다. |
text_tracks 선택 사항 |
객체 [] |
의 배열 |
text_tracks.url |
URL |
웹VTT 파일의 URL |
text_tracks.srclang |
문자열 |
텍스트 트랙에 대한 ISO 639 2글자 (알파-2) 언어 코드 |
text_tracks.kind 선택 사항 |
문자열 |
vtt 파일을 사용하는 방법 기본값: 허용되는 값: |
text_tracks.label 선택 사항 |
문자열 |
사용자가 읽을 수 있는 제목 |
text_tracks.default 선택 사항 |
부울 |
캡션/자막의 기본 언어를 설정합니다. |
capture-images 선택 사항 |
부울 |
트랜스 코딩 중에 포스터 및 미리보기 이미지를 캡처해야하는지 여부 기본값은 |
poster 선택 사항 |
객체 |
수집 할 비디오 포스터-참조이미지 및 Dynamic Ingest API자세한 내용은 |
poster.url |
URL |
비디오 포스터 이미지의 URL |
poster.height 선택 사항 |
정수 |
이미지의 픽셀 높이 |
poster.width 선택 사항 |
정수 |
이미지의 픽셀 너비 |
thumbnail 선택 사항 |
객체 |
수집 할 동영상 미리보기 이미지-참조이미지 및 Dynamic Ingest 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 (입력에서) |