VAS_Real-time Screenshot

最終更新日:2022-04-14 16:08:55

1.VASイ紹介

1.1 概要

ライブストリーミング業界の盛況に伴い、様々なコンテンツが広く配信されるようになり、それに伴い競合他社が増加し、社会的な問題も発生しています。このような変化やニーズに応えるため、CDNetworksはリアルタイムのスクリーンショット機能をリリースしています。

Basic Real-Time Screenshot

政府はポルノやテロなどの違法なコンテンツを禁止しています。インタラクティブなストリーミングビジネスにおいて、ライブコンテンツはアンカーが直接プッシュするため、従来の手作業による識別方法では、コンテンツが違法かどうかを管理するのは困難なことでした。

このような状況の中、お客様がライブストリーミングコンテンツを画像で把握できるよう、CDNetworksはBasic Real-Time Screenshotサービスを提供することで、画像による映像監視を可能にしています。画像でポルノを識別するポルノ識別アプリと連携することで、自動識別機能を実現しています。こうして、人件費を大幅に削減するとともに、オフィスのネットワークが数百の映像ストリームを同時に監視できない問題を解決しているのです。

一方で、ライブストリーミングは多様化していることから、ライブストリーミングプラットフォームでは、ライブスクリーンショット画像をルームの表紙にしたり、多くのサービスイノベーションをする必要があります。Basic Real-Time Screenshotは、このような需要にも対応可能です。

CDNetworksでは、リアルタイムで撮影したスクリーンショット画像をCDNetworks Cloud Storage(略称:WCS)に保存し、お客様がいつでもアクセスできるようになっていますj。

Selective Real-Time Screenshot

CDNetworksのスクリーンショット機能は、お客様のニーズに基づいて、特定のストリームのスクリーンショット撮影が可能なセレクティブライブスクリーンショット機能を提供しています。通常のライブストリーミングプラットフォームでは、全アンカーよりも、「代表的な」アンカーのライブスクリーンショットのみを撮影して、ルームのカバーに使用することができます。
以下、2つの機能を比較したものです:

特徴 モード 紹介 API
Basic Real-Time Screenshot モード1 お客様はAPIを呼び出して、オンエア中のライブストリーミングのスクリーンショットを1枚撮影できます。 はい
モード2 CDNetworksは、お客様とスクリーンショットのルールについて相談し、スクリーンショットを有効化にします。スクリーンショットが有効化されたドメイン名/アプリ名/ストリーム名に対して、スクリーンショットが自動的に撮影されます。 いいえ
セレクティブリアルタイムスクリーンショット モード1 お客様はAPIを呼び出して、配信中のライブストリーミングのスクリーンショット撮影をオンオフにすることができます。 はい
モード2 お客様はAPIを呼び出して、まだ始まっていないライブストリーミングのスクリーンショットをオンオフにすることができます。 はい

1.2 適用プロダクト

Media Acceleration-Live Broadcast

1.3 適用シーン

  1. スクリーンショットは、ライブストリーミングのポルノチェックや他のチェックに使用することができます。
  2. スクリーンショットをライブストリーミングルームの表紙として使用します。

2.機能詳細

2.1 Basic Real-Time Screenshot

2.1.1 機能説明

現在、CDNetworksのBasic Real-Time Screenshotは、2つのモードに対応しています。

2.1.1.1 モード 1

CDNetworksは、オンデマンドでリアルタイムのスクリーンショット機能を提供しています。お客様が画像をリクエストすると、リクエストURLがスクリーンショットのトリガーしますます。そして、CDNetworksはお客様にライブストリーミングのスクリーンショット画像を返します。つまり、CDNetworksはお客様からリクエストがある度に1枚のスクリーンショットを撮影しますが、スクリーンショットの画像を保存すされません。
お客様からのリクエスト形式:「http://www.test.com/live/livestream.jpg"」
形式例では:
「www.test.com」は新しい画像のドメイン。
「livestream.jpg」はライブストリーミングの名前となります。
推奨リクエスト頻度:30秒に1回。

2.1.1.2 モード 2

手動のポルノ識別の人件費を削減し、効率を向上させ、ポルノ識別APPをより良くサポートするために、CDNetworksはライブストリーミングの時限スクリーンショット機能を提供します。アンカーがライブストリームをプッシュすると、CDNetworks WCSプラットフォームは、お客様との交渉頻度に基づいてストリームのスクリーンショットを撮影し、スクリーンショット画像をWCSプラットフォーム上に保存します。スクリーンショット画像をお客様に通知するため、お客様APIが呼び出されます。

モード2は、現在、ライブストリーミングプラットフォームで一般的に使用されています。

モード 2のコールバック説明
コールバック
プロアクティブリアルタイムスクリーンショットでは、スクリーンショットの画像情報をお客様に通知するために、お客様APIをコールバックすることができます。また、複数のコールバック通知をまとめて行うことで、頻繁な通知によるリソース浪費を回避することができます。
コールバックの頻繁は60Sに1回、または100画像に1回の頻度を推奨します。

スクリーンショットコールバックの起動と停止
スクリーンショットの起動通知:
通知アドレスの例:
http://abc.com?message_type=ws_record¬_start
注.通知先アドレスからの200が応答されると、通知が成功したことを示します。

通知内容
通知先には、URL-safe Base64-encoded Json情報が届き、お客様は受信後に内容を解析する必要があります。解析内容は、以下の形式になります:

