Beyond テレワーク | Web会議・テレビ会議(TV会議)ブイキューブ

録画SDK

概要

agora.ioにCloud Recording SDKが公開されています。

  • Cloud Recording SDKは、agora.ioのVideoやVoiceSDKなどを使って作成されたサービス(1対1面談、ボイスチャット、会議、セミナーなど)の映像と音声を録画(録音)することができます。
    録画の実行はRestfulAPIをコールします。また録画したファイルは指定するクラウドストレージ(※1)上に保存することができます。
    (※1 指定可能なクラウドストレージについては公式ページをご参照ください。)

この記事では簡単な録画実行のサンプルを用いて、録画実行から録画ファイル作成までをざっくりと説明します。

Cloud Recording利用イメージ

RestfulAPIメソッド

RestfulAPIには以下のメソッドが用意されています。
acquire:録画実行IDの取得
start:録画開始
stop:録画停止
update:録画更新
query:問合せ

本サンプルではacquire、start、stopを利用します。

サンプルソース

サンプルソースは以下よりダウンロードしてご準備ください

動作確認

前提

以下の設定が完了していることを前提として進めます。
・Webサーバとphp実行環境(今回はxamppを利用)
・クラウドストレージ環境(今回はAmazon S3を利用)
録画の有効化
RESTful API認証情報
・デモアプリ(今回はWebRTCデモアプリを利用)

動作実行

1. サンプルソース(params.php)に設定値を保存します。

録画実行時に必要な設定値をサンプルのparams.phpに設定してください。

params.php
###agora.io###
$plainCredentials = '**********:**********';
$appid = '**********';
$cname = "demo";
$uid = "100000";

###CloudStorage###
$accessKey = '**********';
$bucket = '**********';
$secretKey = '**********';
$fileNamePrefix = ["directory1","directory2"];
変数名 説明
$plainCredentials {Customer ID}:{Customer Certificate} (RESTful API認証情報)
$appid AppID
$cname Channel名 (例"demo")
$uid 録画インスタンス用uid (例"100000")(※1)
$accessKey クラウドストレージのアクセスキー(※2)
$bucket クラウドストレージの保存先ルートフォルダ(※2)
$secretKey クラウドストレージのシークレットキー(※2)
$fileNamePrefix クラウドストレージの保存先サブフォルダ(例"/directory1/directory2")(※2)
  • (※1)ここで指定するuidは、録画インスタンス用uidとして、Channelに入室しているuidとは重複しない固有のuidをセットすることがポイントです。
    (uidが重複した場合、競合が発生しエラーとなるため、録画ファイルが作成されません)
    (※2)本SDKで利用可能なクラウドストレージについてはagora公式サイトをご参照ください。

2. デモアプリに指定したChannel名で入室しておきます。

※Channel名はparams.phpの$cnameで指定した値になります。

3. 【acquire実行】http://localhost/acquire.phpを実行します。

ブラウザ上に以下のレスポンスが表示されます。

http
{"resourceId":"VHSX885c0AW7PG4p0Wsufq(省略)IL0B7AstDJPJLomAtRqYZjC3b"}"

acquireコールにてresourceIdが発行されていることがわかります。

4. サンプルソース(params.php)にresourceIdを保存します。

params.php
$resourceid = 'VHSX885c0AW7PG4p0Wsufq(省略)IL0B7AstDJPJLomAtRqYZjC3b';

5. 【start実行】http://localhost/start.phpを実行します。

ブラウザ上に以下のレスポンスが表示されます。

http
{"resourceId":"VHSX885c0AW7PG4p0Wsufq(省略)CvuS2Wu2tKS_q",
"sid":"1c93125eb94e18318f556eb82a4d3fe0"}"

startコールにて録画が開始され、sidが発行されています。

6. サンプルソース(params.php)にsidを保存します。

params.php
$sid = '1c93125eb94e18318f556eb82a4d3fe0';

7.【stop実行】http://localhost/stop.phpを実行します。

ブラウザ上に以下のレスポンス表示されます。

http
{"resourceId":"VHSX885c0AW7PG4p0Wsufq(省略)CvuS2Wu2tKS_q",
"sid":"1c93125eb94e18318f556eb82a4d3fe0",
"serverResponse":{
"fileListMode":"string",
"fileList":"directory1/directory2/1c93125eb94e18318f556eb82a4d3fe0_demo.m3u8",
"uploadingStatus":"uploaded"}
}

stopコールにて録画が停止し、結果(serverResponse)が表示されています。
また、fileListは保存先ファイル名になります。

※404エラーについて
stop時のレスポンスコードが404だった場合、録画失敗により録画ファイルは作成されません。
良くある原因は「start時の設定値が間違えている」です。

例えば、
・uidをintで設定していた
・(token利用の場合)録画側にtokenを設定していなかった
CloudStrageのキーが間違えていた

404エラーが発生した際は、まずはstart時の設定値をご確認ください。

8.クラウドストレージに接続し、ファイルを確認します。

クラウドストレージ上にfileListと同じファイル名が作成されていることが確認できます。

録画の実行と録画ファイルの作成ができました。

関連リンク

On-premise RecordingとCloud Recordingの違いは何ですか?
録画モードの違いについて教えてください。
Cloud Recording SDKのCallback Serviceを利用したい

Agora SDK イメージ
Agora SDK

大規模・安価・すぐに使える
ライブ配信・ビデオ通話・音声通話SDK

 

先頭へ戻る