リモート教育、ステージCSS、ビデオ会議、リモート確定損失、金融二重レコーディング、オンライン医療などのユースケースでは、証明取得、品質検査、審査、保存、再生などのニーズがあり、すべてのビデオ通話やILVBプロセスをレコーディングまたは保存する必要がよくあります。
TRTCのクラウドレコーディングは、ルームの各ユーザーのオーディオ・ビデオストリーミングを独立した一つのファイルにレコーディングします。
ルーム内のマルチチャネルのオーディオ・ビデオを、まずクラウドミクスストリーミングしてから、ミックス後のオーディオ・ビデオストリーミングを一つのファイルにレコーディングします。
TRTCのクラウドレコーディングサービスは、「Global Auto-Recording」および「指定ユーザーレコーディング」という2種類の異なるレコーディング形式を提供しています。
Global Auto-Recording
各TRTCルームの各ユーザーのアップストリームのオーディオとビデオは自動的にレコーディングされます。レコーディングタスクの開始と停止は自動的に行われるため、心配する必要はありません。操作は比較的シンプルで使いやすいです。具体的な使用方法については、方法1:Global Auto-Recordingをご参照ください。
指定ユーザーレコーディング
一部ユーザーのオーディオ・ビデオストリーミングのみをレコーディングするように指定できます。これには、クライアントのSDKAPIまたはサーバーのRESTAPIを介して制御する必要があり、追加の開発作業が必要になります。具体的な使用方法については、方法2:指定ユーザーレコーディング(SDK API)および方法3:指定ユーザーレコーディング(REST API)をご参照ください。
クラウドレコーディングでは、HLS、MP4、FLV 、AACという4種類の異なるファイルフォーマットをサポートしています。4種類のフォーマットの違いと適用ケースを表形式でリストアップしているので、ご自分の業務のニーズに合わせて選択することができます。
パラメータ | パラメータ説明 |
---|---|
ファイルタイプ | 以下のファイルタイプをサポートします。
|
1ファイルの最大時間(分) |
|
ファイル保存時間(日) | 実際の業務ニーズに応じて、ビデオファイルをVODプラットフォームの日数の間保存します。日数単位で数値範囲は0~1500。期限後は、ファイルはVODプラットフォームによって自動的に削除され、回復できなくなります。 0は永久保存を表します。 |
連続レコーディングタイムアウト(秒) |
|
説明:HLSは最長で30分間の連続レコーディングをサポートしており、「1講義に1つしか再生リンクが生成されないように」することができます。また、ほとんどのブラウザのオンライン視聴をサポートしており、eラーニングにおけるビデオ再生のユースケースに大変適しています。
TRTCクラウドレコーディングファイルは、デフォルトではTencent Cloud VODサーバーに保存されます。プロジェクトで多くの業務が一つのTencent Cloud VODアカウントを共有している場合、レコーディングファイルの隔離が必要になることがあります。Tencent Cloud VODの「サブアプリ」機能によって、TRTCのレコーディングファイルをその他の業務エリアと切り離すことができます。
VODのメインアプリとサブアプリとは何ですか。
メインアプリとサブアプリとは、VODの1種類のリソース分割方式です。メインアプリはVODのメインアカウントに相当し、サブアプリは複数作成できます。各サブアプリは、ルートアカウント下の1個のサブアカウントに相当し、独立したリソース管理を備えています。ストレージ領域では、その他のサブアプリと相互に隔離することができます。
VODサービスのサブアプリケーションを有効にする方法。
ドキュメント「VODサブアプリケーションを有効にする方法」 にもとづき、新規サブアプリケーションを追加することができます。このステップではVODコンソールに移動して操作する必要があります。
説明:詳細なレコーディングコールバックの受信と解読方法については、ドキュメント後半部分のレコーディングファイルの受け取りをご参照ください。
TRTCでは、Global Auto-Recording、指定ユーザーレコーディング(SDK APIによる制御)、 指定ユーザーレコーディング(REST APIによる制御)という3種類のクラウドレコーディング制御方法を提供しています。これらの方法を一つずつ、詳しくご紹介します。
コンソールでの設定
このレコーディング方法を使用したい場合は、コンソールのレコーディング形式の選択で「Global Auto-Recording」に設定してください。
レコーディングタスクの開始
TRTCルームの各ユーザーのオーディオ・ビデオストリーミングは、すべてファイルに自動レコーディングされるので、追加の操作は必要ありません。
レコーディングタスクの終了
自動停止。各キャスターがオーディオ・ビデオのアップストリームを停止すると、このキャスターのクラウドレコーディングは自動的に停止します。ファイルフォーマットの選択のときに「連続レコーディング時間」を設定すると、レコーディングファイルを受信する前に、連続レコーディング時間がタイムアウトするのを待つ必要が出てきます。
マルチ画面のミックス
Global Auto-Recordingモードでのクラウドミクスストリーミングには、「サーバーREST API方式」と「クライアントSDK API方式」という2つの方式があります。この2つの方式を混合して使用しないでください。
レコーディングファイルの命名
userDefineRecordId_streamType_開始時刻_終了時刻
で命名されます(streamTypeにはmainおよびauxの2つの値があり、mainはメインパスを、auxはサブパスを表します。サブパスは通常、画面共有に利用されます)。streamId_開始時刻_終了時刻
で命名されます。sdkappid_roomid_userid_streamType_開始時刻_終了時刻
で命名されます(streamTypeにはmainおよびauxの2つの値があり、mainはメインパスを、auxはサブパスを表します。サブパスは通常、画面共有に利用されます)。サポート済みのプラットフォーム
お客様側のサーバーで制御し、クライアント側プラットフォームの制限は受けません。
TRTC SDKが提供するいくつかのAPIインターフェースとパラメータを呼び出すことで、クラウドミクスストリーミング、クラウドレコーディング、Relayed live streamingという3つの機能が実装可能です。
クラウド機能 | 開始方法 | 停止方法 |
---|---|---|
クラウドレコーディング | 入室時にパラメータTRTCParams の中のuserDefineRecordId フィールドを指定します |
キャスター退室時に自動停止します |
クラウドミクスストリーミング | SDK API setMixTranscodingConfig() を呼び出してクラウドミクスストリーミングを起動 | クラウドミクスを発出したキャスターが退室したら、ミクスストリーミングは自動的に停止するか、途中で setMixTranscodingConfig() を呼び出してパラメータを null/nil 手動停止に設定します |
Relayed live streaming | 入室時にパラメータTRTCParams の中のstreamId フィールドを指定します |
キャスター退室時に自動停止します |
コンソールでの設定
このレコーディング方法を使用したい場合は、コンソールのレコーディング形式の選択のときに、「指定ユーザーレコーディング」に設定してください。
レコーディングタスクの開始
キャスターが入室時に入室パラメータ TRTCParams の userDefineRecordId フィールドを指定すると、その後、同キャスターのアップストリームのオーディオ・ビデオデータがクラウドレコーディングされます。このパラメータを指定していないキャスターはレコーディングタスクを起動することはありません。
// サンプルコード:レコーディングユーザーrexchangのオーディオ・ビデオストリーミングを指定し、ファイルidを1001_rexchangにします
TRTCCloud *trtcCloud = [TRTCCloud sharedInstance];
TRTCParams *param = [[TRTCParams alloc] init];
param.sdkAppId = 1400000123; // TRTCのSDKAppIDは、アプリケーション作成後に取得できます
param.roomId = 1001; // ルームナンバー
param.userId = @"rexchang"; // ユーザー名
param.userSig = @"xxxxxxxx"; // ログイン署名
param.role = TRTCRoleAnchor; // ロール:キャスター
param.userDefineRecordId = @"1001_rexchang"; // レコーディングID。そのユーザーのレコーディング開始を指定します。
[trtcCloud enterRoom:params appScene:TRTCAppSceneLIVE]; // LIVEモードを使用してください
レコーディングタスクの終了
自動停止。入室時にuserDefineRecordIdパラメータのキャスターを指定してオーディオ・ビデオのアップストリームを停止すると、クラウドレコーディングは自動的に停止します。ファイルフォーマットの選択のときに「連続レコーディング時間」を設定すると、レコーディングファイルを受信する前に、連続レコーディング時間がタイムアウトするのを待つ必要が出てきます。
マルチ画面のミックス
SDK APIsetMixTranscodingConfig()を呼び出すことによって、ルーム内の他のユーザーの画面や音声をカレントユーザーのチャネルのオーディオ・ビデオストリーミングにミックスすることができます。
注意:1つのTRTCルーム内では、1人のキャスター(配信を開始したキャスターを推奨)のみが
setMixTranscodingConfig
を呼び出せばOKです。複数のキャスターが呼び出すと、ステータスの混乱を生じて、エラーが起きる可能性があります。
レコーディングファイルの命名
レコーディングファイルは、userDefineRecordId_開始時間_終了時間
のフォーマットで命名されます。
サポート済みのプラットフォーム
iOS、Android、Windows、Mac、Electronなどの端末でレコーディング制御の開始をサポートしていますが、現時点ではWeChat Mini ProgramおよびWebブラウザからの制御はサポートしていません。
TRTCのサーバーはREST APIのペア( StartMCUMixTranscodeおよびStopMCUMixTranscode)を提供し、クラウドミクスストリーミング、クラウドレコーディング、Relayed live streamingという3つの機能を実装するために使用します。
クラウド機能 | 開始方法 | 停止方法 |
---|---|---|
クラウドレコーディング | StartMCUMixTranscodeを呼び出す時に、OutputParams.RecordId パラメータを指定すれば、レコーディングを開始できます |
自動停止、または途中でStopMCUMixTranscodeを呼び出して停止します |
クラウドミクスストリーミング | StartMCUMixTranscodeを呼び出す時にLayoutParams パラメータを指定すれば、レイアウトテンプレートとレイアウトパラメータを設定できます |
全ユーザーが退室した後自動停止、または途中でStopMCUMixTranscodeを呼び出して手動停止します |
Relayed live streaming | StartMCUMixTranscodeを呼び出す時にOutputParams.StreamId パラメータを指定すれば、CDNへのRelayed live streamingを起動できます |
自動停止、または途中でStopMCUMixTranscode を呼び出して停止します |
説明:これらのREST APIに対する制御は、TRTCクラウドサービスの中のコアのミクスストリーミングモジュール(MCU)となり、MCU ミクスストリーミング後の結果はレコーディングシステムとライブCDNに送信されるため、APIの名前を
Start/StopMCUMixTranscode
としています。このため、機能の点からいうと、Start/StopMCUMixTranscode
はミクスストリーミングの機能を実装できるだけでなく、クラウドレコーディングとRelayed live streaming CDNの機能も実装できます。
コンソールでの設定
このレコーディング方法を使用したい場合は、コンソールのレコーディング形式の選択のときに、「指定ユーザーレコーディング」に設定してください。
レコーディングタスクの開始
サーバーからStartMCUMixTranscodeを呼び出して、OutputParams.RecordId
パラメータを指定すると、ミクスストリーミングおよびレコーディングを起動することができます。
// コードサンプル: REST APIによってクラウドミクスストリーミングおよびクラウドレコーディングのタスクを起動します
https://trtc.tencentcloudapi.com/?Action=StartMCUMixTranscode
&SdkAppId=1400000123
&RoomId=1001
&OutputParams.RecordId=1400000123_room1001
&OutputParams.RecordAudioOnly=0
&EncodeParams.VideoWidth=1280
&EncodeParams.VideoHeight=720
&EncodeParams.VideoBitrate=1560
&EncodeParams.VideoFramerate=15
&EncodeParams.VideoGop=3
&EncodeParams.BackgroundColor=0
&EncodeParams.AudioSampleRate=48000
&EncodeParams.AudioBitrate=64
&EncodeParams.AudioChannels=2
&LayoutParams.Template=1
&<パブリックリクエストパラメータ>
注意:
レコーディングタスクの終了
自動停止。途中でStopMCUMixTranscodeを呼び出してミクスストリーミングおよびレコーディングタスクを停止することもできます。
マルチ画面のミックス
StartMCUMixTranscodeを呼び出す時に、同時に LayoutParams
パラメータを指定すれば、クラウドミクスストリーミングを実装できます。このAPIは、 ライブストリーミング全時間内での複数回呼び出しをサポートしていますので、必要に応じて LayoutParams
パラメータを修正し、このAPIを再度呼び出して合成画面のレイアウトを調整することができます。ただし、注意が必要なのは、パラメータ OutputParams.RecordId
と OutputParams.StreamId
が複数回呼び出しの中で一致性を維持する必要があることです。そうしない場合、ストリームが切断され、複数のレコーディングファイルが生成されてしまいます。
レコーディングファイルの命名
レコーディングファイルは、StartMCUMixTranscode を呼び出すときに指定したOutputParams.RecordId
パラメータで命名します。命名フォーマットは、OutputParams.RecordId_開始時間_終了時間
です。
サポート済みのプラットフォーム
お客様側のサーバーで制御し、クライアント側プラットフォームの制限は受けません。
レコーディング機能を起動させた後、TRTCシステムからレコーディングしたファイルは、Tencent CloudのVODサーバーから探し出せます。VODコンソールから手動で直接探し出したり、バックエンドサーバーからREST APIを使用して所定の時間にフィルタリングを行うこともできます。
1400000123_1001_rexchang_main
の場合、Tencent CloudのVODシステムは、一連のREST APIを提供してその上のオーディオ・ビデオファイルを管理します。メディア情報検索のこのREST APIによって、VODシステム上のファイルを検索します。パラメータ表のText
パラメータをリクエストすることで、あいまい一致や、StreamId
パラメータをもとに正確な検索を行うこともできます。
RESTリクエスト例:
https://vod.tencentcloudapi.com/?Action=SearchMedia
&StreamId=stream1001
&Sort.Field=CreateTime
&Sort.Order=Desc
&<パブリックリクエストパラメータ>
レコーディングファイルの検索のほかにも、コールバックアドレスを設定することによって、Tencent Cloudに新たにレコーディングしたファイル情報をサーバーに自動的にプッシュさせることもできます。
ルームの最後の1チャネルのオーディオ・ビデオストリーミングが終了すると、Tencent Cloudはレコーディングを終了し、ファイルをVODプラットフォームに転送して保存します。このプロセスには、デフォルトで約30秒から2分かかります(連続レコーディング時間を300秒に設定した場合、待ち時間はデフォルトの時間に300秒を加えた時間になります)。転送と保存が完了すると、Tencent Cloudはレコーディングコールバック設定で設定したコールバックアドレス(HTTP/HTTPS)を介してサーバーに通知を送信します。
Tencent Cloudは、レコーディングおよびレコーディング関連のイベントを、設定したコールバックアドレスを介して、サーバーにプッシュします。コールバックメッセージの例を次の図に示します。
下表のフィールドによって、現在のコールバックがどの通話(またはCSS)に対応するかを確定することができます。
番号 | フィールド名 | 説明 |
---|---|---|
![]() |
event_type | メッセージタイプ。event_typeが100のときは、このコールバックメッセージが、レコーディングファイルが生成したメッセージであることを表します。 |
![]() |
stream_id | ライブCDNのstreamIdです。入室時にTRTCParamsのstreamIdフィールドを設定することで指定でき(推奨)、また、TRTCCloudのstartPublishingを呼び出すときにパラメータstreamIdで指定することもできます。 |
![]() |
stream_param.userid | ユーザー名のBase64コード。 |
![]() |
stream_param.userdefinerecordid | カスタムフィールド。 TRTCParams の userDefineRecordId フィールドを設定することで指定できます。 |
![]() |
video_url | レコーディングファイルの視聴アドレスは、VOD再生に使用できます。 |
説明:コールバックフィールドに関するその他の説明については、CSS-レコーディングイベントの通知をご参照ください。
Tencent CloudのVODシステムは、一連のシステムREST APIを提供して、その上のオーディオ・ビデオファイルを管理します。メディアAPIの削除によって任意の指定したファイルを削除することができます。
RESTリクエスト例:
https://vod.tencentcloudapi.com/?Action=DeleteMedia
&FileId=52858907988664150587
&<パブリックリクエストパラメータ>
オンライン教育などのユースケースでは、通常CSSが終了後、何度もレコーディングファイルを再生し、教育リソースを十分に活用しやすくする必要があります。
レコーディングフォーマットの設定では、ファイルフォーマットをHLSに選択します。
HLSは最長30分間のブレークポイントでの連続レコーディングをサポートしており、「1つのライブストリーミング(または1回の授業)で1つしか再生リンクが生成されないように」することができます。また、HLSファイルは、ほとんどのブラウザのオンライン再生をサポートしており、ビデオ再生のユースケースに大変適しています。
レコーディングファイルの受け取りのときに、コールバック情報のvideo_urlフィールドを取得できます。このフィールドは、現在のレコーディングファイルのTencent CloudにおけるVODアドレスになります。
使用するプラットフォームに基づいてVODプレーヤーと接続します。具体的な操作は以下をご参照ください。
注意:プロフェッショナル版TRTC SDKの使用を推奨します。プロフェッショナル版には Super Player(Player+)、モバイルライブストリーミング などの機能が統合され、基盤モジュールを高度に再利用することにより、プロフェッショナル版の容量増加は同時に2つの独立したSDKを統合させたよりも小さくなっています。さらにシンボル重複(symbol duplicate)の問題も回避できます。
クラウドレコーディングと再生の関連料金には次の項目が含まれています。このうち、レコーディング料金は基本料金となり、その他の料金はお客様の使用状況およびニーズに応じて徴収されます。
説明:ここでは価格を例示し、参考としてのみ提供しています。価格と実際の状況とが一致しない場合は、クラウドレコーディング課金説明、CSS 、VODの料金を基準とします。
レコーディングは、オーディオ・ビデオストリーミングのトランスコーディングまたはそのパッケージングが必要となるため、サーバーの計算リソースの消費が発生します。このため、レコーディング業務が計算リソースを占有するコストに応じて費用を徴収する必要があります。
注意:
- 2020年7月1日以降、初めてTRTCコンソールでアプリケーションを作成したTencent Cloudアカウントの場合、クラウドレコーディング機能を使用した後に発生するレコーディング料金については、クラウドレコーディング課金説明を基準とします。
- 2020年7月1日以前に TRTC コンソールでアプリケーションを作成したことのあるTencent Cloudアカウントは、2020年7月1日以前またはそれ以降に作成したアプリケーションであっても、クラウドレコーディング機能を使用して発生するレコーディング料金については、デフォルトで、CSSレコーディングの課金ルールを引き続き採用します。
CSSレコーディング課金の計算方法は、同時レコーディングのチャネル数に応じて課金し、同時実行数が多くなるほど、レコーディング費用も高くなります。課金説明の詳細は CSS > CSSレコーディングをご参照ください。
例えば、現在1000名のキャスターがいて、夕方のピーク時に、最多500チャンネルのキャスターのオーディオ・ビデオストリーミングを同時レコーディングする必要があるとします。仮にレコーディング単価が5.2941米ドル/チャンネル/月とすると、合計レコーディング料金は、
500チャンネル × 5.2941米ドル/チャンネル/月 = 2647.05米ドル/月
となります。
レコーディングフォーマットの設定をする時に同時に2種類のレコーディングファイルを選択した場合、レコーディング料金とストレージ料金はいずれも× 2になります。同様の理屈により、3種類のファイルを選択した時のレコーディング料金とストレージ料金は× 3になります。不要な場合は、必要な1種類のファイルフォーマットのみを選択することを推奨します。コストを大幅に抑えることができます。
ストレージ料金:ファイルをTencent Cloudに保存するとこの料金が発生します
レコーディングしたファイルをTencent Cloudに保存する場合は、保存自体にディスクリソースの消費が発生しますので、保存するリソースの占用状況に応じて料金を徴収する必要があります。保存期間が長いほど料金も高くなるため、特殊なニーズがない場合は、ファイルの保存期間を短めに設定して、費用を節約するか、またはファイルを自分のサーバーに保存することもできます。保存料金は、 ビデオ保存(日次決済)価格選択し、日次決算で計算することができます。
例えば、setVideoEncoderParam()を介してキャスターのビットレート(videoBitrate)を1000kbpsに設定し、そのキャスターのライブストリーミングビデオ(1種類のファイルフォーマットを選択)をレコーディングし、1時間レコーディングすると、おおよそ
(1000 / 8)KBps × 3600秒 = 450000KB = 0.45GB
サイズのビデオファイルが生成されます。このファイルに毎日発生するおおよそのストレージ料金は、0.45GB × 0.0009 米ドル/GB/日 = 0.000405米ドル
となります。
レコーディングしたファイルをオンデマンド視聴に利用する場合は、視聴自体にCDNトラフィックが消費されるため、VODの価格にもとづき課金する必要があります。デフォルトは、トラフィックによる課金となっています。視聴者数が多いほど料金は高くなります。視聴料金はビデオアクセラレーション(日次決済)価格 を選択し、日次決算で計算できます。
例えば、クラウドレコーディングによって1GBのファイルが生成され、1000名の視聴者が最初から最後まで完全にそのビデオを視聴すると、約1TBのVOD視聴トラフィックが発生します。この場合は、階層価格表にもとづき、1000名の視聴で、
1000 × 1GB × 0.0794米ドル/GB = 79.4米ドル
の料金が発生します。
Tencent Cloudからファイルをお客様のサーバーにダウンロードするように選択した場合も、非常に小さなVODトラフィックが消費され、お客様の月次請求書の中に反映されます。
ミクスストリーミングレコーディングを作動させた場合は、ミクスストリーミング自体はデコーディングとコーディングする必要があるため、追加ミクスストリーミングトランスコード料金が発生します。ミクスストリーミングトランスコーディングは、解像度の大きさおよびトランスコーディング時間によって計算され、キャスター用の解像度が高く、マイク接続時間(通常はマイク接続のシーンではMixTranscodingが必要です)が長いほど、料金は高くなります。費用計算の詳細はCSSトランスコードをご参照ください。
例えば、 setVideoEncoderParam()を介してキャスターのビットレート(videoBitrate)を1500kbps、解像度を720Pに設定したとします。1名のキャスターが視聴者と1時間マイク接続し、マイク接続の間にクラウドミクスストリーミングを有効にした場合、発生するトランスコード料金は
0.0057米ドル/分 × 60分 = 0.342米ドル
となります。
サーバーでのレコーディングにはLinux SDKを使用する必要があります。Linux SDKはまだ完全公開されていません。お問い合わせまたは関連サービスの利用をご希望の場合は、colleenyu@tencent.comまでご連絡ください。
この記事はお役に立ちましたか?