2017 年、ブライトコーブは動的配信を開始し、プレーヤが要求した時点でマニフェストと動画を「ジャスト イン タイム」で生成するようになりました。これにより、コンテンツを複数の異なるフォーマットに再パッケージ化し、可能な限り幅広いデバイスをサポートできるようになりました。
それ以来、この柔軟性を利用し、コンテンツを配信する CDN、利用可能な動画レンディションの品質、さらには動画マニフェスト内で異なる品質のレンディションをどのような順序で表示するかまで、きめ細かなレベルで制御したいというお客様の声を耳にする機会が増えました。これが、現在 API の一部として一般的に利用可能な、当社の配信ルール機能の作成につながりました。
この投稿では、このAPIを使用して、最もよく見られるユースケースの1つである、特定のデバイスに提供されるビデオの最大画質を制限する方法を紹介する。
セットアップ
まず、Video Cloud 経由で通常通りインジェストした、テスト用の動画が必要です。
そのプレーヤーに配信される HLS マニフェストの下を見てみると、以下のような行がいくつも含まれていることがわかる。この場合、480×270、640×360、960×540、そして 1280×720 という異なる解像度のレンディション・マニフェストを表している(下図):
#EXT-X-STREAM-INF:PROGRAM-ID=0,BANDWIDTH=2205500,CODECS="mp4a.40.2,avc1.4d001f",RESOLUTION=1280x720,AUDIO="audio-2",CLOSED-CAPTIONS=NONE
https://manifest.prod.boltdns.net/manifest/v1/hls/v4/aes128/5270290572001/aa7059e5-586b-4caa-ae6f-5533f223a569/a557b391-f20e-4727-9185-459411a63029/10s/rendition.m3u8
仮に960×540がこの仮想デバイスに提供したい最大解像度だとすると、我々のルールが適用された時点で1280×720のレンダリングは消えるはずだ。
ルール作り
配信ルールは、条件(ルールがいつ発動されるべきか)とアクション(ルールがコンテンツにどのように影響するか)で構成される。
ビデオレンダリングの最大画質を制限するルールが必要なことがわかっているので、まず、以下のHTTPリクエストでActionを作成しよう:
POST /accounts/{accountID}/actions
Content-Type: application/json
Authorization: Bearer {access_token}
とリクエストボディに設定されている:
{
"properties": {
"max_video_resolution": "960x540"
}
}
これで新しいアクションが作成され、次のようなものが返される:
{
"id": "88b13752-3469-4e46-b4aa-49cd4f1685a6",
"properties": {
"max_video_resolution": "960x540"
}
}
手動によるアクションの起動
Actionを条件付きで適用する前に、Playback APIリクエストのパラメータとしてActionのIDを追加することで、手動でActionを起動し、Actionの動作を確認することができます:
https://edge.api.brightcove.com/playback/v1/accounts/5270290572001/videos/6230434222001?config_id=88b13752-3469-4e46-b4aa-49cd4f1685a6
これで以前と同じHLSマニフェストが返されますが、1280×720のレンダリングは削除されています!
テストに役立つだけでなく、この方法で手動でルールを呼び出すことは、ブライトコーブ SDK を活用して独自のアプリを構築する顧客にとって強力なテクニックです。異なるアクション ID を渡すだけで、デバイスごと、アプリごと、あるいはユーザーごとに異なるルールを呼び出すことができます。
私たちがよく目にする使い方は、私たちの顧客が匿名ユーザーに基本的なタイプのコンテンツを提供するためにアクションを適用する一方で、サインアップする人は誰でも、よりリッチな(より高品質のビデオとオーディオ、HEVCのような最新のコーデック、プレミアムCDNプロバイダー)コンテンツを提供するために手動アクションを適用することです。
条件付き起動アクション
手動でアクションを呼び出すきめ細かさを望まない、または必要としないお客様のために、ブライトコーブ マニフェスト生成サービスがどのような状況でルールを適用するかを制御する、事前に作成された条件セットを提供します。これらはすべてのリクエストに適用されるため、動画を視聴するデバイスの種類に関係なく、特定のユーザー グループをターゲットにする優れた方法です。
提供される条件一式は、こちらのAPIリファレンスに掲載されている。
このチュートリアルでは、イギリスのユーザーが国全体のネットワーク容量の問題で高解像度のバッファリングに苦労していることを知っていて、それが解決されるまで高解像度のレンダリングを削除したいとします。
PUT /accounts/{accountID}/conditions
Content-Type: application/json
Authorization: Bearer {access_token}
このAPIコールはConditionsの配列を受け取るが、今はリクエストに以下のボディを含めることで、Conditionsを1つだけ作成する:
[
{
"name": "Cut off high-quality renditions for the UK",
"if": {
"request_country": [
"GB"
]
},
"then": [
"88b13752-3469-4e46-b4aa-49cd4f1685a6"
]
}
]
さて、英国内から標準的なPlayback APIリクエストを行うと(今回はconfig_idパラメータが付加されていないことに注意)、高品質なレンダリングが取り除かれる!
次はどうする?
以上で、デリバリールールのパワーと柔軟性をご理解いただけたと思います。サポートされている条件とアクションの完全なリストは、こちらをご覧ください。また、今後追加してほしい条件がありましたら、カスタマーサポートまたは担当者にお知らせください!
当社のお客様が配信ルールをどのように使用しているかをお知りになりたい場合は、Seven West Media が Brightcove の配信ルールで動画コンテンツ配信をどのように最適化しているかをご覧ください。