實作播放權限

在本主題中,您將了解如何使用 Brightcove 播放權限管理視頻播放。

簡介

Brightcove 的播放版權管理服務提供可擴充且具表現力的方式來管理視訊播放。

如果您不熟悉此功能,請參閱概述:Brightcove 播放限制文檔。

驗證程序

播放權按特定和匹配的順序應用。允許規則會否定其餘規則,因為它們比允許規則的特定性要低。

您可能希望允許特定的IP來避免該IP的國家/地區規則。您可能還希望阻止國家/地區限制通常允許的其他IP。所以,同時擁有兩者是有意義的block-ipsallow-ips在相同的播放權限定義中。其他規則也是如此。

您可以為大多數權限設置允許和禁止規則。國家是唯一沒有可能同時擁有兩者的國家。

以下流程圖顯示了驗證過程的工作原理:

  1. 地理檢查
  2. 日程檢查
  3. 代理檢查
  4. 域檢查
播放權限驗證
播放權限驗證

地理檢查

地理限制的流程將遵循以下圖表之一,基於geo_global_rule場地:

  • geo_global_rule被設定為allow_all
  • geo_global_rule被設定為block_all
  • geo_global_rule被設定為null
地域限制
地域限制

如果地理檢查通過,則繼續下圖中的附加檢查。

額外的驗證檢查

如果地理檢查通過,則按順序處理以下檢查:

  1. 日程檢查
  2. 代理檢查
  3. 域檢查
額外的驗證檢查
額外的驗證檢查

它是如何工作的?

播放權限是 播放限制解決方案的一部分。

播放權限

默認情況下,如果播放器(Brightcove 播放器和本機 SDK)具有策略密鑰,它會向播放 API 發出請求。播放器將請求發送到以下端點,並檢索您的內容:

edge.api.brightcove.com

要使用您的播放 API 請求檢查播放權限,您將不包括策略密鑰。當沒有Policy Key時,播放器向這個端點發送請求:

edge-auth.api.brightcove.com

如果所有 播放權限驗證檢查 都通過,則您的內容將被退回。

工作流程

要管理播放限制,請按照下列步驟操作:

  1. 設置您的帳戶
  2. 定義限制
  3. 將限制與視頻相關聯
  4. 配置播放器

設置您的帳戶

此功能適用於可存取播放版權管理服務之「有限可用性」階段的特定客戶。有關詳細信息,請聯繫您的客戶成功經理。

產生OAuth憑證

拿你的BC_TOKEN和帳號。

  1. 登入視訊雲端工作室。在裡面行政下拉,選擇帳戶信息 .複製你的帳戶ID .
  2. 隨著 Studio 中的任何頁面打開,打開瀏覽器的開發人員工具,轉到控制台,並粘貼以下代碼:

    var cookiesArray = document.cookie.split(";"), cookiesObj = {}, i, tmpArray = [];
    for (i = 0; i < cookiesArray.length; i++) {
        tmpArray = cookiesArray[i].split("=");
        if (tmpArray[0].indexOf('BC_TOKEN') > -1) {
            cookiesObj.BC_TOKEN = tmpArray[1];
        }
    }
    window.prompt("BC_TOKEN:", cookiesObj.BC_TOKEN);

    ,然後按回車鍵。

  3. 您應該會看到一個提示出現,其中包含您的BC_TOKEN

索取客戶憑證

為Playback Rights API添加帳戶權限。

  1. 為播放權限 API 創建客戶端憑據的最簡單方法是使用這個在線應用程序並確保在創建憑據時包含這些權限:
    播放權限
    播放權限
  2. 如果您希望直接使用OAuth API生成憑據,請繼續以下步驟。
  3. 這是具有所需權限的OAuth客戶端請求的示例。看獲取您的 BC_TOKEN有關獲取 BC_TOKEN 的信息。

    捲曲
      -包括\\
      --header“授權:BC_TOKEN 您的BC_TOKEN“ \\
      --data {
        name = demo&maximum_scope = [{
          “身份”:{
            “ type”:“ video-cloud-account”,
            “帳戶ID”:您的帳戶編號
          },
          “操作”:[
            “ video-cloud / playback-auth / playback-rights / read”,
            “ video-cloud / playback-auth / playback-rights / write”,
            “視頻雲/視頻/閱讀”,
            “視頻雲/視頻/創建”,
            “視頻雲/視頻/更新”,
            “視頻雲/視頻/刪除”,
            “視頻雲/回放身份驗證/密鑰/讀取”,
            “視頻雲/播放身份驗證/密鑰/寫入”
          ]
      }]
    } \\
    https://oauth.brightcove.com/v4/client_credentials
  4. 從 API 響應中,複製client_idclient_secret .向Playback Rights API發出請求時,將使用它們來生成訪問令牌。

定義限制

使用“播放權限” API定義視頻播放限制。

播放權限API

每個播放權限制物件都可以搭配一或多個視訊使用。

基本網址

API 的基本網址是:

https://playback-rights.api.brightcove.com