{

"persistentId": "<persistentId>",

"streamname": "<streamname>",

"ops": "<Record ops>",

"bucket": "<bucket>",

"batch_notify_id": "<batch_notify_id>"

}

フィールド名 必須項目 説明
persistentId はい スクリーンショットタスクの一意識別子。
ストリーム名 はい ライブストリーム名。形式は"アプリ名"-"ストリーム名"となります。
ops はい 出力形式、頻度などを含んだスクリーンショットのパラメータです。
バケット はい 画像が保存されているWCS空間の名前です。
batch_notify_id いいえ 通知統合の関連ID。複数のスクリーンショットタスクの結果通知が統合されている場合、このフィールドはNULLとなります。

スクリーンショットの停止通知:
通知先アドレスの例:
http://abc.com?message_type=ws_record_finish
注: 通知先アドレスからの200が応答されると、通知が成功したことを示します。
お知らせの内容:
通知先には、URL-safe Base64-encoded Json情報が届き、お客様は受信後に内容を解析する必要があります。解析内容は、以下の形式になります:

{

"items": [

​    {

​      "persistentId": "< persistentId >",

​      "streamname": "<streamname>",

​      "ops": "<ops>",

​      "bucket": "<bucket>",

​      "code": "<code>",

​      "desc": "<desc>",

​      "error": "<error>",

​      "keys": [

​        "key1",

​        "key2",

​        "key3"

​      ],

​      "urls": [

​        "url1",

​        "url2"

​      ]

​    },

​    {

​      "persistentId": "< persistentId >",

​      "streamname": "<streamname>",

​      "ops": "<ops>",

​      "bucket": "<bucket>",

​      "code": "<code>",

​      "desc": "<desc>",

​      "error": "<error>",

​      "keys": [

​        "key1",

​        "key2",

​        "key3"

​      ],

​      "urls": [

​        "url1",

​        "url2"

​      ]

​    }

],

"batch_notify_id": "<batchnotifyid>"

}

フィールド名 必須 説明
persistentId はい スクリーンショットタスクの一意識別子。
ストリーム名 はい ライブストリーム名。形式は「アプリ名」-「ストリーム名」となります。
ops はい 出力形式、頻度などを含んだスクリーンショットのパラメータです。
バケット はい 画像が保存されているWCS空間の名前です。
コード はい スクリーンショットタスクのステータスコード。値1、2、3はそれぞれ処理中、処理失敗、処理成功を表しています。
desc はい タスクステータスコードの説明。その値はfileOperateActive、fileOperateFail、fileOperateSucceed のいずれになります。
エラー いいえ エラー内容の説明。
キー いいえ 出力ファイルの名前リスト。スクリーンショットが失敗した場合、このフィールドは空になります。
urls いいえ 出力ファイルのアドレスリスト。スクリーンショットが失敗した場合、このフィールドは空になります。
batch_notify_id いいえ 通知統合のための関連ID。複数のスクリーンショットタスクの結果通知が統合されている場合、このフィールドはNULLとなります。

モード 2対応の設定:

  1. 出力画像形式(jpg、pngなど)。
  2. 画像の高さ、幅をピクセル(px)単位で表示します。
  3. 画像の回転(デフォルトでは回転なし)は、90度、180度、270度の回転が設定可能です。
  4. スクリーンショットの頻度も設定可能で、30Sに1回の頻度が推奨されています。

2.1.2 紹介

モード 1
この機能を利用する際、お客様に以下の情報を提供する必要があります。

  1. スクリーンショット用の新しいドメイン
  2. スクリーンショット画像にアクセスするための新しいドメイン。
  3. CDNetworksと交渉したスクリーンショット頻度

モード 2
この機能を利用する際、お客様に以下の情報を提供する必要があります。

  1. スクリーンショット画像の形式。jpgとpngの形式に対応しています。
  2. スクリーンショットのコールバックアドレス、および統合通知のコールバック頻度(コールバック頻度が通常のサービスに影響しないことをCDNetworksが保証)。
  3. CDNetworksのWCSストレージサービスを有効にし、ライブストリーミングプラットフォームにストアスペース名を提供します。
  4. CDNetworksと交渉したリアルタイムのスクリーンショット頻度。

2.2 セレクティブのリアルタイムスクリーンショット

2.2.1 機能説明

CDNetworksのセレクティブリアルタイムスクリーンショット機能は、APIインターフェースを呼び出すことで実現され、2つのモードがあります。

モード 1:### 1つ以のライブストリームがオンエア中のときに、APIインターフェースを呼び出して、ライブストリームのスクリーンショットを撮影することができます。スクリーンショットの撮影は、APIが呼び出されたときに開始され、終了したときに終わります。このライブストリーミングのみ有効です。

モード 2:ドメイン、アプリ名、ストリームの粒度での呼び出しに対応しています。ライブストリーミングする前に、APIインターフェースを呼び出して、デフォルトスクリーンショットを有効にします。これにより、ライブストリーミング開始時にスクリーンショットの撮影がされ、終了時にスクリーンショットが停止されます。デフォルトのスクリーンショットが有効である限り、ライブストリーミングのたびにスクリーンショットが撮影されます。

