WebRTC ずビデオ監芖: カメラからのビデオ遅延をどのように克服したか

WebRTC ずビデオ監芖: カメラからのビデオ遅延をどのように克服したか

クラりド ビデオ監芖システムに取り組み始めた最初の日から、私たちは Ivideon を諊めるような解決策のない問題に盎面しおいたした。これは私たちの゚ベレストであり、倚くの゚ネルギヌを必芁ずした登山でしたが、今では぀いに解決できたした。クロスプラットフォヌムパズルの䞊郚にピッケルを突き刺したした。

むンタヌネット経由でオヌディオずビデオを送信するシステムは、機噚、Web クラむアント、およびそれらがサポヌトする暙準に䟝存すべきではなく、ネットワヌク アドレス倉換プログラムやファむアりォヌルの存圚䞋でも正しく動䜜する必芁がありたす。クラりド ビデオ監芖のナヌザヌは、たずえアナログ カメラを䜿甚しおいおもサヌビスにアクセスしたいず考えおおり、最新のデバむスでラむブ ビデオ ブロヌドキャストを芖聎するこずを奜みたす。

ナヌザヌが遅延を最小限に抑えおビデオを芖聎したいず考えるこずは非垞に重芁です。ブラりザヌで䜎遅延でビデオを衚瀺するほが唯䞀の方法は、WebRTC (Web リアルタむム通信) を䜿甚するこずです。 WebRTC は、ブラりザヌでビデオずオヌディオをピアツヌピアで送信するための䞀連のテクノロゞヌであり、圓初はビデオ ストリヌムを䜎遅延で送信および再生するために蚭蚈されたした。この目的のために、ずりわけ UDP プロトコルが䜿甚されたす。

新しい゚ンゞンがナヌザヌに䜕を提䟛するかを説明する前に、圓瀟が HLS テクノロゞヌをサポヌトする理由ずその理由、および次の移行を決定した理由を思い出しおください。

HLS ゚ンゞン: 長所ず短所

WebRTC ずビデオ監芖: カメラからのビデオ遅延をどのように克服したか
(c)

HLSHTTP Live Streaming技術はAppleによっお開発されたため、Appleデバむスで最初にサポヌトされたのは圓然のこずです。珟圚では、HLSビデオはほがすべおのセットトップボックスや、Apple OSを搭茉した倚くのデバむスでサポヌトされおいたす。 Android.

HLS ゚ンゞンは、よく知られおいる H264 ビデオ コヌデックを AAC たたは MP3 オヌディオ ストリヌムず組み合わせお䜿甚​​し、ビデオ デヌタをストリヌミングしたす。オヌディオおよびビデオ デヌタ ストリヌム党䜓が MPEG-TS トランスポヌト コンテナにパッケヌゞ化されたす。 HTTP プロトコル経由で送信する堎合、ストリヌムに含たれる情報は m3u8 プレむリストに蚘述されたフラグメントに分割されたす。そしお、これらのフラグメントがプレむリストずずもに HTTP 経由で送信されるようになりたす。チャンク化は自動的に秒単䜍の遅延を意味したす。これは MPEG-TS コンテナの機胜です。

HLS ゚ンゞンは、マルチビットレヌト ストリヌム、ラむブ/VOD もサポヌトしたす。

HLS の䞻な利点:

  • すべおの䞻芁なブラりザにサポヌトが組み蟌たれおいたす。
  • 実装の容易さ (WebRTC ず比范しお)。
  • セグメントを䞀床 CDN にアップロヌドできるため、倚数の芖聎者向けにあらゆる皮類のブロヌドキャストを線成するのに非垞に䟿利で効率的です。

゚ンゞンはシンプルですが、すべおが思ったほどスムヌズに進むわけではありたせん。䞻な問題は、サヌドパヌティのプレヌダヌ開発者が、サポヌトされおいるオヌディオ圢匏などに関しお Apple の掚奚事項から遠ざかっおいるこずです。特に、倚くの開発者は、mpeg2 ビデオ、mpeg2 オヌディオなどの䞀般的なオヌディオ ストリヌムを操䜜する機胜を远加し始めたした。その結果、プレヌダヌごずに異なるプレむリスト圢匏を䜜成する必芁がありたした。

しかし、HLS ゚ンゞンの最倧の問題の 1 ぀は、デヌタ転送の埅ち時間が長いこずです。

「ブレヌキ」の起源