帳號路徑

在所有情況下,我們都會針對特定的視訊雲端帳戶提出要求。因此,您將始終將術語帳戶後面跟著您的帳戶 ID 添加到基本 URL 中:

https://playback-rights.api.brightcove.com/v1/accounts/{accountID}

授權

請求的訪問令牌是必需的,並且必須出現在授權頭።

Authorization: Bearer {access_token}

訪問令牌是一個臨時的 OAuth2 訪問令牌,必須從布萊特灣 OAuth 服務獲得。有關如何獲取客戶端憑據並使用它們檢索訪問令牌的詳細信息,請參閱Brightcove OAuth 概述 .

權限

對播放權限 API 的請求必須來自客戶憑據具有以下權限:

  • video-cloud/playback-auth/playback-rights/read
  • video-cloud/playback-auth/playback-rights/write

管理限制

播放權限API支持以下請求。有關 API 的詳細信息,請參閱播放權限 API 參考 .

創建新的播放權限

POST /v1/accounts/{accountID}/playback_rights
  Content-Type: application/json
  Body: {playback rights object}

有關有效字段的列表,請參閱請求正文部分。

捲曲範例

創建僅對澳大利亞有效的播放權。

捲曲-X 帖子\
  https://playback-rights.api.brightcove.com/v1/accounts/{your_account_id}/playback_rights \\
  -H' 授權:承載{access_token}'\\
  -H '內容類型:應用程序 /json'\
  -d '{
  “ geo”:{
    “ allowed_countries”:[
      “ AU”
    ]
  }
} '

API 回應

