tencent cloud

Video on Demand

イベント通知の受信方法

PDF
フォーカスモード
フォントサイズ
最終更新日: 2023-10-26 17:31:32

ご使用にあたっての注意事項

Demo機能紹介

ここではビデオのアップロード、トランスコードのフローを例に、開発者にVODのイベント通知システム の使用方法について表示します。

アーキテクチャおよびフロー

Demoは、クラウド関数(SCF)を基にHTTPサービスを構築して、VODからのイベント通知リクエストを受信するのに使用します。このサービスは、NewFileUpload(ビデオアップロード完了イベント通知)および ProcedureStateChanged(タスクフローステータスの変更)を処理することによって、ビデオトランスコードの開始およびトランスコード結果の取得を実現します。
システムは主に4つの構成部分に及びます。コンソール、API Gateway、Serverless Cloud Function、VODであり、このうちAPI GatewayおよびServerless Cloud Functionは、下図に示すとおりこのDemoのデプロイオブジェクトです。

具体的な業務フローは次のとおりです。
1. コンソールでビデオをVODにアップロードします。
2. VODバックエンドはNewFileUploadイベント通知リクエストを起動してDemoに送ります。
3. Demoはイベント通知コンテンツを解析し、VODの ProcessMediaインターフェースを呼び出して、アップロードされたばかりのビデオのトランスコードを開始します。使用するトランスコードテンプレートはシステムプリセットテンプレート の100010および100020です。
4. VODはトランスコードタスクを完了後、DemoへのProcedureStateChangedイベント通知リクエストを開始します。
5. Demoはイベント通知コンテンツを解析して、トランスコードされた出力ファイルのURLをSCFログに出力します。
説明:
DemoのSCFコードはPython3.6を使用して開発されており、このほかSCFはPython2.7、Node.js、Golang、PHP、Javaなどの複数のプログラミング言語もサポートしています。開発者は状況に応じて自由に選択できます。詳細はSCF開発ガイドをご参照ください。

料金

ここで提供するVODイベント通知の受信サービスであるDemoは無料のオープンソースですが、構築および使用のプロセスにおいて以下の料金が発生することがあります。
サービスのデプロイスクリプト実行に使用するため、Tencent CloudのCloud Virtual Machine(CVM)を購入します。詳細については、CVM料金をご参照ください。
SCFを使用して署名配布サービスを提供するには、 SCF料金およびSCF無料利用枠をご参照ください。
Tencent Cloud API Gatewayを使用して、 SCFのためにパブリックネットワークインターフェースを提供します。詳細はAPI Gateway料金をご参照ください。
VODストレージは、アップロードしたビデオに使用されます。詳しくは、ストレージ料金およびストレージリソースパックをご参照ください。
VODトランスコード時間は、ビデオのトランスコードに使用されます。詳しくは、トランスコード料金 およびリソースパックのトランスコードをご参照ください。

本番環境への影響の回避

イベント通知受信サービスDemoの業務ロジックはVODイベント通知システムで使用します。このため、デプロイプロセスでは、開発者がイベント通知アドレスを設定する必要があります。そのアカウントがVODに基づく本番環境をすでに有していると、イベント通知アドレスの変更は業務上の不具合を生じることがあります。操作前には本番環境に影響しないことを必ず確認し、確定できない場合は、すべて新しいアカウントに交換して Demoをデプロイしてください

イベント通知受信サービスのクイックデプロイ

ステップ1:Tencent Cloud CVMの準備

デプロイスクリプトは、1台のTencent Cloud CVM上で実行させる必要があります。要件は次のとおりです。
リージョン:任意。
モデル:公式サイトは最低構成(1コア1GB)であれば問題ありません。
パブリックネットワーク:パブリックIPを有する必要があります。帯域幅は1Mbps以上。
OS:公式パブリックイメージUbuntu Server 16.04.1 LTS 64ビットまたはUbuntu Server 18.04.1 LTS 64ビット
CVMの購入方法は操作ガイド - インスタンス作成をご参照ください。システムの再インストール方法は操作ガイド - システム再インストールをご参照ください。
注意:
イベント通知受信サービスDemo自身はCVMに依存していません。CVMを使用してデプロイスクリプトを実行しているだけです。
上述の条件に適合するTencent Cloud CVMがない場合は、その他のパブリックネットワークアクセスを備えたLinux(CentOS、Debianなど)またはMac機器でデプロイスクリプトを実行することもできます。ただし、OSの違いによってスクリプトの特定のコマンドを修正する必要があります。具体的な修正方式については、開発者自身で検索してください。

ステップ2:VODをアクティブ化する

クイックスタート - ステップ1を参考に、VODサービスをアクティブにします。

ステップ3:APIキーおよびAPPIDの取得

イベント通知受信サービスDemoのデプロイおよび実行では、開発者のAPIキー(すなわちSecretIdおよびSecretKey)およびAPPIDを使用する必要があります。
まだキーを作成していない場合は、キー作成ドキュメントを参照して、新しいAPIキーを作成してください。キーを作成済みの場合は、キー表示ドキュメントを参照してAPIキーを取得してください。
コンソールの アカウント情報画面で下部に示すとおり、APPIDを表示することができます。


ステップ4:イベント通知受信サービスのデプロイ

