この記事は Infrared5, Incの許可を得て一部を翻訳したものです。
Original article: https://customer.support.red5.net/servicedesk/customer/topic/862972f6-458b-4dbc-a425-24c5b6b07965/
A1
クライアント側から WebRTC のトラブルシューティングを行う方法はいくつかあります。
Webコンソール出力
Chrome: Publish
またはSubscribe URLに移動します。
1.オプション(右上隅のアドレスバーの端にある3つの点)をクリックしてメニューをプルダウンします。
2.[その他のツール]>[デベロッパーツール]を選択します。
Firefox:
PublishまたはSubscribe URLに移動します。
右上隅のアドレスバーの端にある3本の線をクリックしてメニューをプルダウンします。
[その他のツール]>[Web開発ツール]を選択します。
WebRTC Internals
Internals(内部情報)は、ストリームに関する情報を提供します。パブリッシャー(配信者)やサブスクライバー(受信者)に対して実行できます。
Chromeブラウザで、アドレスバーに以下を入力してください:
chrome://webrtc-internals
すると、次のような統計情報やグラフの一覧が表示されます:
Stats Table:
googTrack_f14571e5-15e6-4472-be33-75309fa040b8 (googTrack)
googTrack_8e23356e-3c41-42d4-88b2-4de829d8ff2f (googTrack)
googLibjingleSession_6107580852626033425 (googLibjingleSession)
bweforvideo (VideoBwe)
Cand-nAQro9U5 (localcandidate)
Cand-Qy6pV4wD (localcandidate)
Cand-9STfZm4i (localcandidate)
Cand-SAU4ERjv (localcandidate)Cand-HebEPbRR (localcandidate)Cand-dTgI5Ra8 (localcandidate)Cand-RR8x8uis (localcandidate)Cand-3JM9ZC7B (localcandidate)googCertificate_1D:15:81:BB:20:90:33:07:08:24:9A:6F:56:7F:F2:39:7D:0A:BD:27:8C:C6:A9:F7:F5:78:2A:3B:C7:AC:6A:4C (googCertificate)Channel-audio-1 (googComponent)Cand-dFMc3AC9 (localcandidate)Cand-UOLm3CvQ (localcandidate)Cand-N0E91wUh (localcandidate)Cand-h3yK3zY/ (localcandidate)Cand-zrShUA/Q (localcandidate)Cand-3NwYUZjp (localcandidate)Cand-c2JmpJWR (localcandidate)Cand-B8vcfUrW (localcandidate)ssrc_753132291_send (ssrc)ssrc_2599869863_send (ssrc)googCertificate_CD:B1:67:41:8B:39:60:26:B9:FF:F4:A3:9E:7F:50:78:3C:D4:6A:39:5F:AD:A8:9B:42:BF:95:03:C3:4A:2F:D9 (googCertificate)Cand-HiGza8sd (localcandidate)Cand-Qp7opzJh (localcandidate)Conn-audio-1-0 (googCandidatePair)Cand-IwxzfTbo (remotecandidate)Conn-audio-1-1 (googCandidatePair)
Stats graphs for bweforvideo (VideoBwe)Stats graphs for Cand-nAQro9U5 (localcandidate)Stats graphs for Cand-Qy6pV4wD (localcandidate)Stats graphs for Cand-9STfZm4i (localcandidate)Stats graphs for Cand-SAU4ERjv (localcandidate)Stats graphs for Cand-HebEPbRR (localcandidate)Stats graphs for Cand-dTgI5Ra8 (localcandidate)Stats graphs for Cand-RR8x8uis (localcandidate)Stats graphs for Cand-3JM9ZC7B (localcandidate)Stats graphs for Cand-dFMc3AC9 (localcandidate)Stats graphs for Cand-UOLm3CvQ (localcandidate)Stats graphs for Cand-N0E91wUh (localcandidate)Stats graphs for Cand-h3yK3zY/ (localcandidate)Stats graphs for Cand-zrShUA/Q (localcandidate)Stats graphs for Cand-3NwYUZjp (localcandidate)Stats graphs for Cand-c2JmpJWR (localcandidate)Stats graphs for Cand-B8vcfUrW (localcandidate)Stats graphs for ssrc_753132291_send (ssrc) (audio)
Stats graphs for ssrc_2599869863_send (ssrc) (video) Stats graphs for Cand-HiGza8sd (localcandidate)Stats graphs for Cand-Qp7opzJh (localcandidate)Stats graphs for Conn-audio-1-0 (googCandidatePair)Stats graphs for Cand-IwxzfTbo (remotecandidate)Stats graphs for Conn-audio-1-1 (googCandidatePair)
有用な統計は以下のように表示されます。
音声(Audio)と映像(Video)は別々に追跡されていることにご注意ください。
有用なグラフは以下のような形式になります。
Firefoxの場合 — ブラウザのアドレスバーに「about:webrtc」と入力してください。
FirefoxはChromeのようなグラフ表示はありませんが、以下の詳細情報を提供します:
SDP
ローカルSDP(応答)
リモートSDP(オファー)
RTP統計
これらすべては、WebRTCのトラブルシューティングに非常に役立ちます。
A2
一般に、サードパーティのエンコーダーとRed5 Pro WebRTCの間の互換性の問題は、ビデオプロファイルに関係しています。Red5 Proのドキュメントをご覧いただくと、サードパーティのRTMPパブリッシャーに対する提案がご覧いただけます。
WebRTCの購読ストリームに問題がある場合、Chromeで情報を収集する主な方法は2つあります。
1 - 開発者コンソール
デベロッパーコンソールには、ストリーム内容の基本情報を含む SDP「オファー」が表示されます。
Chrome でデベロッパーコンソールを開くには、画面右上の縦に並んだ3つの点をクリックし、「その他のツール」>「デベロッパーツール」を選びます。
デベロッパーツールの上部タブから「Console(コンソール)」を選び、「sdp」と検索すると、サブスクライバーに提供されている SDP オファーが表示されます。
2 - WebRTC Internals
chrome://webrtc-internals にアクセスすると、WebRTC ストリームに関する詳細情報が得られます。
開いている各 WebRTC ブロードキャスター/サブスクライバーに対して個別のタブが表示されます。
ページの中ほど、ページの区切り線のすぐ上に、以下のような2つのエントリが表示されます:
ssrc_<数値列>_recv (ssrc)
1つ目は音声情報、2つ目は映像情報を表しています。
また、ページ下部の「Stats Graphs(統計グラフ)」には、ストリーム統計が表示され、WebRTC ストリーミングの問題がパブリッシャー側にあるのか、サブスクライバー側にあるのかを特定するのに役立ちます。
A3
WebRTCプロトコルにおけるブロードキャストでは、調整可能なオーディオおよびビデオプロパティが多数あります。これらの変数はブラウザのデフォルトをオーバーライドできるため、mediaConstraintsのinit configオブジェクトで設定する必要があります。例えば、音声のautoGainControlやechoCancellationといったブラウザのデフォルト設定を上書きしたい場合などです。動画のオプション(frameRate、height、width)のほとんどはSDKドキュメントに記載されていますが、より適切なaspectRatioやresizeModeを指定する場合に使用します。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
mediaConstraints: {
audio: { ... your config properties ... },
video: { ... your config properties ... }
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
MediaTrackConstraintsについて詳細はこちらをご覧ください。
A4
はい、使用することは可能ですが、一般的な使い方ではありません。
Red5には、VODファイルをスケジュールに沿って再生できるファイル・リストリーマーがあり、これは「擬似ライブ(pseudolive)」のシナリオで非常に便利です。
通常、VODコンテンツにはHLSやDASHが使用されます。
A5
いいえ。Red5 Pro HTML SDKは、Red5 Proサーバーとの通信を目的としており、WebRTCやRTMP、HLSなどのさまざまなプロトコルを利用してライブ配信の送信および視聴を可能にします。
そのため、ローカルまたはAmazon Web Servicesのようなウェブ上でアクセス可能な場所に、Red5 Proサーバーの配備が必要です。
A6
WHIP(WebRTC-HTTP Ingestion Protocol)を使用し、キーフレームの間隔を2秒以下に設定することで、接続時間を短縮できます。遅延の原因は、WebRTCの特性およびそれが実行するセキュリティパラメータ(ICE)によるものです。
クライアントがICE接続を確立しようとするたびに、候補アドレス(candidate)を収集する必要があります。これには、ローカルインターフェースに表示されるアドレスに加えて、STUNバインディングの取得、JingleノードおよびTURN割り当ての取得、UPnPまたはPCPクエリの実行が含まれます。
これらの処理が完了すると、クライアントは得られたすべての候補をリモート側に送信し、同じプロセスがリモート側でも開始されます。
さらに、これらの多くの処理はクライアントのすべてのインターフェースを通じて実行されなければなりません。このプロセスが遅延したり、接続の確立が妨げられたりする要因はいくつも存在します:
・インターネット接続のないVPNインターフェース
VoIPクライアントはSTUNやTURNサーバーにそのインターフェースを通じて接続しようとしますが、応答が得られず、タイムアウトまで待つ必要があります。
・「接続済み」と表示されているが、実際には接続されていない状態の無線インターフェース
たとえば、キャプティブポータルがあるホットスポットに接続されている場合などです。
・何らかの理由でダウンしていて、“port unreachable”といったICMPエラーさえ返さないSTUN/TURNサーバー
A7
仮想カメラソフトを確認してください。OBS、Wirecast、NDIなどのバーチャルカメラ用プラグインは、カメラの選択に問題を引き起こすことがあります。
特にFirefoxではこの問題が発生しやすいです。
この問題は、「Conference(会議)」のサンプル機能に影響し、カメラ選択時に仮想カメラがデフォルトで選ばれてしまう可能性があります。
この問題を解決するには、その仮想カメラソフトを無効化または削除してください。