APIには許可管理があり、アカウントがCDNetworksのサービスを有効にし、一定のルールでパラメータを入力した場合にのみ、正しく呼び出すことができます。アクセス管理は、パラメータn、r、kによって決められます。以下は、この3つのパラメータの仕様となります:

  1. n: デフォルトでは、ポータルアカウント名となります。
  2. r: 最大10文字のユニークなランダム文字列であり、タイムスタンプが推奨されます。
  3. k: md5認証の値。
    MD5の計算方法:
    k = md5(r+key)、つまり新しい文字列であり、rにkeyを加え、MD5でハッシュ化し、新しい値kに変換することです。注意:「キー」は、対応する顧客サービスエンジニアから入手することができます。

例:

  1. 適用してキーを入手=012f37a3f2952
  2. ランダムな文字列を生成 r=1409284800
  3. 合成文字列を生成 new=1409284800012f37a3f2952
  4. 新しい文字列をMD5で計算し、k値を得る: b9fed80be752551834eec3e52fa94115

2.2.2. インターフェース説明

2.2.2.1 モード 1のインターフェース

API アドレス

 http://livect.ossin.cdnetworks.com/v2/api/stream_listen_call.action (アジア地域で使用) http://livect.osame.cdnetworks.com/v2/api/stream_listen_call.action (欧米地域で使用) 
 http://livect.ossin.cdnetworks.com/v2/api/stream_listen_call.action を例とします。

スクリーンショット
POST方法:

URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_call.actiontype=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xxx&r=xxx&k=xxx

パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 デフォルト値
_method 文字列 オペレーションタイプ いいえ デフォルト値なし 呼び出し停止例を参照し、そのリクエスト方法はPOSTです。
タイプ 文字列 管理方式 はい type=frame、つまりスクリーンショットのことです。
ドメイン 文字列 ドメイン名 はい ws.test.com
アプリ名 文字列 アプリ名 いいえ テスト
ストリーム名 文字列 ストリーム名 いいえ 複数のストリームに対応しています。ストリーム名は「, 」で区切られます。例:push_test1,push_test2
n 文字列 ユーザー はい
r 文字列 乱数 はい 現在のタイムスタンプ
k 文字列 検証値 はい Md5(r+トークン)

戻り値のスタートタスク
正しい:HTTP-CODE 200

{

"msg": "success", // プロンプト

"http_code": 200, // 稼働状態

'trace_id':"0e06b1cb-5bfc-47e4-872f-6dac38dd0f54", //取引記録

"call_time": "2017-08-02 11:43:34", // リクエスト時間

"list": [ // タスクの詳細

​    {

​      "task": "jpg", // ファイル形式

​      "id": "test", // ストリーム名

​      "http_code": 200, // 処理成功

​      "msg": null, // プロンプト

​      "persistentId": "21_111222233344567885555544" // ファイルID

​    }]

}

認証パラメータがありません:HTTP-CODE 403

{

"msg": "apiName, n, r, k not exist or empty",

"http_code": 1002,

'trace_id':"74abec25-5662-4d6c-88a7-db15f7fd7e70",

"call_time": "2017-08-02 11:43:34"

}

無許なし:HTTP-CODE 403
一部失敗:HTTP-CODE 200,HTTP_BODY は次の通り:

{

"msg": 「ストリーム録画の一部が失敗しました",

"http_code": 1011,

'trace_id':cee8e3f7-e1ab-4d9c-ad98-2259045a6bac",

"call_time": "2017-08-02 11:43:34",

"list": [

​    {

​      "task": "jpg",

​      "id": "id",

​      "http_code": 200,

​      "msg": null,

​      "persistentId": "21_111222233344567885555544"

​    },

​    {

​      "task": "jpg",

​      "id": "id",

​      "http_code": 1007, // 操作が失敗した場合のプロンプト

​      "msg": "call wcs failure", // 操作が失敗した場合のプロンプト 

​      "persistentId": null

​    }]

}

停止スクリーンショット

POST方法:

 URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_call.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xxx&r=xxx&k=xxx&_method=DELETE

削除方法:

 URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_call.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xxx&r=xxx&k=xxx

停止タスクの戻り値
正しい:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "success",

"http_code": 200,

'trace_id':"8fe8e186-8435-4f6b-b38e-d30854dfe467",

"call_time": "2017-08-02 11:43:34",

"list": [

​    {

​      "task": "jpg",

​      "http_code": 200,

​      "msg": "success",

​      "persistentId": "21_111222233344567885555544"

​     }]

}

リクエストパラメータエラー:HTTP-CODE 400
許可なし:HTTP-CODE 403
管理タスクが存在しません:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "id:stop record param not exists;id2:stop record param not exists;",

"http_code": 1007,

'trace_id':3caed803-63d4-4e2a-8a8e-abc9160e2977",

"call_time": "2017-08-02 11:43:34",

"list": []

}

2.2.2.2 モード 2のインターフェース

API アドレス

 http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action (アジア地域で使用) http://livect.osame.cdnetworks.com/v2/api/stream_listen_setting.action (欧米地域で使用) 
http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action 

を例とします。

スクリーンショット
POST方法:

URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xx&r=xx&k=xxx

パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 デフォルト値
_method 文字列 オペレーションタイプ いいえ デフォルト値なし 呼び出し停止例を参照し、そのリクエスト方法はPOSTです。
タイプ 文字列 管理方式 はい type=frame、つまりスクリーンショットのことです。
ドメイン 文字列 ドメイン名 はい ws.test.com
アプリ名 文字列 アプリ名 いいえ テスト
ストリーム名 文字列 ストリーム名 いいえ 複数のストリームに対応しています。ストリーム名は「, 」で区切られます。例:push_test1,push_test2
n 文字列 ユーザー はい
r 文字列 乱数 はい 現在のタイムスタンプ
k 文字列 検証値 はい Md5(r+トークン)