保存playback_rights_id供以後使用的價值。您可以在API響應中找到該值。要么:

  • 響應頭

    playback_rights_id值可以在Location標頭響應的字段。它應該是類似於這樣的:

    Location: /v1/accounts/your account_id/playback_rights/your playback_rights_id
        
  • 反應體

    playback_rights_id可以在響應正文中找到值作為id場地。它應該是類似於這樣的:

    {
      "id": "your playback_rights_id",
      "geo": {
      "allowed_countries": [
        "MX",
        "US"]
    }

獲取帳戶的所有播放權限

GET /v1/accounts/{accountID}/playback_rights

為帳戶獲取特定的播放權限

GET /v1/accounts/{accountID}/playback_rights/{playbackRightsID}

更新特定的播放權限:

PUT /v1/accounts/{accountID}/playback_rights/{playbackRightsID}
  Content-Type: application/json
  Body: {playback rights object}

有關有效字段的列表,請參閱請求正文部分。

刪除特定的播放權限:

DELETE /v1/accounts/{accountID}/playback_rights/{playbackRightsID}

要求主體

這是您可以包含在請求正文中的所有字段的示例:

{
  "geo": {
  "allowed_countries": [
    "MX",
    "US"
  ],
  "blocked_countries": [
    "JP",
    "CN"
  ],
  "allowed_zip_codes": [
    "US-90210"
  ],
  "blocked_zip_codes": [
    "US-72810"
  ],
  "allowed_dmas": [
    501
  ],
  "blocked_dmas": [
    803
  ]
},
"blocked_proxies": {
  "anonymous": true,
  "public": true,
  "corporate": true,
  "transparent": true,
  "hosting": true
},
"allowed_domains": [
  "www.google.com",
  "www.brightcove.com"
],
"blocked_domains": [
  "www.ooyala.com"
],
"start_time": 1572905011,
"end_time": 1672905011,
"allowed_ips": [
  "192.168.1.1"
],
"blocked_ips": [
  "192.168.1.1"
],
"allowed_days": [
  "mon",
  "tue"
],
"allowed_hours": [
  "5-6"
],
"allow_insecure": true,
"disabled": false,
"geo_global_rule": "allow_all",
"is_default": true,
"name": "Optional playback right name"
}

播放權限 API 字段

欄位 類型 描述
allowed_days 字串 允許檢索資源的日期的3個字母的小寫字母組成的數組。一項或多項:mon, tue, wed, thu, fri, sat, sun
allowed_domains , blocked_domains 字串 域名數組
allowed_hours 整數 從24小時制開始的小時數數組(從0開始,一直到47),在此期間允許檢索資源。當前日期為0到23,第二天結束日期為24到47。如果允許的小時數塊在前一天開始,在第二天結束,則必須使用24+標記。

示例:的值3-4在此標頭中表示該資源在 UTC 時間凌晨 3:00 到 3:59 之間可用
allow_insecure 布林值 預設:false
將此設置為true使 JWT 令牌成為可選的。
allowed_ips , blocked_ips 整數 ipv4/ipv6 地址或 CIDR 塊的數組。
disabled 布林值 預設:false
將此設置為true禁用播放權限,允許所有人播放。
geo 物件 與地理權利相關的財產
geo.allowed_countries ,
geo.blocked_countries
字串 兩個字母國家/地區代碼的數組,遵循ISO 3166-1 alpha-2標準。有關值的列表,請參閱正式分配的代碼元素 .
geo.allowed_dmas ,
geo.blocked_dmas
整數 尼爾森指定的市場區域(DMA)編號數組。有關值的列表,請參閱DMA代碼文檔。
geo.allowed_zip_codes ,
geo.blocked_zip_codes
字串 郵政編碼數組,前綴為國家/地區和連字符兩個字母。例如["US-90045"] .
兩個字母的國家/地區代碼必須大寫並遵循 ISO 3166-1 alpha-2 標準,如正式分配的代碼元素 .
geo_global_rule 字串 預設:""
價值觀:
  • "" - 沒有全球地理規則(即遵循地理屬性的正常流程)
  • "allow_all" - 允許從世界任何地方播放,黑名單位置除外,這些位置使用blocked_*特性
  • "block_all" - 阻止從世界任何地方播放,白名單位置除外,這些位置使用allow_*特性
is_default 布林值 預設:false
將此設置為true使當前播放權成為默認值。詳見 引言 部分的註釋。
name 字串 可選播放權名稱
start_time , end_time 整數 時代時間
播放權代理屬性
欄位 類型 描述
blocked_proxies 物件 與代理權相關的屬性
blocked_proxies.anonymous 布林值 客戶端的IP地址不可用。包括更改位置以擊敗DRM,TOR點,臨時代理和其他掩蔽服務的服務。
blocked_proxies.corporate 布林值 通常認為是無害的,但位置可能是個問題。確定是否有多個用戶通過一個或多個中央位置代理,並且可以共享一個網絡上的IP地址。
blocked_proxies.hosting 布林值 IP 地址屬於託管設施,並且可能是代理,因為最終用戶通常不位於託管設施中。
blocked_proxies.public 布林值 從允許公共互聯網訪問的位置代理了多個用戶。
blocked_proxies.transparent 布林值 客戶端的IP地址可通過HTTP標頭獲得,儘管該值不一定可靠(例如,它可以被欺騙)。

將限制與視頻相關聯

使用CMS API將播放權限 ID 與視頻相關聯。您將使用在上一步中創建的“播放權限” ID。

CMS 應用程式

每個播放權限制物件都可以搭配一或多個視訊使用。

基本網址

API 的基本網址是:

https://cms.api.brightcove.com/v1

帳號路徑

在所有情況下,我們都會針對特定的視訊雲端帳戶提出要求。因此,您將始終將術語帳戶後面跟著您的帳戶 ID 添加到基本 URL 中:

https://cms.api.brightcove.com/v1/accounts/{accountId}

授權

請求的訪問令牌是必需的,並且必須出現在授權頭።

Authorization: Bearer {access_token}

訪問令牌是一個臨時的 OAuth2 訪問令牌,必須從布萊特灣 OAuth 服務獲得。有關如何獲取客戶端憑據並使用它們檢索訪問令牌的詳細信息,請參閱Brightcove OAuth 概述 .

權限

對播放權限 API 的請求必須來自客戶憑據具有以下權限:

  • video-cloud/video/read
  • video-cloud/video/update

管理限制

CMS API支持多種請求類型。要更新視頻,請使用以下命令:

更新視頻:

關聯一個playback_rights_id與視頻。該ID應該存在於您在上一步中創建的Playback Rights API中。

PATCH /v1/accounts/{account_id}/videos/{video_id}
  Content-Type: application/json
  Body: {video object}

捲曲範例

在視頻中添加playback_rights_id。

curl -X PATCH \\
  https://cms.api.brightcove.com/v1/accounts/ 你的賬號_id /視頻/ 你的video_id \\
  -H' 授權:承載你的訪問令牌 '\\
  -H '內容類型:應用程序 /json'\
  -d '{
	“ playback_rights_id”:“您的playback_rights_id”
} '

獲取特定的視頻:

GET /v1/accounts/{account_id}/videos/{video_ids}

有關使用 API 的完整詳細信息,請參閱內容管理系統 API 參考 .

配置播放器

默認情況下,Brightcove播放器與Brightcove播放API(PAPI)對話。一個管理回放限制的新系統位於Playback API的前面。要配置播放器,請參閱以下內容:

網路播放器

要配置 Brightcove 網絡播放器,請參閱 Brightcove 播放器文檔的播放限制

本機 Android 或 iOS 播放器

要為 Android 或 iOS 配置本機播放器,請參閱 本機 SDK 文檔的播放限制

你自己的球員

如果您的內容在視頻雲庫中,但您使用的是自己的播放器,則可以按如下所示調用Playback API 概述:播放接口文檔。將基本URL替換為以下內容:

https://edge-auth.api.brigthcove.com

您將不使用策略密鑰,而是使用 JSON Web 令牌 (JWT) 進行身份驗證:

Authorization: Bearer {JWT}

這是一個Curl示例:

curl -X GET \\
-H' 授權:承載{JWT}'\\
https://edge-auth.api.brightcove.com/playback/v1/accounts/{your_account_id}/videos/{your_video_id}