はじめに
Brightcove のDynamic Ingest APIは、ビデオ ソースファイルがお客様の保管場所からダウンロードされ、ソースファイルの指定されたレンディションが作成される機能に基づいています。(Dynamic Ingestがファイルにアクセスできる一時的な場所にソースファイルをアップロードするオプションもあります)。このプラットフォームは、クラウド中心で、グローバルに分散しており、最新のプラクティスに基づき、クラス最高の一貫性と速度を実現する最新の手法に基づいています。
「 API リファレンス」も参照してください。
ワークフローの概要
メディア全体のトランスコーディングと保存には、多くのシステム/テクノロジーが使用されています。それらは以下の通りです:
- CMS API:DI API で使用するビデオオブジェクトを作成します。
- Zencoder :ビデオをトランスコードし、複数のレンディションを作成します。
- Amazon 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管理ツールを使用するか、次のいずれかのドキュメントを参照してください。
ベスト プラクティス
詳細は Dynamic Ingest API:ベスト プラクティスを参照して下さい。
有効なソース ロケーション
プル型のインジェスト
Dynamic Ingestでは、HTTP / HTTPS、S3、FTPから、認証の有無に関わらず、ソース動画ファイルを取り込むことができます。
例:
- http://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 バケットにある場合、Dynamic Ingest がファイルにアクセスするためのアクセス権の設定方法の詳細については、「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 |
space | %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を2回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をエンコードするには、String Encoder ドキュメントを参照してください。
ソースファイル名
すべての入力 URL は、Brightcove に送信するときに、 RFC 3986 に従って適切に URL エンコードする必要があります。つまり、URLのパスで見つかった 予約文字はパーセントエンコードされ(スペースは%20
にエンコードされます)、URLのクエリで見つかった予約文字はパーセントエンコードされます(スペースは+
または%20
に、+
は%2B
にエンコードされています)。
署名付き S3( v2 には、Signature、Expires、 AWSAccessKeyId が含まれ、 v4 には X-Amz-Algorithm、 X-Amz-Credential 、 X-Amz-Date 、 X-Amz-Expires、X-AMZ-SignedHeaders 、および X-Amz-Signature)または GCS (署名、有効期限、および GoogleAccessID を含む) URL は、すでに適切にエンコードされており、そのまま使用できるはずです。
サンプルアセット
Brightcove ラーニングサービスは、Dynamic Ingestを始めるにあたり、実験的に使用できるサンプル アセットを提供しています。これらのアセットには、短い動画、画像、多言語の WebVTT キャプションが含まれます。
トランスコードプロファイル
Dynamic Delivery (動的配信)ビデオを作成するには、特別な取り込みプロファイルが必要です。動的配信が有効になっている場合、アカウントにいくつかの標準の取り込みプロファイルが表示されます。
また、Studioの管理セクションで、取り込みプロファイルにカスタム動的配信プロファイルを追加することもできます-詳細は動的配信用の取り込みプロファイルの作成を参照してください。
動的配信プロファイルのサンプル
以下は、動的配信プロファイルのサンプルです。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 リクエストは2つあります。
- CMS APIを呼び出して、Video Cloud システムにビデオ オブジェクトを作成し、その ID を取得します。
- Dynamic Ingest APIを呼び出して、ビデオソースファイルのURLを提供し、必要に応じて他のファイルと取り込みの設定を指定します。
基本リクエストのサンプルセットは、次のようになります。
CMS API リクエスト
- HTTPメソッド
- POST
- リクエストURL
- https://cms.api.brightcove.com/v1/accounts/{account_id}/videos
- リクエスト本文
-
{ "name": "My First Dynamic Delivery Video" }
応答データには、次のリクエストで使用されるビデオid
が含まれます。
インジェスト API リクエスト
- HTTPメソッド
- POST
- リクエスト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のMediaモジュールで確認できます。
レンディションの全プロパティを表示するには、以下に詳述するCMSAPIリクエストを使用します。
再生用URLを取得するには、以下に詳述する再生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"
]
}
サイドカーのテキスト トラックは、非動的配信ビデオの場合と同様に、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"
DASH
<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"
}
テキスト トラック付きのサンプルプレーヤー(英語とスペイン語)
iOSアプリのサイドカーキャプション
ダイナミック レンディションの取得
ビデオのダイナミック レンディションに関する情報を取得するには、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パッケージングのデフォルトを設定するには、Brightcoveサポートにお問合せ下さい。
詳細については、 DRMによるコンテンツの取り込みを参照してください。
電子透かし入りのレンディション
電子透かし入りのレンディションがサポートされています。一部またはすべての動画に電子透かしを追加する必要がある場合は、Brightcoveサポートにお問い合わせください。
静的な動的配信プロファイルでは、電子透かし入りのレンディションを追加できますが、コンテキスト アウェア エンコーディング(CAE)プロファイルでは追加できないことに注意して下さい。
取り込み状況
動的配信の取り込み処理に関する情報は、コールバックをサブスクライブするか、Status APIによるジョブのステータス取得によって得ることができます。
コールバック
取り込みリクエストでは、取り込みプロセスの結果の通知を受信するために、1つまたは複数のコールバックURLを指定できます。指定する URL は、POST リクエストを受け付けることができるアプリ用のものである必要があります。通知は JSON 形式で送信されます。
通知の受信と解釈の詳細については、通知を参照して下さい。
ステータス API
ステータス 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"
}
コンテキスト アウェア エンコーディング
Context Aware Encoding(CAE)は、トランスコーディング中にソースビデオを分析し、ビデオの複雑さと提供される境界パラメーターのセット(最小レンディション数、最大ビットレート)に基づいて、最適なレンディションとビットレートのセットを生成するためにBrightcoveによって開発されたテクノロジーです。など)。
CAEプロファイルの使用方法については、コンテキスト アウェア エンコーディングを参照してください。
複数のオーディオトラック
動的配信用に設定されたアカウントでは、ビデオに複数のオーディオトラックを許可するように設定できます。
複数のオーディオトラックを 1 つのタイトルに関連付ける機能は、いくつかの重要なシナリオで役立ちます。
- 同じビデオを異なる言語で再生し、グローバルに幅広いリーチに対応
- 視覚障害者の説明を音声で提供
この機能の使用の詳細については、複数のオーディオトラックを参照してください。。
サンプルコード
ラーニングサービスは、Webインターフェイスを提供して、PHPプロキシを介したDynamic Ingest API リクエストを送信するいくつかのサンプルアプリを提供しています。サンプルアプリを見る。
さらに、次のGitHubリポジトリには、Java、Python、C#のサンプルコードが含まれています。このサンプルコードは次のとおりです。サポートされていませんBrightcove :
制約事項
- セグメント化されたビデオタイプ(HLSおよびDASH)の場合、一部のプレーヤーは、オーディオおよびビデオストリームの長さがセグメントの継続時間よりも大きく異なる場合を処理しません。この問題が発生した場合は、短いセグメント長を使用してみてください。
- 特殊文字"%"は、ソース・ファイル名の一部として使用する場合はサポートされていません。