最終更新日:2022-04-14 16:08:55
ライブストリーミング業界の盛況に伴い、様々なコンテンツが広く配信されるようになり、それに伴い競合他社が増加し、社会的な問題も発生しています。このような変化やニーズに応えるため、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を呼び出して、まだ始まっていないライブストリーミングのスクリーンショットをオンオフにすることができます。 | はい |
Media Acceleration-Live Broadcast
現在、CDNetworksのBasic Real-Time Screenshotは、2つのモードに対応しています。
CDNetworksは、オンデマンドでリアルタイムのスクリーンショット機能を提供しています。お客様が画像をリクエストすると、リクエストURLがスクリーンショットのトリガーしますます。そして、CDNetworksはお客様にライブストリーミングのスクリーンショット画像を返します。つまり、CDNetworksはお客様からリクエストがある度に1枚のスクリーンショットを撮影しますが、スクリーンショットの画像を保存すされません。
お客様からのリクエスト形式:「http://www.test.com/live/livestream.jpg"」
形式例では:
「www.test.com」は新しい画像のドメイン。
「livestream.jpg」はライブストリーミングの名前となります。
推奨リクエスト頻度:30秒に1回。
手動のポルノ識別の人件費を削減し、効率を向上させ、ポルノ識別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
この機能を利用する際、お客様に以下の情報を提供する必要があります。
モード 2
この機能を利用する際、お客様に以下の情報を提供する必要があります。
CDNetworksのセレクティブリアルタイムスクリーンショット機能は、APIインターフェースを呼び出すことで実現され、2つのモードがあります。
モード 1:### 1つ以のライブストリームがオンエア中のときに、APIインターフェースを呼び出して、ライブストリームのスクリーンショットを撮影することができます。スクリーンショットの撮影は、APIが呼び出されたときに開始され、終了したときに終わります。このライブストリーミングのみ有効です。
モード 2:ドメイン、アプリ名、ストリームの粒度での呼び出しに対応しています。ライブストリーミングする前に、APIインターフェースを呼び出して、デフォルトスクリーンショットを有効にします。これにより、ライブストリーミング開始時にスクリーンショットの撮影がされ、終了時にスクリーンショットが停止されます。デフォルトのスクリーンショットが有効である限り、ライブストリーミングのたびにスクリーンショットが撮影されます。
APIには許可管理があり、アカウントがCDNetworksのサービスを有効にし、一定のルールでパラメータを入力した場合にのみ、正しく呼び出すことができます。アクセス管理は、パラメータn、r、kによって決められます。以下は、この3つのパラメータの仕様となります:
例:
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": []
}
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
コード | プロンプト | 説明 |
---|---|---|
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 | ストリームレコードの追加失敗 | ストリーム録画設定エラー |
ライブストリーミング業界の盛況に伴い、様々なコンテンツが広く配信されるようになり、それに伴い競合他社が増加し、社会的な問題も発生しています。このような変化やニーズに応えるため、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を呼び出して、まだ始まっていないライブストリーミングのスクリーンショットをオンオフにすることができます。 | はい |
Media Acceleration-Live Broadcast
現在、CDNetworksのBasic Real-Time Screenshotは、2つのモードに対応しています。
CDNetworksは、オンデマンドでリアルタイムのスクリーンショット機能を提供しています。お客様が画像をリクエストすると、リクエストURLがスクリーンショットのトリガーしますます。そして、CDNetworksはお客様にライブストリーミングのスクリーンショット画像を返します。つまり、CDNetworksはお客様からリクエストがある度に1枚のスクリーンショットを撮影しますが、スクリーンショットの画像を保存すされません。
お客様からのリクエスト形式:「http://www.test.com/live/livestream.jpg"」
形式例では:
「www.test.com」は新しい画像のドメイン。
「livestream.jpg」はライブストリーミングの名前となります。
推奨リクエスト頻度:30秒に1回。
手動のポルノ識別の人件費を削減し、効率を向上させ、ポルノ識別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
この機能を利用する際、お客様に以下の情報を提供する必要があります。
モード 2
この機能を利用する際、お客様に以下の情報を提供する必要があります。
CDNetworksのセレクティブリアルタイムスクリーンショット機能は、APIインターフェースを呼び出すことで実現され、2つのモードがあります。
モード 1:### 1つ以のライブストリームがオンエア中のときに、APIインターフェースを呼び出して、ライブストリームのスクリーンショットを撮影することができます。スクリーンショットの撮影は、APIが呼び出されたときに開始され、終了したときに終わります。このライブストリーミングのみ有効です。
モード 2:ドメイン、アプリ名、ストリームの粒度での呼び出しに対応しています。ライブストリーミングする前に、APIインターフェースを呼び出して、デフォルトスクリーンショットを有効にします。これにより、ライブストリーミング開始時にスクリーンショットの撮影がされ、終了時にスクリーンショットが停止されます。デフォルトのスクリーンショットが有効である限り、ライブストリーミングのたびにスクリーンショットが撮影されます。
APIには許可管理があり、アカウントがCDNetworksのサービスを有効にし、一定のルールでパラメータを入力した場合にのみ、正しく呼び出すことができます。アクセス管理は、パラメータn、r、kによって決められます。以下は、この3つのパラメータの仕様となります:
例:
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": []
}
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
コード | プロンプト | 説明 |
---|---|---|
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 | ストリームレコードの追加失敗 | ストリーム録画設定エラー |