ChromeやFirefoxなどの高バージョンのブラウザでHikvisionとDahuaRTSPの低遅延再生を実現します

1.背景

        今日、カメラの時代はどこにでもあります。帯域幅の継続的な加速とスマートフォンの人気により、ホットなWebライブ放送業界が生まれました。新しいクラウンウイルスの流行により、ネットワークビデオ会議システムはビジネスミーティングに欠かせない選択肢となっています。 、したがって、RTSPリアルタイムビデオストリーミングおよび処理は、セキュリティ業界に限定されなくなりました。道路、工場、建物、学校、港湾、農場、景勝地などのシナリオで実装される情報システムでは、基本的にB / Sアーキテクチャが採用されており、の超低遅延を組み込むことが急務となっています。ブラウザ(500ミリ秒未満)の再生機能でのマルチカメラRTSPストリーム、およびIEおよびChrome 49以下のブラウザでは、ActiveXコントロールまたはNPAPIプラグインの使用を実現できます。ただし、その良さは常に短命です。2015年以降、ChromeやFirefoxなどのブラウザはNPAPIプラグインのサポートをキャンセルし、IEはChromeやFirefoxなどのブラウザと競合する過程でユーザーによって継続的に放棄されています。市場シェアは哀れな一桁まで下がっています。何度か投げた後、MicrosoftはChromiumカーネルを採用し、ブラウザの不安定な位置に自分自身を保存するために、独自のIEを強制終了する新しいバージョンのEdgeを起動しました。

        Chrome、Edge、Firefoxなどの現在の主流のハイバージョンブラウザでは、HTML5標準ビデオでさえRTSPストリーミングのネイティブサポートを提供していません。これにより、低遅延、低コストを実現し、複数のRTSPチャネルを再生できるようになります。同時に、大きな技術的問題になっています。過去数年間、国内外の技術専門家は、クローズドソースまたはオープンソースの有料または無料のソリューションを継続的に調査および要約して形成してきましたが、ほとんどの場合、顧客の実際のニーズを完全に満たすことはできません。

2.既存の計画

