リモート教育、ステージライブストリーミング、ビデオミーティング、リモートでの損失評価、金融に関する録音・録画、オンライン医療などのユースケースでは、証明取得、品質検査、審査、アーカイブおよび再生などのニーズを考慮して、ビデオミーティングやインタラクティブなライブストリーミングプロセスの全体をレコーディングまたは保存する必要が度々出てきます。
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、Webなどの端末からのレコーディング制御の開始をサポートしていますが、現時点ではWeixinアプレットからの制御はサポートしていません。
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は、レコーディングおよびレコーディング関連のイベントを、設定したコールバックアドレスを介して、サーバーにプッシュします。コールバックメッセージの例を次の図に示します。
下表のフィールドによって、現在のコールバックが対応する通話(またはライブストリーミング)を特定できます。
番号 | フィールド名 | 説明 |
---|---|---|
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
&<パブリックリクエストパラメータ>
eラーニングなどのユースケースでは、教育リソースを最大限に活用するために、通常、ライブストリーミングの終了後、レコーディングファイルを複数回再生する必要があります。
レコーディングフォーマットの設定では、ファイルフォーマットをHLSに選択します。
HLSは最長30分間のブレークポイントでの連続レコーディングをサポートしており、「1つのライブストリーミング(または1回の授業)で1つしか再生リンクが生成されないように」することができます。また、HLSファイルは、ほとんどのブラウザのオンライン再生をサポートしており、ビデオ再生のユースケースに大変適しています。
レコーディングファイルの受け取りのときに、コールバック情報のvideo_urlフィールドを取得できます。このフィールドは、現在のレコーディングファイルのTencent CloudにおけるVODアドレスになります。
使用するプラットフォームに基づいてVODプレーヤーと接続します。具体的な操作は以下をご参照ください。
注意:プロフェッショナル版のTRTC SDKの使用を推奨します。プロフェッショナル版にはSuper Player(Player+)、モバイルライブストリーミング(MLVB)などの機能が統合され、基盤モジュールを高度に再利用することにより、統合したプロフェッショナル版の容量増加は同時に2つの独立したSDKを統合させた場合よりも小さくなります。さらにシンボル重複(symbol duplicate)の問題も回避できます。
クラウドレコーディングと再生機能で使用できる機能には、クラウドサービスリソース(クラウドレコーディングサービス、VODの再生ファイルストレージおよび処理、VODの再生サービスなどを含む)、端末SDKのオンデマンドビデオ再生の機能が含まれます。実際のニーズに応じて次の料金が発生する可能性があります。
クラウドサービス消費にはクラウドレコーディングによって発生する料金とファイル再生によって発生する消費料金が含まれます。実際のニーズに応じて使用することができます。
説明:ここでの価格は一例であり、あくまでも参考です。価格と実際の状況とが一致しない場合は、クラウドレコーディング課金説明、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種類のファイルフォーマットのみを選択することをお勧めします。コストを大幅に抑えることができます。
トランスコード料金:ミクスストリーミングレコーディングを有効にすると、この料金が発生します
ミクスストリーミングレコーディングを有効にすると、ミクスストリーミング自体にデコードとエンコードが必要なため、別途ミクスストリーミングトランスコード料金が発生します。ミクスストリーミングトランスコーディングは、解像度のサイズとトランスコーディング時間によって課金され、キャスターが使用する解像度が高く、マイク接続時間が長いほど(通常、マイク接続シナリオにのみミクスストリーミングトランスコーディングが必要)、料金が高くなります。具体的な料金の計算については、CSSトランスコードをご参照ください。
例えば、 setVideoEncoderParam()を介してキャスターのビットレート(videoBitrate)を1500kbps、解像度を720Pに設定したとします。1名のキャスターが視聴者と1時間マイク接続し、マイク接続の間にクラウドミクスストリーミングを有効にした場合、発生するトランスコード料金は
0.0057米ドル/分 × 60分 = 0.342米ドル
となります。
再生ファイルストレージ料金:クラウドビデオストレージサービスによって発生するストレージ料金
レコーディングしたビデオファイルをVODサービスに保存すると、VODのクラウドストレージサービスを利用することになります。保存自体にディスクリソースの消費が発生しますので、保存するリソースの占用状況に応じて料金を徴収する必要があります。保存期間が長いほど料金も高くなるため、特殊なニーズがない場合は、ファイルの保存期間を短めに設定して費用を節約するか、またはファイルを自分のサーバーに保存することもできます。保存料金は、 ビデオ保存(日次決済)価格を選択し、日次決済で計算することができます。
例えば、setVideoEncoderParam()を介してキャスターのビットレート(videoBitrate)を1000kbpsに設定し、そのキャスターのライブストリーミングビデオ(1種類のファイルフォーマットを選択)をレコーディングし、1時間レコーディングすると、おおよそ
(1000 / 8)KBps × 3600秒 = 450000KB = 0.45GB
サイズのビデオファイルが生成されます。このファイルに毎日発生するおおよそのストレージ料金は、0.45GB × 0.0009 米ドル/GB/日 = 0.000405米ドル
となります。
再生視聴料金:VODビデオの配信と再生によって発生する再生料金
レコーディングしたビデオファイルを再生に用いる場合は、VODのCDN再生機能を利用することになります。視聴自体にCDNトラフィックが消費されるため、VODの価格に基づいて課金する必要があります。デフォルトは、トラフィックによる課金となっています。視聴者数が多いほど料金は高くなります。視聴料金はビデオアクセラレーション(日次決済)価格 を選択し、日次決済で計算できます。
例えば、クラウドレコーディングによって1GBのファイルが生成され、1000名の視聴者が最初から最後まで完全にそのビデオを視聴すると、約1TBのVOD視聴トラフィックが発生します。この場合は、階層価格表にもとづき、1000名の視聴で、
1000 × 1GB × 0.0794米ドル/GB = 79.4米ドル
の料金が発生します。
Tencent Cloudからファイルをお客様のサーバーにダウンロードするように選択した場合も、非常に小さなVODトラフィックが消費され、お客様の月次請求書の中に反映されます。
オーディオビデオ通話(TRTC)の全機能版SDKは全面的な機能と高度なパフォーマンスが可能なビデオ再生機能をご提供し、VODと組み合わせることで簡単にビデオ再生機能を実装できます。モバイルSDKの10.1以降のバージョンでは、指定のLicenseを取得することでビデオ再生機能のロックを解除することができます。
注意:TRTCの再生機能にはLicense承認は必要ありません。
サーバーでのレコーディングにはLinux SDKを使用する必要があります。Linux SDKはまだ完全公開されていません。お問い合わせまたは関連サービスの利用をご希望の場合は、colleenyu@tencent.comまでご連絡ください。
この記事はお役に立ちましたか?