スクリーンショット起動時の戻り値
正しい:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "success",

"http_code": 200,

'trace_id':d891992f-ce3a-41d3-ac6e-37695e797aac",

"call_time": "2017-08-02 11:43:34"

}

認証パラメータがありません:HTTP-CODE 403

{

"msg": "apiName, n, r, k not exist or empty",

"http_code": 1002,

'trace_id':"74abec25-5662-4d6c-88a7-db15f7fd7e70",

"call_time": "2017-08-02 11:43:34"

}

許可なし:HTTP-CODE 403

停止スクリーンショット

POST方法:

 URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xx&r=xx&k=xxx&_method=DELETE

削除方法:

 URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xx&r=xx&k=xxx

スクリーンショット停止時の戻り値
正しい:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "success",

"http_code": 200,

'trace_id':"8fe8e186-8435-4f6b-b38e-d30854dfe467",

"call_time": "2017-08-02 11:43:34",

"list": [

​    {

​      "task": "jpg",

​      "http_code": 200,

​      "msg": "success",

​      "persistentId": "21_111222233344567885555544"

​    }]

}

リクエストパラメータエラー:HTTP-CODE 400
許可なし:HTTP-CODE 403
管理タスクが存在しません:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "id:stop record param not exists;id2:stop record param not exists;",

"http_code": 1007,

'trace_id':3caed803-63d4-4e2a-8a8e-abc9160e2977",

"call_time": "2017-08-02 11:43:34",

"list": []

}

スクリーンショットのクエリタスクの
GET方法です:

URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xx&r=xx&k=xxx

スクリーンショットのクエリタスクの戻り値
正しい:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "success",

"http_code": 200,

'trace_id':"bed5431b-2569-488e-a71c-75ab76431a04",

"call_time": "2017-08-02 11:43:34",

"list": [

​    {

​      "function": "record",

​      "domain": "push.cloud-director.8686c.com",

​      "appName": "live",

​      "streamName": "1",

​      "isDeleted": 1,

​      "createTime": 1501582307

​    },

​    {

​      "function": "record",

​      "domain": "push.cloud-director.8686c.com",

​      "appName": "live",

​      "streamName": "2",

​      "isDeleted": 1,

​      "createTime": 1501582307

​    }  ]

}

認証パラメータがありません:HTTP-CODE 403

{

"msg": "apiName, n, r, k not exist or empty",

"http_code": 1002,

'trace_id':"74abec25-5662-4d6c-88a7-db15f7fd7e70",

"call_time": "2017-08-02 11:43:34"

}

許可なし:HTTP-CODE 403

2.2.3 通知

  • CDNetworks "Selective Real-Time Screenshot"は、"CDNetworks Basic Real-Time Screenshot"を進化させたものであり、"Selective Real-Time Screenshot "は、"CDNetworks Basic Real-Time Screenshot "を更に進化させたものです。ファイルの保存形式およびコールバック・インターフェースは、「CDNetworks Basic Real-Time Screenshot」の形式に準拠する必要があります。
  • モード1において、2つの方法でスクリーンショットを停止することができます。1.API呼び出し。2.アンカーはライブストリーミングを終了できます。
  • モード2において、ストリーム名の粒度でデフォルト録画が設定された場合、ドメイン名、アプリ名、ストリーム名を空にすることはできません。例えば、ストリーム名が空でない場合(ストリーム名の粒度でデフォルト録画を設定)、パラメータアプリ名も必要になります。

2.2.4 リターンコードの説明の補足

コード プロンプト 説明
1001 リクエストパラメータが不完全です パラメータが欠けています
リクエストパラメータチャンネルのエラー ドメイン名エラー
1002 認証失敗 認証できませんでした
サインは正しくありません 署名エラー
apiName, n, r, k が存在しないか、または空です。 パラメータが入力されていません
ランダムは繰り返し 乱数の繰り返し
random.lengthgt 25 or key.length ne 32 乱数長さの誤差
Md5がエラー MD5検証エラー
このAPIにアクセスする権利がありません。 トークン値が見つかりません。インターフェースへのアクセス権がないことを報告します
頻度がlimitCountより大きいです インターフェイスの呼び出し回数が制限回数を上回っています
ユーザとホストは関係がありません 使用名はこのドメインに登録されていません
1003 redisrealTimeテーブルからliveChannelStatusを取得するにエラーが発生しました
PersistentId更新失敗
1004 live_channel_status レコードが存在しません リアルタイムストリームの中に、録画するストリームが存在しません
1005 レコードのパラメータが存在しません 録画パラメータ構成が存在しません
1006 ecord_single_stream_startwcs’sbの結果のpersistentId が空です 録画パラメータの設定が完了していません
persistentIdがnullまたは空です
1007 WCSインターフェースの呼び出しが失敗し、エラー情報はWCSから提供されています
呼び出しWSC失敗 WCSの呼び出しエラー。例:WCSに接続できません。接続タイムアウト、設定WCSアドレスのエラー
1008 ストリームレコードの追加失敗 ストリーム録画設定エラー

1.VASイ紹介

1.1 概要

