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
)ライブストリームイベント全体の- エポック (Unix) 時間 (秒)
start_time
end_time
で定義されたおよび/または定義 - で
duration
- VOD API できると一緒に使用する暗号化またはDRM保護仕事。現在、Live Module はこれをサポートしていませんが、将来のリリースでは予定です。
備考
- クリップをできるだけ早く使用できるようにするには、セグメント精度が高いクリップを最初に作成してから、使用可能な次第、フレーム精度のクリップに置き換えます。
- を指定した場合
duration
、作成されるクリップは次のようになります。- ジョブがアクティブでまだ稼働している場合:(リクエスト時間-期間)~(リクエスト時間)
- ジョブが終了した場合:(
finished_at
-duration) から (finished_at
)
- [and]
start_time
の両方を指定した場合end_time
:- ジョブがアクティブでまだ生きている場合:
created_at
エポックタイムウィンドウが完全にリクエスト時間内に収まる限り、クリップが作成されます。 - ジョブが終了した場合:
created_at
エポックタイムウィンドウが完全におよび内にある限りfinished_at
、クリップが作成されます。
- ジョブがアクティブでまだ生きている場合:
- SSAI を使用したライブストリームのクリップには、広告は含まれません。
- クリップは、イベントの 7 日後まで作成できます。SEP では、次のアクティベーションまで、または 7 日(どちらか短い方)まで作成できます。
- VOD API は、ストリーム内に存在するコンテンツ以外のコンテンツを追加しません。300 秒の長さのライブストリームで 350 を指定すると、出力の長さは 300 秒になります。
- ライブストリームはブロードキャストされた状態で保存され、イベント終了後の 7 日間すぐに利用できるため、クリッピング機能に DVR 対応のライブストリームを使用する必要はありません。
- Brightcove Live クリッピングでは、最高解像度の出力と同じ解像度のクリップしか生成されません。ソース入力解像度とは一致しません(最高解像度の出力と同じでない限り)。
クリップを複数の宛先に送信することもできます。
- ビデオクラウドアカウント
- FTPサーバ
- S3 バケット
クリップを指定する場合、url
出力にはデスティネーションまたは Video Cloud videocloud
でのビデオの作成とクリップの取り込みを詳しく説明するオブジェクトです。
注: ライブストリームの実行中にクリップを作成できます。これを行うには、クリップの開始時間と終了時間をエポック時間、またはライブストリームの開始時刻を基準にして定義する必要があります。
認証情報
クリップの送信先でアクセスする認証情報が必要な場合は、Live API の認証情報操作を使用して認証情報を作成できます。詳細については、ライブ API の認証情報の管理を参照してください。
終点
クリップは、POST
次の宛先にリクエストを送信して作成されます。
https://api.bcovlive.io/v1/vods
リクエスト本文- ビデオクラウド
例 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に送信しています。アカウントのデフォルトが使用されるように、再トランスコーディングの取り込みプロファイルを指定せずに、クリップに名前といくつかのタグを付けて、 Video Cloudにサムネイルをキャプチャするように指示しています。トランスコーディング中のクリップからのポスター画像。
例 2: エポック時間での開始/終了時間
リクエスト本文には、開始時刻と終了時刻をエポック時間で表し、クリップを送信する場所の詳細が含まれます。ストリームの 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
}
}
}
]
}
この例では、特定のエポック時間(この例では 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: 開始時間または終了時間がない期間
リクエスト本文には、開始時刻と終了時刻をエポック時間で表し、クリップを送信する場所の詳細が含まれます。ストリームの 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
およびオブジェクトに含めることができるフィールドについては、動的取り込みを参照してください。APIリファレンス。
リクエストボディ-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 |
[番号] |
クリップの開始時間はエポック (Unix) 時間 (秒) で表されます。 |
outputs.end_time |
[番号] |
クリップの終了時刻をエポック (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 リファレンスを参照してください。 |
outputs.videocloud.ingest |
オブジェクト |
Video Cloud ビデオ取り込みの入力を含むオブジェクト- ダイナミックインジェストリファレンスを参照 - そうしないこの情報は Live API によって提供されるので、 |
ビデオクラウドの取り込み用のビデオフィールド
詳細については、 CMS API リファレンスを参照してください。
フィールド | タイプ | 説明 |
---|---|---|
ad_keys |
ストリング | 動画に割り当てられた広告キーと値のペアを表す文字列。キーと値のペアは、キー=値としてフォーマットされ、アンパサンドで区切られます。たとえば、"adKeys": "category=sports&live=true" |
cue_points |
マップの配列 | キューポイントマップの配列 |
custom_fields |
フィールドと値のペアのマップ (文字列) | fieldname:value ビデオのカスタムセット- このビデオの値を持たないカスタムフィールドはこのマップに含まれません。カスタムフィールドの値の最大長は1024 のシングルバイト文字 |
description |
文字列。古い shortDescription の代わりになります | ビデオの簡単な説明(最大長:248 シングルバイト文字) |
economics |
文字列。有効な列挙値のいずれかである必要があります。 | 「AD_SUPPOPTED」(デフォルト)または「無料」 |
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 の場合、Country 配列は表示から除外された国のリストとして扱われます。 |
restricted |
ブール値 | この動画で地理フィルタリングが有効になっているかどうか |
ビデオリンクフィールド
次の表に、video.link
オブジェクトフィールドを示します。
フィールド | タイプ | 説明 |
---|---|---|
url |
ストリング | 関連リンク URL |
text |
ストリング | 関連リンクテキスト |
ビデオ集計表フィールド
次の表に、video.schedule
オブジェクトのフィールドを示します。
フィールド | タイプ | 説明 |
---|---|---|
ends_at |
ISO-8601 日付形式の文字列 | ビデオが視聴できなくなる日時 |
starts_at |
ISO-8601 日付形式の文字列 | ビデオが視聴可能になる日時です。 |
ビデオクラウドの取り込みフィールド
フィールド | タイプ | 説明 |
---|---|---|
audio_tracks オプショナル 動的配信のみ |
オブジェクト [] |
オーディオトラックオブジェクトの配列-詳細については、API を使用した複数のオーディオトラックの実装を参照してください。 |
audio_tracks.merge_with_existing オプショナル |
ブール値 |
既存のオーディオトラックを置き換えるか、新しいオーディオトラックを追加するか( デフォルト値: |
audio_tracks.masters オプショナル |
オブジェクト [] |
オーディオトラックオブジェクトの配列 Dynamic Delivery のみ |
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 |
WebVTT ファイルの URL |
text_tracks.srclang |
ストリング |
ISO 639 テキストトラックの 2 文字 (アルファ-2) 言語コード |
text_tracks.kind オプショナル |
文字列 |
vtt ファイルの使用方法について デフォルト値: 許可される値: |
text_tracks.label オプショナル |
文字列 |
ユーザーが読めるタイトル |
text_tracks.default オプショナル |
ブール値 |
キャプション/字幕のデフォルト言語を設定します |
capture-images オプショナル |
ブール値 |
|
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 (入力から) |