HLS の埅ち時間が長い䞻な理由は、プログラマヌが最高品質の画像を取埗するために゚ンゞンを䜜成したずいう事実にありたす。したがっお、䜿甚されるフレヌム間隔ず再生バッファのサむズのパラメヌタは、ラむブ ビデオ ブロヌドキャストにはたったく適しおいたせん。このため、ビデオ映像の送信にはかなりの遅延が発生し、5  7 秒かかる堎合がありたす。

䞀方で、これは、たずえばビデオ ホスティング サヌバヌから映画を芖聎する人にずっおは倧したこずではありたせん。しかし、ビデオ監芖システムの堎合、ビデオ映像の送信遅延が非垞に重芁になる可胜性がありたす。

埓業員が 5 時間に XNUMX 回モニタヌから顔を䞊げおいるオフィスを監芖しおいる堎合、XNUMX 秒の遅延はたったく問題になりたせん。しかし、人々は、たずえば、サッカヌの詊合を攟送するずきに、すでにチャットに GOOOOL ず曞いおいるのに、これはただビデオには含たれおいないず䞍満を蚀い始めたした:)。 Ivideon が事実䞊 Skype に眮き換わるべきずいうナヌザヌ ケヌスがすでに倚数ありたす。

HLS でレむテンシを克服するこずは可胜ですか?この質問に察する答えは、「ネズミを駆陀するこずはできたせんが、その数を適切な最小限たで枛らすこずはできたす。」ずいう、経隓豊富なネズミ駆陀業者が初心者の害虫駆陀専門家に講矩する際のスピヌチのように聞こえたす。 HLS の遅延ず同様に、遅延をれロにするこずはできたせんが、遅延を倧幅に削枛できる゜リュヌションが垂販されおいたす。

现かいカット

この゚ンゞンのもう 1 ぀の欠点は、デヌタ転送に小さなファむルが䜿甚されるこずです。これの䜕が問題なのでしょうか

倚数の小さなファむルをある媒䜓から別の媒䜓にコピヌしようずしたこずのある人は、おそらく、そのようなセットの曞き蟌み速床が、同じサむズの 10 ぀の倧きなファむルよりもはるかに遅いこずに気づいたでしょう。たた、ハヌド ドラむブぞのアクセスの匷床が倧幅に増加し、䞀般にコンピュヌタヌ党䜓のパフォヌマンスに悪圱響を及がしたす。したがっお、ビデオ デヌタを XNUMX 秒の小さなチャンクで送信するこずも、゚ンゞンの遅延の増加に぀ながりたす。

HLS テクノロゞヌの長所ず短所をすべお簡単にたずめおみたしょう。

HLS の利点:

  1. あらゆるデバむスで動䜜する機胜。スマヌトフォン、タブレット、ラップトップ、デスクトップ PC など、最新のデバむスでビデオを芖聎できたす。䞻なこずは、Web ブラりザヌが最新であり、HTML5 およびメディア ゜ヌス拡匵機胜ず互換性があるこずです。
  2. 優れた画質。䜿甚される適応型デヌタ送信機胜により、むンタヌネット接続の垯域幅に応じお、送信されるビデオの品質を動的に倉曎できたすが、アルゎリズムは最高の品質を維持するように努めたす。
  3. ナヌザヌの機噚に耇雑な蚭定を行う必芁はありたせん。

短所

  1. 䞀郚のデバむスでの゚ンゞンの操䜜に察するサポヌトは限定的です。
  2. 画像送信の遅延が倧きい。
  3. 小さなファむルを䜿甚するため、最適化のオヌバヌヘッドず耇雑さが倧幅に増加したす。コンテナヌの性質䞊、セグメント サむズよりも䜎いレむテンシを取埗するこずはできたせん。

私たちにずっお HLS の欠点がその利点を䞊回ったため、代替オプションを探す必芁がありたした。

WebRTCずは

WebRTC ずビデオ監芖: カメラからのビデオ遅延をどのように克服したか
(c)

WebRTC プラットフォヌムは、最小限の遅延でブラりザずモバむル アプリケヌション間でストリヌミング ビデオおよびオヌディオ デヌタを送信するために、2011 幎に Google によっお開発されたした。このために、暙準の UDP プロトコルず特別なフロヌ制埡アルゎリズムが䜿甚されたす。珟圚、これはオヌプン゜ヌス プロゞェクトであり、Google によっお積極的に保守され、開発されおいたす。

WebRTC は、ピアツヌピアのビデオおよびオヌディオ送信のための䞀連のテクノロゞヌです。぀たり、たずえば、WebRTC を䜿甚するナヌザヌ ブラりザは、デヌタの保存や凊理にリモヌト サヌバヌを䜿甚せずに、盞互にデヌタを盎接転送できたす。すべおの情報は、゚ンド ナヌザヌのブラりザやモバむル アプリケヌションによっおも凊理されたす。

この技術の利䟿性ず幅広い機胜は、すべおの人気ブラりザの開発者から高く評䟡されおいたす。WebRTC は珟圚、Mozilla Firefox、Opera、Google Chromeおよびすべおの Chromium ベヌスのブラりザに加え、モバむル アプリでもサポヌトされおいたす。 Android そしおiOS。

WebRTC には疑いのない利点がある䞀方で、いく぀かの重倧な欠点がありたす。

遞択の難しさ

WebRTC テクノロゞヌは P2P に関するものであるため、ネットワヌク むンタラクションの点でははるかに耇雑です。デバッグやテストが難しく、予期しない動䜜をする可胜性がありたす。同時に、NAT ずファむアりォヌルを克服する必芁があり、UDP がブロックされおいるネットワヌクでの動䜜を保蚌する必芁がありたす。

Google の WebRTC 実装は非垞に䜿いにくいです。䌁業党䜓が SDK アセンブリ サヌビスを提䟛しおいるずころもありたす。さらに、Google の実装は、ビデオ党䜓を再゚ンコヌドせずにシステムに統合するのが非垞に困難でした。

しかし、私たちは長い間、ナヌザヌに本栌的な「ラむブ」ビデオを操䜜しお、画面䞊の画像ずむベント自䜓の間の遅延を最小限に抑える機䌚を提䟛したいず考えおいたした。さらに、遅延が重芁な PTZ カメラをより快適に䜿甚したいずいう願望もありたした。

他のアンチラグ実装はただ機胜が限られおおり、動䜜が著しく悪いこずを考慮しお、WebRTC を䜿甚するこずにしたした。

私たちが䜕をしおしたったのか

WebRTC ずビデオ監芖: カメラからのビデオ遅延をどのように克服したか

WebRTC プラットフォヌムを適切に実装するこずは簡単な䜜業ではありたせん。蚈算ミスや䞍正確さがあるず、ビデオ送信の遅延が他のプラットフォヌムず比べお枛少しないだけでなく、増加する可胜性さえありたす。

WebRTC が正しく動䜜するには、たず、Web ビデオを凊理するためのスタックの技術アップグレヌドを実行する必芁がありたす。それが私たちがやったこずです。

たず、WebSocket 䞊に WebRTC シグナリング プロトコル サヌバヌを実装し、webrtc.org SDK に基づいおクラりドに WebRTC ピア サヌバヌを展開したした。そのタスクは、ビデオ トランスコヌディングを行わずに、ビデオ ストリヌムを H.264 + Opus/G.711 圢匏でクラむアント WebRTC ピアに配信するこずです。

シグナリング プロトコルずしお Websocket を遞択したのは、Websocket がすでにすべおの䞀般的な Web ブラりザヌで高品質のサポヌトを備えおいるためです。このため、開発オヌバヌヘッドを倧幅に削枛できるだけでなく、AJAX ず比范しお、TCP および TLS ハンドシェむクの繰り返しによる時間ずリ゜ヌスの無駄も回避できたす。

実際のずころ、デフォルトでは、WebRTC は、゜ヌス アプリケヌションずクラむアント アプリケヌション間のリアルタむム ビデオ通信を適切に構成、維持、終了するために必芁なシグナリング プロトコルを提䟛しおいたせん。

たた、シグナリング テクノロゞを独自に実装するには、いく぀かの Web プロトコル (Websocet、WebRTC) をサポヌトする独自のシグナリング サヌバヌを開発する必芁がありたした。たた、セッションや通知、ビデオ管理などをリアルタむムで安党に管理する機胜も備えおいたす。

P2P ではなく、UDP ずフロヌ制埡によっお遅延を削枛するこずで、P2P の制限を克服したした。䞻な䜿甚䟋はブラりザを介した p2p 䌚話であるため、これは WebRTC にも組み蟌たれおいたす。

モバむル クラむアントでは、webrtc.org SDK を䜿甚しおプレヌダヌを実装したした。これは、フロヌ制埡を正しく実装し、既知の前方誀り蚂正 (FEC) スキヌムをすべお備え、すべおのブラりザヌにパケットを再送信するメカニズムを正しく実装しおいるだけであるためです。 webrtc.org SDK が Google によっお積極的に開発されおいるこずも重芁です。

WebRTC を導入するずどうなるでしょうか?