ライブストリーミング業界の盛況に伴い、様々なコンテンツが広く配信されるようになり、それに伴い競合他社が増加し、社会的な問題も発生しています。このような変化やニーズに応えるため、CDNetworksはリアルタイムのスクリーンショット機能をリリースしています。

Basic Real-Time Screenshot
政府はポルノやテロなどの違法なコンテンツを禁止しています。インタラクティブなストリーミングビジネスにおいて、ライブコンテンツはアンカーが直接プッシュするため、従来の手作業による識別方法では、コンテンツが違法かどうかを管理するのは困難なことでした。

このような状況の中、お客様がライブストリーミングコンテンツを画像で把握できるよう、CDNetworksはBasic Real-Time Screenshotサービスを提供することで、画像による映像監視を可能にしています。画像でポルノを識別するポルノ識別アプリと連携することで、自動識別機能を実現しています。こうして、人件費を大幅に削減するとともに、オフィスのネットワークが数百の映像ストリームを同時に監視できない問題を解決しているのです。

一方で、ライブストリーミングは多様化していることから、ライブストリーミングプラットフォームでは、ライブスクリーンショット画像をルームの表紙にしたり、多くのサービスイノベーションをする必要があります。Basic Real-Time Screenshotは、このような需要にも対応可能です。

CDNetworksでは、リアルタイムで撮影したスクリーンショット画像をCDNetworks Cloud Storage(略称:WCS)に保存し、お客様がいつでもアクセスできるようになっていますj。

Selective Real-Time Screenshot
CDNetworksのスクリーンショット機能は、お客様のニーズに基づいて、特定のストリームのスクリーンショット撮影が可能なセレクティブライブスクリーンショット機能を提供しています。通常のライブストリーミングプラットフォームでは、全アンカーよりも、「代表的な」アンカーのライブスクリーンショットのみを撮影して、ルームのカバーに使用することができます。
以下、2つの機能を比較したものです:

特徴 モード 紹介 API
Basic Real-Time Screenshot モード1 お客様はAPIを呼び出して、オンエア中のライブストリーミングのスクリーンショットを1枚撮影できます。 はい
モード2 CDNetworksは、お客様とスクリーンショットのルールについて相談し、スクリーンショットを有効化にします。スクリーンショットが有効化されたドメイン名/アプリ名/ストリーム名に対して、スクリーンショットが自動的に撮影されます。 いいえ
セレクティブリアルタイムスクリーンショット モード1 お客様はAPIを呼び出して、配信中のライブストリーミングのスクリーンショット撮影をオンオフにすることができます。 はい
モード2 お客様はAPIを呼び出して、まだ始まっていないライブストリーミングのスクリーンショットをオンオフにすることができます。 はい

1.2 適用プロダクト

Media Acceleration-Live Broadcast

1.3 適用シーン

  1. スクリーンショットは、ライブストリーミングのポルノチェックや他のチェックに使用することができます。
  2. スクリーンショットをライブストリーミングルームの表紙として使用します。

2.機能詳細

2.1 Basic Real-Time Screenshot

2.1.1 機能説明

現在、CDNetworksのBasic Real-Time Screenshotは、2つのモードに対応しています。

2.1.1.1 モード 1

CDNetworksは、オンデマンドでリアルタイムのスクリーンショット機能を提供しています。お客様が画像をリクエストすると、リクエストURLがスクリーンショットのトリガーしますます。そして、CDNetworksはお客様にライブストリーミングのスクリーンショット画像を返します。つまり、CDNetworksはお客様からリクエストがある度に1枚のスクリーンショットを撮影しますが、スクリーンショットの画像を保存すされません。
お客様からのリクエスト形式:「http://www.test.com/live/livestream.jpg"」
形式例では:
「www.test.com」は新しい画像のドメイン。
「livestream.jpg」はライブストリーミングの名前となります。
推奨リクエスト頻度:30秒に1回。

2.1.1.2 モード 2

手動のポルノ識別の人件費を削減し、効率を向上させ、ポルノ識別APPをより良くサポートするために、CDNetworksはライブストリーミングの時限スクリーンショット機能を提供します。アンカーがライブストリームをプッシュすると、CDNetworks WCSプラットフォームは、お客様との交渉頻度に基づいてストリームのスクリーンショットを撮影し、スクリーンショット画像をWCSプラットフォーム上に保存します。スクリーンショット画像をお客様に通知するため、お客様APIが呼び出されます。

モード2は、現在、ライブストリーミングプラットフォームで一般的に使用されています。

モード 2のコールバック説明
コールバック
プロアクティブリアルタイムスクリーンショットでは、スクリーンショットの画像情報をお客様に通知するために、お客様APIをコールバックすることができます。また、複数のコールバック通知をまとめて行うことで、頻繁な通知によるリソース浪費を回避することができます。
コールバックの頻繁は60Sに1回、または100画像に1回の頻度を推奨します。

スクリーンショットコールバックの起動と停止
スクリーンショットの起動通知:
通知アドレスの例:
http://abc.com?message_type=ws_record¬_start
注.通知先アドレスからの200が応答されると、通知が成功したことを示します。

通知内容
通知先には、URL-safe Base64-encoded Json情報が届き、お客様は受信後に内容を解析する必要があります。解析内容は、以下の形式になります:

{

"persistentId": "<persistentId>",

"streamname": "<streamname>",

"ops": "<Record ops>",

"bucket": "<bucket>",

"batch_notify_id": "<batch_notify_id>"

}

