腾讯雲音ビデオ (TRTC) 実戦: 低遅延オンライン中継と複数人のビデオ通話の構築
オンラインでは、麦、遠隔オフィス、インターネット教育、インタラクティブな生放送が盛んに行われている今日、多くの開発者が「低遅延音声ビデオ通話機能を構築する」というニーズを受けている。ゼロから自分でWebRTCプロトコルをノックしたり、音声ビデオをストリーミングしたり、ネットの最適化とエコー除去 (AEC) を調整したりすると、髪が落ちても安定した商用バージョンができるとは限らない。
企業レベルの音声ビデオ開発は、現在最も時間と労力を節約する経路は直接腾讯雲にアクセスすることである
TRTC (リアルタイム・オーディオ・ビデオ、テンセント・リアル・タイム・コミュニケーションズ)
。複雑な音声ビデオの基礎をいくつかの簡単なSDK呼び出しにカプセル化し、腾讯の世界的な加速ネットワークを自然に継承して、世界のエンドツーエンドの遅延死を抑えることができる
300ミリ秒以内
。
今日は公式文書の経を読まず、何のでたらめも拒絶した。あなたのパソコンを持ってきて、私たちはコアアーキテクチャから話して、あなた自身の低遅延オンライン中継と複数人のビデオ通話システムを手で溶接します。
第一段階: TRTCの基礎通話ネットワークと「部屋」の概念を理解する
コードを書く前に、TRTCの物理世界モデルを頭の中に構築しなければならない。そうでなければ、流れがどのように伝わっているのか分からない。
TRTCのすべての音声ビデオのやり取りは
「部屋 (Room) 」
の仮想空間で行われます。
部屋に入る (enter room): どのユーザー (アナウンサーでも観客でも) が話したい、あるいは他人の話を見たい、まず「部屋番号」を持って同じ部屋に入る。
プッシュストリーミング: 部屋に入ったら、他の人にあなたを見せたいです。携帯やパソコンのカメラで収集した音声とビデオのデータを、テンセントクラウドのエッジノードを介してクラウドに「プッシュ」します。
拉流(Subscribe): 部屋の張三を見たいなら、SDKは自動的に腾讯雲に行って張三の「流」を「引いて」デコードして再生します。
通話中、腾讯雲バックグラウンドの3Aアルゴリズム (エコー除去AEC、ノイズ抑制ANS、自動ゲイン制御AGC) が自動的にアクセスしだから、自分でコードを書いて声に「雑音を出す」必要がないのです。
第二段階: 腾讯雲バックグラウンド配置と救命証明書UserSig計算力生成
腾讯クラウドコンソールにログインし、「リアルタイム音声ビデオTRTC」を検索して入力します。
「アプリケーション管理」-> 「アプリケーションの作成」をクリックして、あなたのアプリケーションに名前を付けます (例えば、私の低遅延音声ビデオシステム)。
作成が成功したら、システムはあなたに2つのコア証明書を発行して、小さな本を記録して、絶対に漏洩しないでください: SDKAppID: あなたのアプリケーションのユニークな身分証明書 (純粋な数字)。キー: 署名を暗号化するための文字列。
コアピット: UserSigは何ですか?
他人が悪意を持ってあなたのTRを盗用するのを防ぐために
TCトラフィックは、どのユーザーもあなたの部屋に入りたいと思って、呼び出しを持っていなければなりません
UserSig
の安全署名 (臨時通行証に相当)。
開発テスト段階 (ショートカット): マイクロドライブまたはコンソールには「基本構成」ページがあり、webページにユーザー名(UserId) を直接入力できます一時的なUserSigを計算して、コードに直接コピーして使います。
生産オンライン段階 (ハードコア流): あなたのSecretKeyをAppやフロントエンドコードにハードコードしないでください! 正しい方法は、UserSigを計算するロジックをあなたのバックエンドサーバ (Node.js、Java、Pythonスクリプトなど) に書いて、Appが部屋に入るたびに、まず自分のサーバインタフェースにUserSigを取るように要求することです安全を確保する。
第三段階: 実戦演習一 -- 複数人のビデオ通話シーンの構築 (全員インタラクティブ作戦)
ビデオ通話 (例えば、経営幹部会議、オンラインシナリオ殺) の特徴は次の通りである
部屋の中の誰もが主役で、みんなが押し流して、他人の流れを見なければならない。遅延要求が極めて高い。
私たちは現在最も一般的な
Web/H5側JavaScript SDK
例(iOS/Androidロジックは完全に同等) では、5行のコアコードがあなたを走らせます
1.SDKの導入と初期化
JavaScript
Import TRTC from 'TRTC-js-sdk';
// 1.TRTCクライアントオブジェクトの作成
Const client = TRTC.createClient({
Mode: 「rtc」、 // rtcは複数人のビデオ通話モードを表し、究極の低遅延を追求している
SdkAppId: 1400xxxxxx、 // SDKAppIDを入力します
UserId: 'user _ boss', // 現在のユーザーのID
UserSig: 'xxxxxx' // クラウドで計算された署名
});
2.部屋に入ってプッシュストリーミングを収集する
JavaScript
// 2.部屋に入る (部屋番号: 12345)
Await client.join({ roomId: 12345 });
// 3.ローカルカメラとマイクの音声ビデオを収集する
くだされていません。
Await localStream.initialize(); // カメラを初期化する
// 4.Webページのある <div> タグにローカル画面をマウントして自分に见せる
Local
Stream.play('local-video-view');
// 5.自分の流れをテンセント雲に押して、部屋の中の他の人に見せます。
Await client.publish(localStream);
3.他人の画面を傍受して引き出す
部屋に他の人が来たとき (例えば
User_employee
) をプッシュすると、SDKはイベントをトリガーし、ストリームを傍受してプルするだけです
JavaScript
// 6.リモートストリーム増加イベントを傍受する
Client.on('stream-added', event => {
コトンリモートストリーム = イベント.stream;
// この人の画面を購読する
Client.subscribe(remoteStream);
});
// 7.リモートストリームの購読成功イベントを傍受し、webページにマウントする
Client.on('stream-subscribed', event => {
コトンリモートストリーム = イベント.stream;
// 新しいdivブロックを作成し、リモートユーザーのビデオを入れます
RemoteStream.play('remote-video-view-'remoteStream.getUserId());
});
両側の設備がこの論理を駆け上がれば、画質が高く、遅延が200ms以下の複数人のビデオ会議システムがそのまま復活した。
第四段階: 実戦演習二 -- 低遅延オンラインライブシーン構築 (万人の見物人)
生中継シーン (例えば、貨物生中継、ネットレッドPK) の特徴は会議とは全く異なる
部屋には一人か二人のアナウンサーだけが狂っていて、客席には数万人から数十万人の観衆が見ている。数十万人を同時に部屋に入れて押すと、サーバーの帯域幅が瞬時に爆発し、コストも高くなる。
TRTCがライブ配信のニーズを処理する際に使用するのは
「ロール切り替え」
そして
「クラウド混流」
メカニズム。
1.モード切替
クライアントを初期化するときは、モードを変更する必要があります
ライブ
:
JavaScript
const client = TRTC.createClient({
Mode: 「live」、 // liveはインタラクティブなライブモードを表します
SdkAppId: 1400xxxxxx,
UserId: 'user _ audience',
UserSig: 'xxxxxx'
});
2.アナウンサーと視聴者の役割を区別する
部屋に入るときは、あなたの正体を明確に宣言しなければなりません
大アナウンサー: プッシュ権限があり、カメラに向かって話すことができます。
一般視聴者 (Audience): デフォルトではストリーミングだけで、テンセント雲のプッシュアップ帯域幅を占有せず、非常にコストを節約できる。
JavaScri
// 観客が部屋に入る
Await client.join({ roomId: 88888, role: 'audience '});
// 視聴者が「上台連麦」を申請したい場合は、チェックアウトする必要はなく、直接「その場で変身する」という命令を呼び出す
Await client.Switch chrole ('アンカー');
// アナウンサーに変身したら、第3段階のコードをコピーして、カメラをオンにして、自分のストリームをアップロードすることができます
3.究極のお金節約募集: CDNバイパス中継を有効にする
もしあなたの生放送が何百万人もの人が同時に見ていたら、すべてTRTCのリアルタイムで大工場のバックボーン網を流して、下りの流量はあなたに人生を疑わせるほど高くなります。
標準大工場案: 腾讯雲バックグラウンドで「バイパス生放送」オプションをオンにする。
運営ロジック: アナウンサーはTRTCの部屋でストリーミングし、腾讯雲のバックグランドは自動的にこの高忠実なリアルタイムストリームを「コピー」しているクラウドでは、一般的な標準ライブストリーム (RTMP/HLS/WebRTC) に直接トランスコードし、CDN配信ネットワークを介してその一般的な百万級の見物人たちに配布する。
このように、連麦のアナウンサーの間では300msの究極の低遅延を享受しているが、客席で見物している人々は1 ~ 2秒の普通CDN遅延が多いが、最大70% の帯域幅予算を節約している。
第五段階: 日常輸送のピット血涙歴
デバイス権限が詰まっている: webサイト (H5) は音声ビデオを開発し、ブラウザはセキュリティポリシーのため、HTTPS環境下、またはローカルのlocalhost下でなければ、カメラとマイクを正常に呼び出すことができない。HTTPでサーバに配備すると、SDKは初期化されても直接エラーになります。
モバイル端末の弱網最適化: コンソールで「スムーズ優先 (Smooth) 」ポリシーをオンにすることを覚えています。ユーザーの4G/5G信号が突然悪くなると、システムは自動的に解像度を圧縮し、フレームレートを下げ、音声がバラバラに聞こえない、PPTにならないことを優先的に保証しますこれは「パケットロス補償機構 (PLC) 」と呼ばれています。
まとめ
腾讯雲TRTCの実戦コツは非常に純粋である
会議はrtcモードを選択し、全員が平等であるライブ配信はliveモードを選択し、roleで主従を区別し、大流量は必ずCDNをバイパスする。
この論理を整理すれば、企業にカスタマイズされたビデオ・コールをしても、千万級のインタラクティブなライブ・プラットフォームをしてもあなたは最も優雅なコードで音声ビデオ開発という硬い骨を完全にかじることができる。