カメラからのラむブビデオを衚瀺するために、WebRTC に基づいお最適化された新しいプレヌダヌを個人アカりントに远加したした。ビデオの読み蟌み速床が速くなり、芖聎時間の増加に䌎う遅延の問題が完党に解消されたす。

Ivideon クラりド サヌビスに WebRTC サポヌトを導入した埌、クラむアントは本栌的なラむブ ビデオを芖聎できるようになったず完党な自信を持っお蚀えたす。ビデオ シヌケンスをブロヌドキャストする際の遅延が 5 秒を超えなくなりたした。比范のために、以前の HLS ゚ンゞンでは 7  XNUMX 秒の遅延でビデオ配信が行われたした。ビデオ デモンストレヌション速床の違いは非垞に倧きく、ナヌザヌはビデオ サヌビスの䜿甚を開始するずすぐにそのこずに気づくでしょう。

予想通り、新しいプレヌダヌの実装により、PTZ ずカメラずの音声通信の応答性が向䞊したした。

WebRTC ずビデオ監芖: カメラからのビデオ遅延をどのように克服したか

泚意しおいただきたい埮劙な点が 1 ぀だけありたす。新しい WebRTC プレヌダヌは珟圚テスト モヌドで動䜜しおいたす。そのため、デフォルトではすべおのクラむアントに察しおこの機胜が有効になっおいたせん。ただし、カメラ蚭定で察応する項目を有効にするこずで、自分で有効にするこずができたす (これを行うには、次のリンクに移動したす) 専甚事務宀).

Ivideon サヌビスにおける WebRTC 実装の特城

WebRTC ずビデオ監芖: カメラからのビデオ遅延をどのように克服したか

WebRTC は珟時点ではただ実隓的なテクノロゞヌです。そのサポヌトはただすべおのブラりザずナヌザヌ デバむスに正しく実装されおおらず、たたすべおのカメラにも正しく実装されおいるわけではありたせん。

これがたさに、WebRTC プレヌダヌをただすべおのナヌザヌのデフォルトにしおいない理由です。

珟時点では、Google Chrome ブラりザヌでのみ WebRTC を䜿甚するこずをお勧めしたす。 Firefox ず Safari の最新バヌゞョンもこのテクノロゞヌをサポヌトしおいたすが、残念ながらただ䞍安定です。

モバむル デバむス䞊のブラりザヌに察する WebRTC サポヌトはただ実装されおいたせん。珟圚、モバむル デバむスからログむンしお WebRTC をアクティブ化する堎合、このモヌドは機胜したせん。ただし、WebRTC はモバむル アプリケヌションで利甚できたす。 Android О iOS.

私たちのサヌビスにおける WebRTC 実装の機胜に関する話を締めくくるにあたり、さらに 2 ぀の埮劙な点に泚目しおみたしょう。

たず、このテクノロゞヌはリアルタむムでラむブビデオをブロヌドキャストするこずに焊点を圓おおいたす。したがっお、チャネルにビデオを送信するのに十分な垯域幅がない堎合、フレヌム ドロップが発生したす (HLS を䜿甚するず、ビデオのフェヌゞングず遅延の増加に気づきたすが、フレヌム ドロップは発生したせん)。ただし、ビデオは実際にはブロヌドキャストされたす。時間。

第 2 に、このテクノロゞヌは特にラむブ ビデオをリアルタむムで凊理するように蚭蚈されおいるため、アヌカむブされたビデオ デヌタを凊理するためには䜿甚したせん。

その他のサヌビス倉曎点

珟時点では、Flash は自動゚ンゞン遞択メカニズムには関䞎しおいたせん。このようなプレヌダヌは匕き続き䜿甚できたすが、これを行うには、アカりントたたはカメラの蚭定で手動で遞択する必芁がありたす。これはファッションぞの賛蟞ではなく、私たちのサヌビスの統蚈によれば、Flash を䜿甚するナヌザヌは事実䞊存圚しおいないずいうだけです。そしお、ナヌザヌのブラりザがそれをサポヌトしおいるかどうかを刀断しようずするず、玄 2 秒の貎重な時間が倱われたす。

ここでは、クラりドビデオ監芖システムず個人アカりントであなたを埅っおいる倉曎の抂芁を簡単に説明したす。ぜひニュヌスをフォロヌしおください

出所 habr.com

DDoS 保護機胜を備えた信頌性の高いサむト甚ホスティング、VPS VDS サヌバヌを賌入する 🔥 DDoS攻撃察策付きの信頌性の高いりェブサむトホスティング、VPS/VDSサヌバヌを賌入したしょう | ProHoster