LoginSignup
9
5

More than 3 years have passed since last update.

agora.io Cloud Recording SDK クイックスタートガイド

Last updated at Posted at 2020-02-14

概要

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

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

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

Cloud Recording利用イメージ

agora公式ページより転用

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と同じファイル名が作成されていることが確認できます。

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

[補足]
録画ファイルの結合、変換については、下記公式ドキュメントをご参照ください。
Merge Audio and Video Files
Convert File Format

関連リンク

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

最後に

agora.ioに関するお問い合わせはこちらから
スクリーンショット 0001-08-15 13.41.56.png

9
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5