フィールド名 必須項目 説明
persistentId はい スクリーンショットタスクの一意識別子。
ストリーム名 はい ライブストリーム名。形式は"アプリ名"-"ストリーム名"となります。
ops はい 出力形式、頻度などを含んだスクリーンショットのパラメータです。
バケット はい 画像が保存されているWCS空間の名前です。
batch_notify_id いいえ 通知統合の関連ID。複数のスクリーンショットタスクの結果通知が統合されている場合、このフィールドはNULLとなります。

スクリーンショットの停止通知:
通知先アドレスの例:
http://abc.com?message_type=ws_record_finish
注: 通知先アドレスからの200が応答されると、通知が成功したことを示します。
お知らせの内容:
通知先には、URL-safe Base64-encoded Json情報が届き、お客様は受信後に内容を解析する必要があります。解析内容は、以下の形式になります:

{

"items": [

​    {

​      "persistentId": "< persistentId >",

​      "streamname": "<streamname>",

​      "ops": "<ops>",

​      "bucket": "<bucket>",

​      "code": "<code>",

​      "desc": "<desc>",

​      "error": "<error>",

​      "keys": [

​        "key1",

​        "key2",

​        "key3"

​      ],

​      "urls": [

​        "url1",

​        "url2"

​      ]

​    },

​    {

​      "persistentId": "< persistentId >",

​      "streamname": "<streamname>",

​      "ops": "<ops>",

​      "bucket": "<bucket>",

​      "code": "<code>",

​      "desc": "<desc>",

​      "error": "<error>",

​      "keys": [

​        "key1",

​        "key2",

​        "key3"

​      ],

​      "urls": [

​        "url1",

​        "url2"

​      ]

​    }

],

"batch_notify_id": "<batchnotifyid>"

}

フィールド名 必須 説明
persistentId はい スクリーンショットタスクの一意識別子。
ストリーム名 はい ライブストリーム名。形式は「アプリ名」-「ストリーム名」となります。
ops はい 出力形式、頻度などを含んだスクリーンショットのパラメータです。
バケット はい 画像が保存されているWCS空間の名前です。
コード はい スクリーンショットタスクのステータスコード。値1、2、3はそれぞれ処理中、処理失敗、処理成功を表しています。
desc はい タスクステータスコードの説明。その値はfileOperateActive、fileOperateFail、fileOperateSucceed のいずれになります。
エラー いいえ エラー内容の説明。
キー いいえ 出力ファイルの名前リスト。スクリーンショットが失敗した場合、このフィールドは空になります。
urls いいえ 出力ファイルのアドレスリスト。スクリーンショットが失敗した場合、このフィールドは空になります。
batch_notify_id いいえ 通知統合のための関連ID。複数のスクリーンショットタスクの結果通知が統合されている場合、このフィールドはNULLとなります。

モード 2対応の設定:

  1. 出力画像形式(jpg、pngなど)。
  2. 画像の高さ、幅をピクセル(px)単位で表示します。
  3. 画像の回転(デフォルトでは回転なし)は、90度、180度、270度の回転が設定可能です。
  4. スクリーンショットの頻度も設定可能で、30Sに1回の頻度が推奨されています。

2.1.2 紹介

モード 1
この機能を利用する際、お客様に以下の情報を提供する必要があります。

  1. スクリーンショット用の新しいドメイン
  2. スクリーンショット画像にアクセスするための新しいドメイン。
  3. CDNetworksと交渉したスクリーンショット頻度

モード 2
この機能を利用する際、お客様に以下の情報を提供する必要があります。

  1. スクリーンショット画像の形式。jpgとpngの形式に対応しています。
  2. スクリーンショットのコールバックアドレス、および統合通知のコールバック頻度(コールバック頻度が通常のサービスに影響しないことをCDNetworksが保証)。
  3. CDNetworksのWCSストレージサービスを有効にし、ライブストリーミングプラットフォームにストアスペース名を提供します。
  4. CDNetworksと交渉したリアルタイムのスクリーンショット頻度。

2.2 セレクティブのリアルタイムスクリーンショット

2.2.1 機能説明

CDNetworksのセレクティブリアルタイムスクリーンショット機能は、APIインターフェースを呼び出すことで実現され、2つのモードがあります。

モード 1:### 1つ以のライブストリームがオンエア中のときに、APIインターフェースを呼び出して、ライブストリームのスクリーンショットを撮影することができます。スクリーンショットの撮影は、APIが呼び出されたときに開始され、終了したときに終わります。このライブストリーミングのみ有効です。

モード 2:ドメイン、アプリ名、ストリームの粒度での呼び出しに対応しています。ライブストリーミングする前に、APIインターフェースを呼び出して、デフォルトスクリーンショットを有効にします。これにより、ライブストリーミング開始時にスクリーンショットの撮影がされ、終了時にスクリーンショットが停止されます。デフォルトのスクリーンショットが有効である限り、ライブストリーミングのたびにスクリーンショットが撮影されます。

APIには許可管理があり、アカウントがCDNetworksのサービスを有効にし、一定のルールでパラメータを入力した場合にのみ、正しく呼び出すことができます。アクセス管理は、パラメータn、r、kによって決められます。以下は、この3つのパラメータの仕様となります:

  1. n: デフォルトでは、ポータルアカウント名となります。
  2. r: 最大10文字のユニークなランダム文字列であり、タイムスタンプが推奨されます。
  3. k: md5認証の値。
    MD5の計算方法:
    k = md5(r+key)、つまり新しい文字列であり、rにkeyを加え、MD5でハッシュ化し、新しい値kに変換することです。注意:「キー」は、対応する顧客サービスエンジニアから入手することができます。