ステップ1で準備したCVM(ログイン方法の詳細は 操作ガイド - Linuxにログインをご参照ください)にログインして、リモートターミナルで以下のコマンドを入力して実行します。
ubuntu@VM-69-2-ubuntu:~$ export SECRET_ID=AKxxxxxxxxxxxxxxxxxxxxxxx; export SECRET_KEY=xxxxxxxxxxxxxxxxxxxxx;export APPID=125xxxxxxx;git clone https://github.com/tencentyun/vod-server-demo.git ~/vod-server-demo; bash ~/vod-server-demo/installer/callback_scf.sh
説明:
コマンドのSECRET_ID、SECRET_KEY 、APPIDを ステップ3で取得したコンテンツに割り当ててください。
このコマンドでは、GithubからDemoソースコードをダウンロードして、インストールスクリプトを自動的に実行します。インストールのプロセスには数分間必要になり(CVMのネットワーク状況次第)、その間、リモートターミナルは以下に示す情報を出力します。
[2020-06-05 17:16:08]検査npmを開始。
[2020-06-05 17:16:12]npmインストール成功。
[2020-06-05 17:16:12]ServerLessインストール開始。
[2020-06-05 17:16:13]serverlessインストール成功。
[2020-06-05 17:16:14]VODのイベント通知受信サービスのデプロイ開始。
[2020-06-05 17:16:24]VODのイベント通知受信サービスのデプロイ完了。
[2020-06-05 17:16:26]サービスアドレス:https://service-xxxxxxxx-125xxxxxxx.gz.apigw.tencentcs.com/release/callback
出力ログのイベント通知受信サービスアドレス(例のhttps://service-xxxxxxxx-125xxxxxxx.gz.apigw.tencentcs.com/release/callback)をコピーします。
注意:
出力ログで以下に示す警告が現れた場合は、通常CVMはデプロイしたばかりのサービスドメイン名を直ちに解析できないことから、その警告は無視してもかまいません。
[2020-04-25 17:18:44]警告:イベント通知受信サービステストをクリアしていません。

ステップ5:イベント通知アドレスの設定

注意:
本番環境への影響の回避 の節で記述したとおり、操作前にまずオンライン業務がVODイベント通知に依存していないことを確認してください。
1. VODコンソールにログインし、左側ナビゲーションバーのアプリケーション管理をクリックし、アプリケーションリストページに進みます。
2. オーディオビデオを処理したいアプリケーションを見つけ、アプリケーション名をクリックし、アプリケーション管理ページに進みます。
3. 左側ナビゲーションバーのコールバック設定をクリックし、次に設定をクリックします。コールバックモードは「ノーマルコールバック」を選択し、コールバックURLは、ステップ4 で獲得したイベント通知受信サービスのアドレスを入力します。コールバックイベントのすべてにチェックを入れ、クリックして確定します。下図に示すとおりです。

注意:
コンソールに2個のコールバックURL設定(2.0バージョン形式および3.0バージョン形式)が同時にあった場合は、3.0バージョンを設定してください。

ステップ6:Demoテスト

1. ビデオのアップロード - ローカルからのアップロード手順 の説明に従って、1個のテストビデオをVODにアップロードして、アップロード中にデフォルトの「アップロードのみ、ビデオは実施しない」を選択します。アップロードの完了後は、「アップロード済み」タブの画面でそのビデオの状態が「処理中」になっていることが確認できます。このことは、DemoがNewFileUploadイベント通知を受信して、トランスコードリクエストを起動させたことを示しています。
2. ビデオ処理が完了するのを待ってから(ステータスが「正常」に変わります)、クイックビューをクリックすれば、画面右側に、そのビデオの2つのトランスコードされたビデオがあることが確認できます。
3. SCFコンソールログ画面 にログインして、SCFのログを表示します。最新のログで、2個のトランスコードされたファイルのURLが出力されていることが確認できます。実際のユースケースでは、開発者はSCFを使用してURLを自身のデータベースに記録するか、その他のチャンネルを通じて視聴者に公開することができます。
説明:
SCFログにはいくらかのディレイが生じることがあります。画面上にログが見当たらない場合は、1~2分間待ってからリセットをクリックして更新してください。

システム設計の説明

インターフェースプロトコル

イベント通知受信関数は、API Gatewayによって外部にインターフェースを提供します。具体的なインターフェースプロトコルについては、 ビデオアップロード完了イベント通知 およびタスクフローステータスの変更をご参照ください。

イベント通知受信サービスコードの解釈

1. main_handler() はエントリー関数です。
2. parse_conf_file() を呼び出して、config.jsonファイルから設定情報を読み取ります。設定項目の説明は以下のとおりです。
フィールド
データタイプ
機能
secret_id
String
APIキー
secret_key
String
APIキー
region
String
TencentCloud APIリクエストリージョン。VODについて自由に入力できます
definitions
Array of Integer
トランスコードテンプレート
subappid
Integer
イベントの通知が VODサブアプリケーションから来ているかどうか
3. NewFileUploadタイプのイベント通知の場合、deal_new_file_event()を呼び出してリクエストを解析して、その中から新しくアップロードされたビデオのFileIdを取得します。
if event_type == "NewFileUpload":
fileid = deal_new_file_event(body)
if fileid is None:
return ERR_RETURN
4. trans_media() を呼び出してトランスコードを開始し、Tencent Cloud APIの応答パケットをSCFログに出力して、VODのイベント通知サービスに返します。
rsp = trans_media(configuration, fileid)
if rsp is None:
return ERR_RETURN
print(rsp)
5. trans_media()でTencent Cloud APIのSDKを呼び出してProcessMedia リクエストを開始します。
cred = credential.Credential(conf["secret_id"], conf["secret_key"])
client = vod_client.VodClient(cred, conf["region"])

method = getattr(models, API_NAME + "Request")
req = method()
req.from_json_string(json.dumps(params))

method = getattr(client, API_NAME)
rsp = method(req)
return rsp
6. ProcedureStateChangedタイプのイベント通知の場合、deal_procedure_event() を呼び出してリクエストを解釈して、トランスコード出力ビデオURLを取得しSCFログに出力します。
elif event_type == "ProcedureStateChanged":
rsp = deal_procedure_event(body)
if rsp is None:
return ERR_RETURN


ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック