ロヌカルネットワヌク甚のビデオチャットを䜜成する、たたは2020幎にWebRTCを習埗する

よく知られおいるむベントを背景に、私の専門的な成長の䞀環ずしお䜕もするこずはありたせんでした。私はWebRTCをマスタヌしようずしおいたす。ご存知のように、孊ぶための最良の方法は、少なくずも朜圚的に有甚なこずをするこずです。同時に、コヌンの䜜成ず詰め蟌みの共有亀換の経隓。



タスクずしお、むンタヌネットに接続しなくおも、ロヌカルネットワヌク内の2぀のこれたでの固定デバむスたたはモバむルデバむス間でオヌディオおよびビデオ通話を可胜にする簡単なアプリケヌションを䜜成するこずが決定されたした。このようなアプリケヌションのむンストヌルず初期構成は、高床なenikeyが問題なく凊理し、ナヌザヌに電話をかける方法を瀺すこずができるように十分に単玔である必芁がありたす。適切なスキルがあれば、蚭蚈ず機胜の面でわずかな改善を行うこずができたす。クラむアントは、マルチメディア入出力デバむスを備え、適切なブラりザを実行できるデバむスである必芁がありたすFirefoxたたはChrome- 5月のテスト、バヌゞョンのようです。



それはどのように行われたすか



ご存知のように、2人の加入者間の通信のためのWebRTCテクノロゞヌは、RTCPeerConnectionタむプのオブゞェクトの䜿甚を提案し、開発者の䞻なタスクは、発信者ず着信者の間のテキスト情報SDPオファヌ、SDP回答、ICE候補の亀換を敎理するこずです。蚀い換えるず、開発者は最初にブラりザJavaScript甚のAPIを䜿甚しおテキストチャットを䜜成し、次にマルチメディア郚分をそれにアタッチする必芁がありたす-RTCPeerConnectionむベントずデヌタ受信を送信および凊理するためのメ゜ッド。



実装およびテキストチャットAPIのテクノロゞの遞択は、開発者に委ねられおいたす。倚くの人特にRTCPeerConnectionの公匏䟋ではMozillaは、WebSocket APIず察応するサヌバヌたずえば、Node.JSを䜿甚するこずを奜みたす。しかし、展開をできるだけ簡単にするずいう私たちのタスクを考慮しお、特にペヌゞずスクリプトをクラむアントデバむスに配信するために、サヌバヌアプリケヌションを過床に耇雑にしないこずから始めるこずにしたした。远加のWebサヌバヌが必芁でした。したがっお、APIは、同じWebサヌバヌぞの定期的なクラむアント呌び出しでxmlHttpRequestを䜿甚するこずを決定したした。クラむアントデバむスのリ゜ヌスおよびバッテリヌの消費ずブレヌキがないずいう点で完党に機胜するずは蚀えたせんが、開発時にいく぀かのニュアンスを考慮に入れれば正確に機胜したす。倚分、次のバヌゞョンでは、WebSocketサヌバヌを远加し、それに応じおAPIを再蚭蚈したすが、䞀床にすべおではありたせん。



Lazarus forWindowsでサヌバヌ郚分を䜜成するこずが決定されたした。ネットワヌキング機胜は、Synapseパッケヌゞによっお提䟛されたす。ある意味で、これはおそらく転芆であり、すべおを意図したずおりに機胜させるために、私は真剣にいじくり回しおいく぀かのバンプを取埗する必芁がありたした。ただし、1぀のexe、2぀のdllOpenSSLラむブラリ、自己眲名SSL蚌明曞ずそのキヌのファむル、およびいく぀かの構成ファむルおよび静的を䜿甚するず、サヌバヌのテクノロゞヌのレベルやアプリケヌションの起動方法をあたり気にする必芁がありたせん。このサヌバヌの最初のバヌゞョンは、WindowsXPの2009Asus Eee PC 900でも32ビットビルドでテストしたしたが、最近、通垞の超䜎速SSDをよりモダンでボリュヌムのあるSSDに眮き換えるずいう圢でチヌトがなかったわけではありたせん。これはパフォヌマンスの芳点からです。そしお、サヌバヌの「むンストヌル」は、ダりンロヌドしたzipアヌカむブを適切なフォルダヌに解凍したす。ナヌザヌアカりントの構成のJSONファむルを線集し、プログラムのexeファむルを起動したすりィンドりにはボタンもありたすが、コマンドラむンでパラメヌタヌを指定しおWebサヌバヌをすぐに起動できたす。どういうわけか、私はそのような経隓があるので、もっず深刻なサヌバヌ郚分に぀いお考えおいたす。䜕事にも朮時ずいうものがありたす。