例:

  1. 適用してキーを入手=012f37a3f2952
  2. ランダムな文字列を生成 r=1409284800
  3. 合成文字列を生成 new=1409284800012f37a3f2952
  4. 新しい文字列をMD5で計算し、k値を得る: b9fed80be752551834eec3e52fa94115

2.2.2. インターフェース説明

2.2.2.1 モード 1のインターフェース

API アドレス

 http://livect.ossin.cdnetworks.com/v2/api/stream_listen_call.action (アジア地域で使用) http://livect.osame.cdnetworks.com/v2/api/stream_listen_call.action (欧米地域で使用) 
 http://livect.ossin.cdnetworks.com/v2/api/stream_listen_call.action を例とします。

スクリーンショット
POST方法:

URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_call.actiontype=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xxx&r=xxx&k=xxx

パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 デフォルト値
_method 文字列 オペレーションタイプ いいえ デフォルト値なし 呼び出し停止例を参照し、そのリクエスト方法はPOSTです。
タイプ 文字列 管理方式 はい type=frame、つまりスクリーンショットのことです。
ドメイン 文字列 ドメイン名 はい ws.test.com
アプリ名 文字列 アプリ名 いいえ テスト
ストリーム名 文字列 ストリーム名 いいえ 複数のストリームに対応しています。ストリーム名は「, 」で区切られます。例:push_test1,push_test2
n 文字列 ユーザー はい
r 文字列 乱数 はい 現在のタイムスタンプ
k 文字列 検証値 はい Md5(r+トークン)

戻り値のスタートタスク
正しい:HTTP-CODE 200

{

"msg": "success", // プロンプト

"http_code": 200, // 稼働状態

'trace_id':"0e06b1cb-5bfc-47e4-872f-6dac38dd0f54", //取引記録

"call_time": "2017-08-02 11:43:34", // リクエスト時間

"list": [ // タスクの詳細

​    {

​      "task": "jpg", // ファイル形式

​      "id": "test", // ストリーム名

​      "http_code": 200, // 処理成功

​      "msg": null, // プロンプト

​      "persistentId": "21_111222233344567885555544" // ファイルID

​    }]

}

認証パラメータがありません:HTTP-CODE 403

{

"msg": "apiName, n, r, k not exist or empty",

"http_code": 1002,

'trace_id':"74abec25-5662-4d6c-88a7-db15f7fd7e70",

"call_time": "2017-08-02 11:43:34"

}

無許なし:HTTP-CODE 403
一部失敗:HTTP-CODE 200,HTTP_BODY は次の通り:

{

"msg": 「ストリーム録画の一部が失敗しました",

"http_code": 1011,

'trace_id':cee8e3f7-e1ab-4d9c-ad98-2259045a6bac",

"call_time": "2017-08-02 11:43:34",

"list": [

​    {

​      "task": "jpg",

​      "id": "id",

​      "http_code": 200,

​      "msg": null,

​      "persistentId": "21_111222233344567885555544"

​    },

​    {

​      "task": "jpg",

​      "id": "id",

​      "http_code": 1007, // 操作が失敗した場合のプロンプト

​      "msg": "call wcs failure", // 操作が失敗した場合のプロンプト 

​      "persistentId": null

​    }]

}

停止スクリーンショット

POST方法:

 URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_call.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xxx&r=xxx&k=xxx&_method=DELETE

削除方法:

 URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_call.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xxx&r=xxx&k=xxx

停止タスクの戻り値
正しい:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "success",

"http_code": 200,

'trace_id':"8fe8e186-8435-4f6b-b38e-d30854dfe467",

"call_time": "2017-08-02 11:43:34",

"list": [

​    {

​      "task": "jpg",

​      "http_code": 200,

​      "msg": "success",

​      "persistentId": "21_111222233344567885555544"

​     }]

}

リクエストパラメータエラー:HTTP-CODE 400
許可なし:HTTP-CODE 403
管理タスクが存在しません:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "id:stop record param not exists;id2:stop record param not exists;",

"http_code": 1007,

'trace_id':3caed803-63d4-4e2a-8a8e-abc9160e2977",

"call_time": "2017-08-02 11:43:34",

"list": []

}

2.2.2.2 モード 2のインターフェース

API アドレス

 http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action (アジア地域で使用) http://livect.osame.cdnetworks.com/v2/api/stream_listen_setting.action (欧米地域で使用) 
 http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action 

を例とします。

スクリーンショット
POST方法:

URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xx&r=xx&k=xxx

パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 デフォルト値
_method 文字列 オペレーションタイプ いいえ デフォルト値なし 呼び出し停止例を参照し、そのリクエスト方法はPOSTです。
タイプ 文字列 管理方式 はい type=frame、つまりスクリーンショットのことです。
ドメイン 文字列 ドメイン名 はい ws.test.com
アプリ名 文字列 アプリ名 いいえ テスト
ストリーム名 文字列 ストリーム名 いいえ 複数のストリームに対応しています。ストリーム名は「, 」で区切られます。例:push_test1,push_test2
n 文字列 ユーザー はい
r 文字列 乱数 はい 現在のタイムスタンプ
k 文字列 検証値 はい Md5(r+トークン)

