質問・問題
acquire()、start()時はステータスコード200(成功)だったが、stop()時に404(エラー)が発生する。
[再現手順]
1. acquire()時、ステータスコードは200(成功)。
2. start()時、ステータスコードは200(成功)。
3. stop()時、ステータスコードは404(エラー)。
回答・解決方法
原因としては、start()時のリクエスト値に不備(複数)があることが考えられます。
そのうち、最も多い原因は、以下になります。
maxIdleTime(待機時間)が過ぎたため、録画が自動停止した
※ maxIdleTimeとは
設定時間(デフォルトでは30秒)の後、チャンネルにユーザがいない場合、自動的に録画を停止し、チャンネルから退室します。
これはセルフチェックにて確認する方法がございますので、
以下のステップに沿ってご確認をお願いいたします。
ステップ1.セルフチェック
1. Cloud Recording SDKのstart APIに設定したmaxIdleTimeの値を確認します。
この例では、maxIdleTimeは30秒に設定されています。
参考:Cloud Recording RESTful APIリファレンス
2. Agora Consoleにログインし、Agora Analytics > Call Inspectorに遷移します。
参考1:Agora Analytics - Call Inspector とは
参考2:Call Searchの操作
※左上のプロジェクトを選択する、又は通話検索にて該当通話を絞り込みます。
3. 該当通話のCall Detailsをクリックし、詳細画面に遷移します。
例:Cloud Recordingユーザ、Hostユーザが入室した通話履歴
※CloudRecordingユーザの入室/退室は、録画開始/停止を意味します。ただし、Video SDK入室/退室時間が、実際の録画開始/終了時間とはなりませんのでご注意ください。
実際の録画開始/終了時間は、Cloud Recording API callback serviceにて取得可能です。
4. Cloud Recording ユーザの「入室時間」を確認します。
この例では、Cloud Recording ユーザの「入室時間」は、15:55:32 - 15:56:05です。
5. CloudRecordingユーザの「入室時間」と「maxIdleTime」を比較します。
この例では、
Cloud Recordingの「maxIdleTime」は、30秒です。
Cloud Recordingユーザの「入室時間」は、15:55:32 - 15:56:05 (=約30秒間)です。
CloudRecordingユーザの入室時間は約30秒間で、maxIdleTime(30秒)とほぼ同じ秒数であることが分かります。
このことより、CloudRecordingユーザは、maxIdleTime(例30秒)を過ぎたため、自動で退室していたことが推測されます。
6. 次にHostユーザの「入室開始時間」とCloud Reocordingユーザの「入室開始時間」を比較します。
この例では、
Hostユーザの「入室開始時間」は、15:56:04です。
Cloud Reocordingユーザの「入室開始時間」は、15:55:32です。
Cloud Recordingユーザの入室開始時間(15:55:32) + maxIdleTime(30秒) は、 15:56:02となります。
この時間をおおよその録画停止時間と予想することができます。
Hostユーザの「入室開始時間」は15:56:04であり、15:56:02より後に入室していることが分かります。
これにより、Hostユーザは、maxIdleTime時間内にチャンネルに入室出来なかったことが分かります。
[結論]
stop()時にステータスコード404(エラー)になったのは、Hostユーザは、maxIdleTime時間内にチャンネルに入室出来なかったため、Cloud Recordingの録画セッションがタイムアウトとなり、自動停止していたため、stop()コール時には録画セッションは存在していなかったことが原因となります。
【ステップ1.セルフチェックの対策】
maxIdleTimeを現在の設定値より長くしてください。
Hostユーザが入室を完了する時間より長く設定しておくことをおすすめします。
Cloud Recording SDKのインテグレーションのベストプラクティスも参考にしてください。
参考:Cloud Recording SDKのインテグレーションのベストプラクティス
ステップ2.ログ解析依頼
ステップ1.セルフチェックが該当しない場合、
必要情報をご送付いただければ、Agoraにて調査を実施することができます。
【必要情報】
・SID
※SIDはStart APIコール時のレスポンス値にて取得することができます。
参考【よくある原因と対策】
1.maxIdleTime(待機時間)が過ぎて録画が自動停止した ※最も多い
maxIdleTime(5から2,592,000まで)を長くする、またはChannelにJoinをしてから録画を開始してください。
2.Tokenの値が間違えている
Tokenの有効期限が正しいことを確認する、またはひとまずTokenを利用しないで録画ができるかどうか確認してください。
(TokenはVideo、CloudRecording両方に設定してください)
3.ストレージのキーが間違えている
転送ツール(aswcliやwinscp)でローカルからストレージ(またはその逆)にファイルが転送できることを確認してください。
4.画質の設定値が間違えている
画質の設定値(transcodingConfigのwidth、height、fps、bitrate)が[Video profile table]に対応した値を正しく設定していることを確認し、適宜修正してください。
5.暗号キーが間違えている
Video SDK側の[encryptionMode]、[ encryptionKey]と、Cloud Recording側の[decryptionMode]、[secret]を同じ設定にしていることを確認してください。
※詳細は「agora.io Cloud Recordingのよくあるトラブルの原因と対策」に記載しています。
[参考リファレンス]
・Cloud Recordingについて
・Cloud Recording RESTful API リファレンス
・Cloud Recording 画質設定