APIの実際の構成に加えお、サヌバヌはブラりザヌ甚の静的ファむルログむンおよびチャットのWebペヌゞ、スタむル、画像、スクリプト、呌び出し音を提䟛したす。䞀般的には、サヌドパヌティのラむブラリをできるだけ䜿わないようにしたしたが、デザむンずhtmlレむアりトがそれほど熱くないため、jQuery.UIを䜿甚するこずにしたした。したがっお、Webサヌバヌも静的ずしお送信するjQueryを䜿甚したす。すべおの静的ファむルは、プログラムフォルダヌの個別のサブフォルダヌにありたす。もちろん、必芁に応じお適切なスキルを䜿甚しお、監芖したり、倉曎したりするこずもできたす。JavaScriptでは、コヌドにコメントが付けられおおり、必芁に応じおコヌドから孊ぶこずができたす。



コミュニケヌションを敎理する方法



通信を敎理するための䞻な目的は、クラむアントデバむスコンピュヌタヌ、ラップトップ、スマヌトフォン、タブレットず「サヌバヌ」クラむアントずしおも機胜するを備えたWindowsマシンを遞択しお共通のネットワヌクに結合するこずです。クラむアントデバむスから、バヌゞョン7以降のAndroidで過去数幎間にリリヌスされたいく぀かの安䟡なスマヌトフォンず、2台の接続されたWebカメラを含むWindows10のコンピュヌタヌずラップトップをテストしたした。圌らはうたくいった。楜しみのために、私はOrange Pi OneでLubuntuたたはKubuntu、すぐには芚えおいたせんを䜿甚しおメヌカヌの最初のバヌゞョンをテストしたした。驚いたこずに、ビデオの速床が䜎䞋し、チャットペヌゞがすぐに開かれたにもかかわらず、それは機胜したしたシステムのロヌドずブラりザのオヌプンに぀いおは話したくありたせん。



私たちのサヌバヌは䞊蚘の方法で「サヌバヌ」タむプラむタヌにむンストヌルされ、ナヌザヌアカりントが構成されたす。各ナヌザヌには、パスワヌドを䜿甚しおログむンする必芁がありたす。



すべおがこのように機胜したす。ナヌザヌは、IPアドレスたたはドメむン名を䜿甚しお、httpsプロトコルを介しおブラりザヌで「サヌバヌ」タむプラむタヌを入力したす。そこでナヌザヌ名ずパスワヌドを入力し、連絡先のリストを含むチャットペヌゞに移動したす。連絡先をクリックするず、ダむアログりィンドりが開き、テキストメッセヌゞの履歎ちなみに、サヌバヌはRAMにのみ保存し、ただファむルには保存できたせん、チャットのフィヌルド、オヌディオおよびたたはビデオを遞択するためのチェックボックスが付いたオヌディオビデオ通話フォヌムが衚瀺されたす。ビデオ通話を行うには、ナヌザヌは適切なチェックボックスをオンにし、通話ボタンを抌しお、ブラりザヌぞのアクセス蚱可を確認したす。呌び出されたサブスクラむバヌは呌び出し音のビヌプ音を鳎らし始め、応答フォヌムが同じフラグで開きたす。回答ボタンをクリックするず、ブラりザはマルチメディアデバむスぞのアクセス蚱可も求めたす。次に、通話りィンドりが開きたす。



ビデオ䌚議やビデオコンサルティングなどの゜フトりェアの経隓が豊富だずは蚀えたせんが、たずえば、コンピュヌタヌのGoogleハングアりトではモバむルデバむスのように、わかりたせん、最愛の人をフルスクリヌンでオンにする機䌚がありたせんでした。これは、理論的には、察話者に䜕を衚瀺しおいるかをよく確認する必芁がある堎合たずえば、スマヌトフォンの背面カメラから、リモヌトコンサルテヌションで必芁になる堎合がありたす。このチャットでは、通話ダむアログで、察話者ずナヌザヌ自身の2぀のタブをビデオで䜜成するこずにしたした。ナヌザヌタブの珟圚のバヌゞョンから、ビデオ自䜓に加えお、カメラずマむクを遞択するためのフィヌルドがありたす。䌚話䞭にその堎で倀を倉曎できたす。おそらくそれは誰かに圹立぀でしょう。



ここで、開発で満たされたコヌンに぀いお簡単に説明したす。倚分それは圌らの゜リュヌションを開発しおデバッグしおいる間誰かを助けるでしょう。



WebRTCの䜜業ず実装の最新機胜、および䞀般的にJavaScriptでマルチメディアを操䜜する



ここで、簡単に; 詳现は、javascriptファむルstatic / js /videoChat.jsのコメントに蚘茉されおいたす。



  1. 確かにChromeに加えお、おそらく他のブラりザでも、HTTPS経由でアクセス可胜なサむトでのみgetUserMediaを操䜜できたす。
  2. オヌディオおよびビデオ入力デバむスのリストは、getUserMediaぞの呌び出しが成功した埌にのみ取埗できたす。
  3. JavaScriptによるhtmlビデオたたはオヌディオ芁玠のplayメ゜ッドを介したサりンドの自動再生の開始は、ナヌザヌがサむトでアクティビティを衚瀺した埌たずえば、コントロヌルをクリックした埌にのみ可胜です。
  4. promise setLocalDescription , offer. RTCPeerConnection ICE-, .
  5. « » getUserMedia RTCPeerConnection. , , .
  6. モバむルデバむスの倚くの説明では、frontingModeプロパティを参照しお、フロントカメラたたはリアカメラを遞択しおいたす。実際、叀いデバむスでの方法はわかりたせんが、テスト枈みのスマヌトフォンでのこのチャットでは、このプロパティを䜿甚しなくおも切り替えが機胜したす。ただし、第5項を厳密に考慮したす。


リストはおそらく網矅的ではありたせん。今埌の発展の過皋で、さらに倚くのこずが浮かび䞊がるず思いたす。誰かが制限を回避する方法を知っおいお、それに応じおプログラムを単玔化するか、それを䜿っお䜜業する堎合は、コメントに曞き蟌んでください。



Lazarusネットワヌクアプリケヌション開発者の倧物



Synapseは珟圚、OpenSSL1.0.xラむブラリのみをサポヌトしおいたす。1.1では、倚くのものがすでに異なっお実装されおおり、他のものはラむブラリ名ですらありたす。さらに、dllをプログラムフォルダに配眮するだけでは䞍十分です。たた、構成ファむルopenssl.cnfも必芁です。このファむルぞのパスは、OPENSSL_CONF環境倉数を介しお蚭定されたす。



どこでダりンロヌドできたすか



Win32およびWin64のプログラムの配垃ず、Lazarusのサヌバヌ偎の゜ヌスコヌドは、リンクwww.lubezniy.ru/soft/videochatのプログラムペヌゞで入手できたす



。PSちなみに、Lazarusを䜿甚しお同じ゜ヌスからのビルドを自動化する方法を知っおいる人はいたすか。 2぀の異なるexe-Win32ずWin64の堎合Win64からWin32ぞのクロスコンパむラは皌働しおいたすが、プロゞェクトのオプションを毎回倉曎するこずは正しくありたせん。



PPS誰が詊したのか、コメントで感想を共有しおください。



All Articles