スクリーンショット起動時の戻り値
正しい:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "success",

"http_code": 200,

'trace_id':d891992f-ce3a-41d3-ac6e-37695e797aac",

"call_time": "2017-08-02 11:43:34"

}

認証パラメータがありません:HTTP-CODE 403

{

"msg": "apiName, n, r, k not exist or empty",

"http_code": 1002,

'trace_id':"74abec25-5662-4d6c-88a7-db15f7fd7e70",

"call_time": "2017-08-02 11:43:34"

}

許可なし:HTTP-CODE 403

停止スクリーンショット

POST方法:

 URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xx&r=xx&k=xxx&_method=DELETE

削除方法:

 URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xx&r=xx&k=xxx

スクリーンショット停止時の戻り値
正しい:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "success",

"http_code": 200,

'trace_id':"8fe8e186-8435-4f6b-b38e-d30854dfe467",

"call_time": "2017-08-02 11:43:34",

"list": [

​    {

​      "task": "jpg",

​      "http_code": 200,

​      "msg": "success",

​      "persistentId": "21_111222233344567885555544"

​    }]

}

リクエストパラメータエラー:HTTP-CODE 400
許可なし:HTTP-CODE 403
管理タスクが存在しません:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "id:stop record param not exists;id2:stop record param not exists;",

"http_code": 1007,

'trace_id':3caed803-63d4-4e2a-8a8e-abc9160e2977",

"call_time": "2017-08-02 11:43:34",

"list": []

}

スクリーンショットのクエリタスクの
GET方法です:

URL:http://livect.ossin.cdnetworks.com/v2/api/stream_listen_setting.action?type=frame&domain=ws.test.com&appname=test&streamnames=push_test1,push_test2&n=xx&r=xx&k=xxx

スクリーンショットのクエリタスクの戻り値
正しい:HTTP-CODE 200,HTTP-BODY は次の通り:

{

"msg": "success",

"http_code": 200,

'trace_id':"bed5431b-2569-488e-a71c-75ab76431a04",

"call_time": "2017-08-02 11:43:34",

"list": [

​    {

​      "function": "record",

​      "domain": "push.cloud-director.8686c.com",

​      "appName": "live",

​      "streamName": "1",

​      "isDeleted": 1,

​      "createTime": 1501582307

​    },

​    {

​      "function": "record",

​      "domain": "push.cloud-director.8686c.com",

​      "appName": "live",

​      "streamName": "2",

​      "isDeleted": 1,

​      "createTime": 1501582307

​    }  ]

}

認証パラメータがありません:HTTP-CODE 403

{

"msg": "apiName, n, r, k not exist or empty",

"http_code": 1002,

'trace_id':"74abec25-5662-4d6c-88a7-db15f7fd7e70",

"call_time": "2017-08-02 11:43:34"

}

許可なし:HTTP-CODE 403

2.2.3 通知

  • CDNetworks "Selective Real-Time Screenshot"は、"CDNetworks Basic Real-Time Screenshot"を進化させたものであり、"Selective Real-Time Screenshot "は、"CDNetworks Basic Real-Time Screenshot "を更に進化させたものです。ファイルの保存形式およびコールバック・インターフェースは、「CDNetworks Basic Real-Time Screenshot」の形式に準拠する必要があります。
  • モード1において、2つの方法でスクリーンショットを停止することができます。1.API呼び出し。2.アンカーはライブストリーミングを終了できます。
  • モード2において、ストリーム名の粒度でデフォルト録画が設定された場合、ドメイン名、アプリ名、ストリーム名を空にすることはできません。例えば、ストリーム名が空でない場合(ストリーム名の粒度でデフォルト録画を設定)、パラメータアプリ名も必要になります。

2.2.4 リターンコードの説明の補足

コード プロンプト 説明
1001 リクエストパラメータが不完全です パラメータが欠けています
リクエストパラメータチャンネルのエラー ドメイン名エラー
1002 認証失敗 認証できませんでした
サインは正しくありません 署名エラー
apiName, n, r, k が存在しないか、または空です。 パラメータが入力されていません
ランダムは繰り返し 乱数の繰り返し
random.lengthgt 25 or key.length ne 32 乱数長さの誤差
Md5がエラー MD5検証エラー
このAPIにアクセスする権利がありません。 トークン値が見つかりません。インターフェースへのアクセス権がないことを報告します
頻度がlimitCountより大きいです インターフェイスの呼び出し回数が制限回数を上回っています
ユーザとホストは関係がありません 使用名はこのドメインに登録されていません
1003 redisrealTimeテーブルからliveChannelStatusを取得するにエラーが発生しました
PersistentId更新失敗
1004 live_channel_status レコードが存在しません リアルタイムストリームの中に、録画するストリームが存在しません
1005 レコードのパラメータが存在しません 録画パラメータ構成が存在しません
1006 ecord_single_stream_startwcs’sbの結果のpersistentId が空です 録画パラメータの設定が完了していません
persistentIdがnullまたは空です
1007 WCSインターフェースの呼び出しが失敗し、エラー情報はWCSから提供されています
呼び出しWSC失敗 WCSの呼び出しエラー。例:WCSに接続できません。接続タイムアウト、設定WCSアドレスのエラー
1008 ストリームレコードの追加失敗 ストリーム録画設定エラー