ブラウザでRTSPリアルタイムビデオストリームを再生するには、おおよそ次のスキームがあります。

  1. ブラウザプラグインソリューション

        このソリューションは、主にIEおよびChrome 49より前のブラウザーに適用可能であり、2015年以前は絶対的な主流の選択肢です。ActiveX再生制御またはNPAPI再生プラグインを使用すると、実際にローカルネイティブプログラムを呼び出して直接再生します。これにより、このマシンのハードウェアアクセラレーション機能を最大限に活用し、満足のいくマルチチャネル低コスト、低遅延の再生効果を実現できます。 。通常、無料のオープンソースクロスプラットフォームマルチメディアプレーヤーであるVLCを使用します。また、IE、Chrome、Firefoxなどのブラウザーには、モバイル端末を非常によくサポートする対応する再生プラグインがあります。このソリューションは非常に柔軟性があり、さまざまなブランドのビデオストリームに簡単に接続でき、スクリーンショットやビデオ機能も簡単に実現できます。欠点は、VLCソフトウェアの追加インストールが必要になることです。これは、プラグインが明らかに禁止されている個々のシナリオには適していません。カメラメーカーは通常、適合した再生プラグインも提供しています。たとえば、Hikvisionが提供する再生コントロールは、独自のDSSシステムにバンドルされています。

  1. 最初にトランスコードし、次にソリューションをストリーミングします

        このソリューションでは、1つ以上のビデオストリームトランスコーディングサーバーをセットアップする必要があります。RTSPストリームは、サーバー上のffmpegを使用して最初にトランスコードされてRTMPにストリーミングされ、次にフロントエンドがVideoJSを使用してから、Adobe FlashPlayerを呼び出して再生します。 Chromiumカーネルのは2020年末に再生されます。ブラウザはAdobeFlash Playerのサポートを完全にキャンセルし、VideoJSは無効になります。幸い、オープンソースの代替再生スキームflv.js(https://github.com/bilibili/flv.js)もあります。動作原理は、サーバー側でRTSPビデオストリームをflvに変換することを要求することです。次に、Web SocketまたはWebRTCでプッシュします。フロントエンドは、フロントエンドがそれを受信し、再生のためにビデオでサポートされているMP4に変換します。これにより、再生前に2回トランスコードする必要があるRTSPビデオストリームが発生します。画像の遅延時間大幅に増加します。控えめに見積もっても、遅延は少なくとも2〜3秒です。さらに、複数のビデオストリームがある場合、サーバー側のトランスコーディングとストリーミングはCPU、メモリ、ネットワーク帯域幅へのプレッシャーを大幅に増大させ、長期使用コストが高くなります。このソリューションでは、ブラウザがストリーミングメディア拡張機能(MSE)をサポートしている必要があり、ネイティブハードウェアアクセラレーションを使用してデコードとレンダリングを行うことはできません。利点は、モバイルWeb再生と互換性があることです。このソリューションには、中国のTSISEEからのプラグインフリーのEasyPlayer RTSPプレーヤーがあります。プロジェクトアドレスはhttps://github.com/tsingsee/EasyPlayerで、linkingvisionからのプラグインフリープレーヤーH5streamです。プロジェクトアドレスはhttps:です。 //github.com/linkingvision/h5streamなど。

  1. 最初にストリーミングしてから、ソリューションをトランスコードします

        このソリューションの典型的な代表は、StreamedianのプラグインフリープレーヤーHtml5 RTSP Playerであり、プロジェクトアドレスはhttps://github.com/Streamedian/html5_rtsp_playerです。このソリューションでは、Web Socketビデオストリーム転送サーバーをセットアップする必要があります。フロントエンドがこのサーバーに接続された後、サーバーはWeb Socketを介してRTSPビデオストリームをフロントエンドJS処理ライブラリに継続的に転送し、JS処理を実行します。ライブラリはビデオストリームをビデオストアに変換します。再生後にMP4をサポートします。このソリューションはIEブラウザをサポートしていません。最大の問題は、画像が数秒間遅れる、最初の画面のコンテンツが遅い、ローカルハードウェアアクセラレーションを使用してデコードとレンダリングを実行できない、CPU使用率が高い、再生中にフリーズし、エクスペリエンスは比較的劣ります。また、ローカル自動スクリーンショットやビデオ録画などの操作は実現できません。このソリューションでは、ブラウザがストリーミングメディア拡張機能(MSE)をサポートしている必要もあります。遅延の影響を受けないシングルソース再生は許容されます。マルチチャネル再生はスリープとスリープのみが可能です。さらに、一部のユーザーフィードバックによると、さまざまなブランドのカメラと互換性がありますセックスはあまり友好的ではなく、商用利用には適していません。

  1. 拡張プログラム

        このソリューションの代表的な例は、ChromeブラウザのNative Client(NaCl)およびPortable Native Client(PNaCl)テクノロジに基づいており、オープンソースプレーヤーのVXGRTSPプレーヤーを実装しています。プロジェクトのアドレスはhttps://git.code.sf.netです。 / p / rtsp- player-chrome / codertsp-player-chrome-codeこのスキームは明らかにIEやFirefoxなどのブラウザには適用されず、バージョン49より前のChromeブラウザにも適用されません。VXG RTSP PlayerはChromeブラウザの拡張機能です。国内のお客様にとって、Googleサーバーは壁の外にあるため、大規模な自律的で制御可能な展開が必要なのは非現実的です。最も重要なことは、Googleが2021年6月にNaCl、PNaCl、PPAPI APIのサポートを終了することを正式に発表したことです。したがって、この計画を継続して検討する必要はありません。

  1. デュアルコアソリューション

        このソリューションの一般的な実装は、Chromeブラウザで拡張プログラムIETabを使用することです。公式ウェブサイトはhttps://www.ietab.netです。IEカーネルによってレンダリングされたウェブページは、Chromeタブにオーバーレイしてロードすることで表示されます。これは、たとえば、VLCのオープンソースActiveXマルチメディア再生制御の実装と呼ばれます。このスキームは、スキーム4と同様に、大規模な自律的で制御可能な展開が難しいという問題があります。さらに、上記のブラウザプラグインソリューションと同様に、IEHelpTab.exeクライアントプログラムをダウンロードして再生端末コンピュータで実行する必要があります。これは、プラグインなしで再生するためのセキュリティ要件が高い一部のシナリオには適用されません。最大の問題は、Chrome Webページの再生コントロールを制御することが難しいことです。Webページと再生コントロールがIEカーネル環境にある場合にのみ、IEは現在の新しいテクノロジーやフロントエンドのメインストリームフレームワークと互換性がなくなります。 、IEは、ActiveXコントロールの実行、ダウンロード、およびインストールに関する警告を頻繁にポップアップし、ユーザーエクスペリエンスは非常に貧弱です。

  1. Wasmソリューション

        このソリューションは、より複雑なネイティブアプリケーションをWebに直接転送することを容易にするために、より高いバージョンのブラウザーでサポートされている標準テクノロジーを使用します。ただし、ブラウザーの互換性には大きな問題があります。IEは完全にサポートされておらず、ChromeやFirefoxなどのより低いバージョンのブラウザーまた、Wasmをサポートしていません。特定の互換性については、https: //caniuse.com/wasmを参照してください基本的な考え方は、RTSPビデオストリームをWasmバージョンのffmpegを介してVideoでサポートされているMP4にデコードすることです。Wasmはハードウェアデコードをサポートしていないため、マルチチャネル同時再生のCPUとメモリの使用量が高くなり、パフォーマンスが大きくなります。ボトルネック。このソリューションは、H265エンコーディングをサポートする必要があるシナリオに適用されることがあり、ブラウザがストリーミングメディア拡張機能(MSE)をサポートする必要もあります。多くの互換性の問題があるため、このスキームを実際に適用するケースはほとんどありません。

三、改善計画

        上に要約した既存の技術ソリューションから、ブラウザで複数のRTSPの低遅延、低コストの同時再生を実現したい場合は、トランスコードせずに直接再生し、の2つのコアを最大限に活用することしかできないことがわかります。ターミナルハードウェアアクセラレーション。これはリクエストによってのみ実行でき、プラグインソリューションでのみ実行できます。核となるのは、ブラウザ自体の拡張技術に依存しない統合プラグインシステムをブラウザに実装する方法にあります。同時に、改善スキームは、さまざまなブランドやバージョンのブラウザとの互換性を高める必要があります。より実用的な価値があります。したがって、改善計画の基本的な考え方は、ブラウザのWebページで位置とサイズを指定して、Webページに埋め込まれた再生ウィンドウを実現することです。埋め込まれた再生ウィンドウのフロントエンドもそれを制御できる必要があります。また、再生ウィンドウはブラウザのウィンドウの移動とズーム、Webページのスクロール、タブの切り替え、閉じるなどの操作が自動的にリンクされている必要があります。これには、再生ウィンドウがローカルプログラムである必要があり、端末のハードウェアアクセラレーション機能も十分に活用できるように、高性能のC ++言語を使用して実装するのが最適です。この再生ウィンドウは、Web SocketサーバーとJSONパッケージコマンド解析実行モジュールの両方を提供します。フロントエンドは、Web Socket接続を介してJSONパッケージ制御コマンドを送信して、再生ウィンドウを制御できます。

       現在、このアイデアを採用した関連ソフトウェアや実装事例が市場に出回っています。たとえば、PluginOKミドルウェア(https://github.com/wangzuohuai/WebRunLocal)は、に依存しない統合プラグインシステムを提供します。ブラウザ自体の拡張技術。低バージョンのChromeおよびIEブラウザを含む現在の主流のブラウザとの完全な互換性を実現できます。プラグインのダウンロードとインストールのためのActiveXコントロールと同様のメカニズムも提供し、影響を与えるいくつかの警告を削除します。ユーザーエクスペリエンス、および発信者のセキュリティ検証メカニズムを追加します。また、このプレイウィンドウプログラムは、優れた実装例も提供します。具体的な呼び出し方法については、https//github.com/wangzuohuai/WebRunLocal/blob/master/Plugins/VlcWebPlayer/VlcPlayerApplet.txtの説明を参照してください。複数のRTSP同時再生サポートが直接実現されているのはこの再生ウィンドウであり、クリックして再生ウィンドウのフォーカスと全画面再生を切り替えることができます。このプログラムは、複数のお客様のサイトで成功裏に実装され、良好な結果を達成していると理解されており、お客様から満場一致の賞賛を獲得しています。再生効果の表示は次のとおりです。

Chrome、Firefox、Edgeなどの高バージョンのブラウザーで、HikvisionおよびDahuaRTSPエフェクトを低遅延で再生します

        大手ビデオ監視会社が最近このアイデアのバージョンをリリースしましたが、テストの結果、Firefoxの高バージョンブラウザをサポートしていないことが判明しました。再生ウィンドウプログラムフレームワークは肥大化したQTによって実装されています。再生ウィンドウはただのようです。シミュレートされた表示の効果は実際にはブラウザウィンドウに埋め込まれていないため、ブラウザとのリンクが不十分であり、プラグインパッケージも大きいため、フロントエンドの自動アップグレードと安全な呼び出しメカニズムが提供されます。また、この再生プラグインを使用する場合は、DSSシステムを購入する必要があります。このDSSシステムの価格は高く、セキュリティ業界以外のお客様にとっては価格/性能比が非常に低くなっています。

       プラグインを免除するための個々の顧客の要件については、それは主にセキュリティ上の理由によるものです。実際、これらのいわゆるプラグインフリーの実装ソリューションでは、ブラウザはサーバーからプレーヤーのJSバージョンをダウンロードする必要がありますが、プラグインバージョンはローカルプログラムプレーヤーをダウンロードします。ローカルプレーヤープログラムへのダウンロードは安全です。必要に応じて、オープンソースコードを使用して、セキュリティに関する顧客の懸念を払拭することができます。もう1つの理由は、追加のプラグインプログラムをダウンロードする必要があると、展開とアップグレードの問題が発生することです。これは、超低遅延の再生に必要な価格です。さらに、上記のPluginOKミドルウェアは、再生プラグインの自動インストールとアップグレードのメカニズムを提供します。これにより、展開とアップグレードのプレッシャーが大幅に軽減され、IEのActiveXコントロールよりも効果が高くなります。

4、まとめ

        優れた技術的実装計画は、最初に顧客のニーズを満たすこと、2番目に開発、実装、運用の総コストを最小限に抑えること、3番目に優れた互換性と信頼性を持たせることです。最後に、技術的ソリューションができないことを確認する必要があります。ブラウザのアップグレードが原因で失敗します。この記事では、最新の技術情報と実際の経験に基づいて、安定性、信頼性、互換性、低遅延を実現し、参照用に複数のRTSPチャネルを同時に再生できる低コストの技術ソリューションを提供します。

おすすめ

転載: blog.csdn.net/EMeiMonkey/article/details/111179673