WebRTC මත පදනම් වූ සම-සම වීඩියෝ කතාබස්. WebRTC Webrtc ස්ථාපනය මත පදනම් වූ P2P වීඩියෝ කතාබස්

යුරෝපීය වෙබ් භාවිතා කරන්නන් කොටස් දෙකකට බෙදා ඇත: ඇලන්බැක් (ජර්මනිය) හි මහජන අදහස් විශ්ලේෂණ ආයතනය විසින් කරන ලද සමීක්ෂණයකට අනුව, ස්කයිප්, කතාබස් සහ ක්ෂණික පණිවිඩ පද්ධති අනිවාර්ය අංගයක් බවට පත්ව ඇත. එදිනෙදා ජීවිතයමිලියන 16.5 ක් වැඩිහිටියන් සහ ළමුන් සඳහා, මිලියන 9 ක් මෙම සේවාවන් ඉඳහිට භාවිතා කරන අතර මිලියන 28 ක් ඒවා ස්පර්ශ නොකරයි.

දැන් ෆයර්ෆොක්ස් ඒකාබද්ධ වී ඇති බැවින් තත්වය වෙනස් විය හැකිය තත්‍ය කාලීන සන්නිවේදන තාක්ෂණය (WebRTC), මෙන්ම සේවාදායකයා තමා. ශ්‍රව්‍ය සහ දෘශ්‍ය කතාබස් ආරම්භ කිරීම දැන් වෙබ් අඩවියක් විවෘත කිරීමට වඩා අපහසු නැත. අනෙක් අතට, ෆේස්බුක් සහ ස්කයිප් වැනි සේවාවන් වෙනම සේවාදායකයෙකු භාවිතා කර ගිණුමක් නිර්මාණය කිරීම මත රඳා පවතී.

WebRTC භාවිතා කිරීමට පහසු පමණක් නොවේ. මෙම ක්රමය ඔබට සැකසීමට පවා ඉඩ සලසයි බ්රවුසර දෙකක් අතර සෘජු සම්බන්ධතාවය. මේ ආකාරයෙන්, ශ්‍රව්‍ය සහ දෘශ්‍ය දත්ත තදබදයක් ඇති විය හැකි හෝ පරිපාලකයා පුද්ගලිකත්වයට හෝ දත්ත ආරක්ෂණයට විශේෂයෙන් සංවේදී නොවන සේවාදායකයක් හරහා ගමන් නොකරයි. සෘජු සම්බන්ධතාවයට ස්තූතියි, WebRTC හට කිසිදු ලියාපදිංචියක් අවශ්‍ය නොවේ ගිණුමඕනෑම සේවාවක.

සංවාදයක් ආරම්භ කිරීමට, ඔබ සබැඳිය අනුගමනය කළ යුතුය. සන්නිවේදනය පුද්ගලිකව පවතීදත්ත ප්‍රවාහය සංකේතනය කර ඇති නිසා. බ්‍රවුසරය හරහා තත්‍ය කාලීන සන්නිවේදනය, ගූගල් 2011 දී එහි WebRTC ක්‍රියාත්මක කිරීමේ මූල කේතය ප්‍රකාශයට පත් කරන විට ක්‍රියාකාරීව සම්බන්ධ වීමට පටන් ගත්තේය.

ඉන් ටික කලකට පසු, Chrome සහ Firefox හට ඔවුන්ගේම WebRTC එන්ජින් ලැබුණි. දැනට, ඔවුන්ගේ ජංගම අනුවාදයන් මෙම තාක්ෂණය සහ යෙදුම් විසින් භාවිතා කරන Android 5.0 සමඟ ස්ථාපනය කර ඇති WebView 3.6 එන්ජිම යන දෙකින්ම සමන්විත වේ.

තත්‍ය කාලීන සන්නිවේදනය සඳහා, වෙබ් නරඹන්නා තුළ සුදුසු JavaScript අතුරුමුහුණත් ක්‍රියාත්මක කළ යුතුය. GetUserMedia භාවිතා කිරීම මෘදුකාංගශ්‍රව්‍ය සහ දෘශ්‍ය මූලාශ්‍රවලින් ග්‍රහණය කර ගැනීම සක්‍රීය කරයි, එනම් වෙබ් කැමරාව සහ මයික්‍රෆෝනය. RTCPeerConnection සම්බන්ධතාවය ස්ථාපිත කිරීම සඳහා මෙන්ම සන්නිවේදනය සඳහාම වගකිව යුතුය.

බ්රවුසර ඒකාබද්ධ කිරීම සමග සමාන්තරව, Consortium හි වැඩ කරන කණ්ඩායම විශ්ව විසිරි වියමන(W3C) WebRTC ප්‍රමිතිකරණ ක්‍රියාවලිය තල්ලු කර ඇත. එය 2015 දී අවසන් කළ යුතුය.

WebRTC ස්වල්පයකින් සෑහීමකට පත්වේ

WebRTC සේවාව භාවිතා කිරීම සඳහා බොහෝ සම්පත් අවශ්‍ය නොවේ, මන්ද සේවාදායකය සම්බන්ධ කරන්නේ මිතුරන් පමණි. සම්බන්ධතාවයක් ස්ථාපිත කිරීම ද විශේෂයෙන් දුෂ්කර නොවේ. පළමුව, බ්‍රවුසරය WebRTC සේවාදායකයට ඇමතුමක් ආරම්භ කිරීමට සැලසුම් කරන බවට සංඥා කරයි. එය සේවාදායකයෙන් HTTPS සබැඳියක් ලබා ගනී - සම්බන්ධතාවය සංකේතනය කර ඇත. පරිශීලකයා මෙම සබැඳිය ඔහුගේ මැදිහත්කරු වෙත යවයි. එවිට බ්‍රවුසරය වෙබ් කැමරාව සහ මයික්‍රෆෝනය වෙත ප්‍රවේශ වීමට පරිශීලකයාගෙන් අවසර ඉල්ලයි.

අනෙක් පාර්ශවය සමඟ සෘජු ප්‍රවාහ සම්බන්ධතාවයක් ඇති කර ගැනීමට, බ්‍රවුසරයට එහි IP ලිපිනය සහ වින්‍යාස දත්ත WebRTC සේවාවෙන් ලැබේ. මිතුරාගේ වෙබ් බ්‍රවුසරය ද එයම කරයි.

ප්‍රවාහ සම්බන්ධතාවය සුමටව සහ හොඳ තත්ත්වයේ ක්‍රියා කිරීම සඳහා, බ්‍රවුසරයේ එන්ජින් තුනක් ක්‍රියා කරයි. ඔවුන්ගෙන් දෙදෙනෙකු ශ්‍රව්‍ය සහ දෘශ්‍ය දත්ත ප්‍රශස්ත කර සම්පීඩනය කරයි, තෙවනුව ඔවුන්ගේ ප්‍රවාහනය සඳහා වගකිව යුතුය. හරහා දත්ත යවයි SRTP ප්රොටෝකෝලය(Secure Real-time Transport Protocol), එය තත්‍ය කාලීන සංකේතාත්මක ප්‍රවාහයට ඉඩ සලසයි.

සෘජු සම්බන්ධතාවයක් අසාර්ථක වුවහොත්, WebRTC වෙනත් මාර්ගයක් සොයයි. උදාහරණයක් ලෙස, මෙය සිදු වන විට ජාල සැකසුම් IP ලිපිනය වාර්තා කිරීමට STUN සේවාදායකයට නොහැකි වීම වළක්වන්න. WebRTC ප්‍රමිතිය නියම කරන්නේ මෙම අවස්ථාවේදී සංවාදය සිදුවනු ඇති නමුත් TURN සේවාදායකයේ අතරමැදි ඇතුළත් කිරීමත් සමඟය (NAT වටා රිලේ භාවිතා කරමින් ගමන් කිරීම). එබැවින්, netscan.co වෙබ් අඩවියේ, ඔබට WebRTC ඔබේ පරිගණකයේ ක්‍රියාත්මක වේද යන්න සහ ඔබේ වෙබ් ප්‍රවේශය සමඟ පරීක්ෂා කළ හැක.

සම්බන්ධතාවය සිදු කරන ආකාරය

පළමුව ඔබ සංවාදයක් ලියාපදිංචි කළ යුතුය (1). WebRTC සේවාව මැදිහත්කරු වෙත යැවිය යුතු සබැඳියක් සපයයි. බ්‍රවුසරය, STUNserver භාවිතා කරමින්, තමන්ගේම IP ලිපිනය (2) සොයාගෙන, එය සේවාවට යවන අතර සෘජු සම්බන්ධතාවයක් ඇති කිරීම සඳහා හවුල්කරුගේ IP ලබා ගනී (3). STUN අසමත් වුවහොත්, සංවාදය TURNserver (4) භාවිතයෙන් හරවා යවනු ලැබේ.

බ්‍රවුසරයේ WebRTC තාක්ෂණය භාවිතයෙන් සන්නිවේදනය JavaScript කේතය භාවිතයෙන් දියත් කෙරේ. ඊට පසු, සන්නිවේදනය සඳහා එන්ජින් තුනක් වගකිව යුතුය: හඬ සහ වීඩියෝ එන්ජින් වෙබ් කැමරාව සහ මයික්‍රොෆෝනයෙන් බහුමාධ්‍ය දත්ත රැස් කරයි, සහ ප්‍රවාහන එන්ජිම තොරතුරු ඒකාබද්ධ කර ආරක්‍ෂිත තත්‍ය කාලීන ප්‍රොටෝකෝලය (SRTP) භාවිතයෙන් සංකේතාත්මක ආකාරයෙන් ප්‍රවාහය යවයි.

WebRTC සමඟ වැඩ කරන බ්‍රව්සර් මොනවාද

Chrome සහ Firefox, talky.io වැනි සේවාවන් භාවිතා කරන WebRTC එන්ජිමකින් සමන්විත වේ. Mozilla බ්‍රවුසරයට තමන්ගේම සේවාදායකයා සමඟ කෙලින්ම වැඩ කළ හැකිය.

Google සහ Mozilla තත්‍ය කාලීන සන්නිවේදනයේ අදහස දිගටම වර්ධනය කරයි: Chrome හට බහු සහභාගිවන්නන් සමඟ WebRTC සම්මන්ත්‍රණයක් පැවැත්විය හැකි අතර Firefox හි නව Hello සේවාලාභියා විදුලි සංදේශ යෝධ Telefonica හි අනුබද්ධ ආයතනයක සහාය ඇතිව සංවර්ධනය කර ඇත. ඇපල් දැනට පසෙකට වී ඇත, ඔබ තවමත් සෆාරි හි WebRTC බලාපොරොත්තු නොවිය යුතුය. කෙසේ වෙතත්, Safari සඳහා විකල්ප iOS යෙදුම් සහ ප්ලගීන ඕනෑ තරම් තිබේ.

Microsoft ටිකක් වෙනස් පාඨමාලාවක් ගන්නවා. තරඟාවලියක හිමිකරු ලෙස ස්කයිප් සේවාවමෙම සමාගම එතරම් පහසුවෙන් WebRTC වෙත යටත් වන්නේ නැත. ඒ වෙනුවට, මයික්‍රොසොෆ්ට් විසින් ORTC (Object Real-Time Communications) නම් තාක්ෂණයක් සංවර්ධනය කරයි. අන්තර්ජාල ගවේෂකය.

සේවාදායකය සමඟ සම්බන්ධතා ඇති කර ගැනීම සඳහා විවිධ කෝඩෙක්ස් සහ ප්‍රොටෝකෝල වැනි WebRTC වෙතින් වන වෙනස්කම් සුළු වන අතර කාලයත් සමඟ බොහෝ විට WebRTC ප්‍රමිතියට අමතරව මෙම වෙනස්කම් ඇතුළත් වේ. මේ අනුව, ඇපල් පමණක් පිටුපසින් පවතී - සුපුරුදු පරිදි.

ඡායා රූප:නිෂ්පාදන සමාගම්; goodluz/Photolia.com

බොහෝ ද්රව්ය මත WebRTCලිවීමේ කේතයේ යෙදුම් මට්ටම කෙරෙහි අවධානය යොමු කරන අතර තාක්ෂණය අවබෝධ කර ගැනීමට දායක නොවේ. අපි ගැඹුරට ගොස් සම්බන්ධතාවය ඇති වන ආකාරය සොයා ගැනීමට උත්සාහ කරමු, සැසි විස්තරය සහ අපේක්ෂකයින් මොනවාද, මොනවාද? STUNසහ හැරවීමසේවාදායකය.

WebRTC

හැදින්වීම

WebRTC යනු ඔබට වීඩියෝ දත්ත සම්ප්‍රේෂණය සඳහා සේවාලාභීන් දෙදෙනෙකු සම්බන්ධ කිරීමට ඉඩ සලසන බ්‍රවුසර පාදක තාක්ෂණයකි. ප්‍රධාන විශේෂාංග වන්නේ අභ්‍යන්තර බ්‍රවුසර සහායයි (වැනි තෙවන පාර්ශ්ව කාවැද්දූ තාක්ෂණයන් අවශ්‍ය නොවේ adobe flash ) සහ අතිරේක සේවාදායකයන් භාවිතා නොකර සේවාදායකයින් සම්බන්ධ කිරීමේ හැකියාව - සම්බන්ධතාවය සම සම(තව දුරටත්, p2p).

සම්බන්ධතාවයක් ස්ථාපිත කරන්න p2p- පරිගණක සෑම විටම පොදු නොවන බැවින් තරමක් දුෂ්කර කාර්යයකි IPලිපින, එනම් අන්තර්ජාලයේ ලිපින. සුළු මුදල නිසා IPv4ලිපින (සහ ආරක්ෂක අරමුණු සඳහා) යාන්ත්රණයක් සංවර්ධනය කරන ලදී NAT, පුද්ගලික ජාල නිර්මාණය කිරීමට ඔබට ඉඩ සලසයි, උදාහරණයක් ලෙස, නිවාස භාවිතය සඳහා. බොහෝ නිවාස රවුටර දැන් සහය දක්වයි NATසහ මෙයට ස්තූතිවන්ත වන්නට, අන්තර්ජාල සපයන්නන් සාමාන්‍යයෙන් එකක් ලබා දුන්නද, සියලුම ගෘහ උපාංගවලට අන්තර්ජාලයට ප්‍රවේශය ඇත IPලිපිනය. පොදු IPඅන්තර්ජාලයේ ලිපින අද්විතීයයි, නමුත් පුද්ගලික ලිපින එසේ නොවේ. එබැවින් සම්බන්ධ වන්න p2p- දුෂ්කර.

මෙය වඩා හොඳින් අවබෝධ කර ගැනීම සඳහා, අවස්ථා තුනක් සලකා බලන්න: නෝඩ් දෙකම එකම ජාලයක ඇත (පින්තූරය 1), නෝඩ් දෙකම විවිධ ජාල වල ඇත (එකක් පුද්ගලිකව, අනෙක පොදු) (පින්තූරය 2)සහ නෝඩ් දෙකම එකම සමග විවිධ පුද්ගලික ජාල වල ඇත IPලිපිනයන් (රූපය 3).

රූපය 1: එකම ජාලයේ නෝඩ් දෙකම

රූපය 2: විවිධ ජාල වල නෝඩ් (එකක් පුද්ගලිකව, එකක් පොදු)

රූපය 3: විවිධ පුද්ගලික ජාල වල නෝඩ්, නමුත් සංඛ්‍යාත්මකව සමාන ලිපින සහිත

ඉහත රූපවල, අක්ෂර දෙකේ අංකනයේ පළමු අකුරෙන් නෝඩ් වර්ගය (p = සම වයසේ මිතුරන්, r = රවුටරය) පළමු රූපයේ, තත්වය වාසිදායක වේ: ඔවුන්ගේ ජාලයේ නෝඩ් සම්පූර්ණයෙන්ම ජාලය විසින් හඳුනාගෙන ඇත IPලිපිනයන් සහ එම නිසා එකිනෙකාට සෘජුවම සම්බන්ධ විය හැක. දෙවන රූපයේ, අපට සමාන නෝඩ් අංක ඇති විවිධ ජාල දෙකක් තිබේ. රවුටර (රවුටර) දෙකක් ඇති මෙහි දිස්වේ ජාල අතුරුමුහුණත- ඔබේ ජාලය තුළ සහ ඔබේ ජාලයෙන් පිටත. එබැවින් ඔවුන්ට දෙකක් තිබේ IPලිපිනයන්. සාමාන්‍ය නෝඩ් වලට ඇත්තේ එක් අතුරු මුහුණතක් පමණක් වන අතර එමඟින් ඔවුන්ගේම ජාලයෙන් පමණක් සන්නිවේදනය කළ හැකිය. ඔවුන් තම ජාලයෙන් පිටත කෙනෙකුට දත්ත සම්ප්‍රේෂණය කරන්නේ නම්, උපකාරයෙන් පමණි NATරවුටරය ඇතුළත (රවුටරය) සහ ඒ නිසා යටින් අනෙක් අයට දෘශ්‍යමාන වේ IP router address එක එයාලගේ බාහිර IPලිපිනය. මේ අනුව, නෝඩය p1අර තියෙන්නේ අභ්යන්තරය IP = 192.168.0.200 සහ බාහිර IP = 10.50.200.5 , අවසාන ලිපිනය ඔහුගේ ජාලයේ ඇති අනෙකුත් සියලුම ධාරකයන්ට බාහිර වීමත් සමඟ. නෝඩ් සඳහා තත්වය සමාන වේ p2. එමනිසා, ඔවුන්ගේ අභ්යන්තර (තමන්ගේම) පමණක් නම් ඔවුන්ගේ සම්බන්ධතාවය කළ නොහැකි ය IPලිපිනයන්. ඔබට බාහිර ලිපින භාවිතා කළ හැකිය, එනම් රවුටර වල ලිපින, නමුත් එකම පුද්ගලික ජාලයේ සියලුම නෝඩ් වලට එකම බාහිර ලිපිනයක් ඇති බැවින් මෙය තරමක් අපහසුය. මෙම ගැටළුව යාන්ත්රණය මගින් විසඳනු ලැබේ NAT

අපි තවමත් ඔවුන්ගේ අභ්යන්තර ලිපිනයන් හරහා නෝඩ් සම්බන්ධ කිරීමට තීරණය කළහොත් කුමක් සිදුවේද? දත්ත ජාලයෙන් ඉවත් නොවනු ඇත. බලපෑම වැඩි දියුණු කිරීම සඳහා, අවසාන රූපයේ දැක්වෙන තත්වය ඔබට සිතාගත හැකිය - නෝඩ් දෙකටම එකම අභ්යන්තර ලිපින ඇත. ඔවුන් ඒවා සන්නිවේදනය කිරීමට භාවිතා කරන්නේ නම්, එක් එක් නෝඩය තමන් සමඟ සන්නිවේදනය කරනු ඇත.

WebRTCප්රොටෝකෝලය භාවිතයෙන් එවැනි ගැටළු සමඟ සාර්ථකව කටයුතු කරයි ICE, කෙසේ වෙතත්, අතිරේක සේවාදායකයන් භාවිතා කිරීම අවශ්ය වේ ( STUN, හැරවීම) මේ සියල්ල පහතින්.

WebRTC හි අදියර දෙකක්

ප්රොටෝකෝලය හරහා නෝඩ් දෙකක් සම්බන්ධ කිරීමට WebRTC(හෝ සරලව RTCදෙකක් සම්බන්ධ නම් iPhone'අ) සම්බන්ධතාවයක් ඇති කර ගැනීම සඳහා මූලික පියවර කිහිපයක් ගත යුතුය. මෙය පළමු අදියරයි - සම්බන්ධතාවයක් ස්ථාපනය කිරීම. දෙවන අදියර වන්නේ වීඩියෝ දත්ත සම්ප්රේෂණය කිරීමයි.

තාක්ෂණය වුවද එය වහාම පැවසිය යුතුය WebRTCඔහුගේ කාර්යයේදී බොහෝ දේ භාවිතා කරයි විවිධ ක්රමසන්නිවේදන ( TCPසහ UDP) සහ ඒවා අතර නම්‍යශීලී මාරුවක් ඇත, මෙම තාක්ෂණය සම්බන්ධතා දත්ත යැවීම සඳහා ප්‍රොටෝකෝලයක් නොමැත. පුදුමයක් නොවේ, මන්ද නෝඩ් දෙකක් සම්බන්ධ කරන්න p2pඑතරම් පහසු නැත. එබැවින්, එය කිහිපයක් තිබීම අවශ්ය වේ අතිරේකදත්ත හුවමාරු කිරීමේ ක්රමය, සම්බන්ධ නොවේ WebRTC. එය සොකට් මාරු කිරීම, ප්රොටෝකෝලය විය හැකිය http, එය ප්රොටෝකෝලයක් පවා විය හැකිය SMTPහෝ රුසියානු පෝස්ට්. මෙම සම්ප්රේෂණ යාන්ත්රණය ප්රාථමිකදත්ත ලෙස හැඳින්වේ සංඥාව. බොහෝ තොරතුරු මාරු කිරීම අවශ්ය නොවේ. සියලුම දත්ත පෙළ ලෙස සම්ප්රේෂණය වන අතර එය වර්ග දෙකකට බෙදා ඇත - SDPසහ අයිස් අපේක්ෂකයා. පළමු වර්ගය තාර්කික සම්බන්ධතාවයක් ස්ථාපිත කිරීම සඳහා භාවිතා කරන අතර, දෙවනුව භෞතික එකක් සඳහා භාවිතා වේ. මේ ගැන වැඩි විස්තර පසුව, නමුත් දැනට, එය මතක තබා ගැනීම වැදගත් වේ WebRTCවෙනත් නෝඩයකට සම්ප්‍රේෂණය කිරීමට අවශ්‍ය තොරතුරු කිහිපයක් අපට ලබා දෙනු ඇත. අපි අවශ්ය සියලු තොරතුරු සම්ප්රේෂණය කළ පසු, නෝඩ් සම්බන්ධ කිරීමට හැකි වන අතර අපගේ උපකාරය තවදුරටත් අවශ්ය නොවේ. ඒ නිසා අපි ක්රියාත්මක කළ යුතු සංඥා යාන්ත්රණය වෙනම, භාවිතා කරනු ඇත සම්බන්ධ වූ විට පමණි, සහ වීඩියෝ දත්ත සම්ප්‍රේෂණය කිරීමේදී භාවිතා නොකරනු ඇත.

එබැවින් අපි පළමු අදියර, සම්බන්ධතා සැකසුම් අදියර දෙස බලමු. එය අයිතම කිහිපයකින් සමන්විත වේ. සම්බන්ධතාවය ආරම්භ කරන නෝඩය සඳහා මෙම අදියර මුලින්ම සලකා බලන්න, පසුව බලා සිටීම සඳහා.

  • ආරම්භකයා (ඇමතුම්කරු - අමතන්නා):
    1. වීඩියෝ දත්ත සම්ප්‍රේෂණය ආරම්භ කිරීමට පිරිනැමීම (createOffer)
    2. ඔබේ ලබා ගැනීම SDP SDP)
    3. ඔබේ ලබා ගැනීම අයිස් අපේක්ෂකයා අයිස් අපේක්ෂකයා)
  • ඇමතුම බලා සිටීම ( කැඳවුම්කරු):
    1. දේශීය (තමන්ගේම) මාධ්‍ය ප්‍රවාහයක් ලබා ගැනීම සහ එය සම්ප්‍රේෂණය සඳහා සැකසීම (getUserMediaStream)
    2. වීඩියෝ දත්ත හුවමාරුවක් ආරම්භ කිරීමට සහ පිළිතුරක් සෑදීමට පිරිනැමීමක් ලබා ගන්න (createAnswer)
    3. ඔබේ ලබා ගැනීම SDPවස්තුව සහ එය සංඥා යාන්ත්‍රණය හරහා ගමන් කිරීම ( SDP)
    4. ඔබේ ලබා ගැනීම අයිස් අපේක්ෂකයාවස්තූන් සහ සංඥා යාන්ත්‍රණය හරහා ඒවා සම්ප්‍රේෂණය කිරීම ( අයිස් අපේක්ෂකයා)
    5. දුරස්ථ (විදේශීය) මාධ්‍ය ප්‍රවාහයක් ලබා ගැනීම සහ එය තිරය මත ප්‍රදර්ශනය කිරීම (onAddStream)

වෙනස ඇත්තේ දෙවන ඡේදයේ පමණි.

පියවරවල පෙනෙන සංකීර්ණත්වය තිබියදීත්, ඇත්ත වශයෙන්ම ඒවායින් තුනක් තිබේ: ඔබේම මාධ්‍ය ප්‍රවාහයක් යැවීම (p. 1), සම්බන්ධතා පරාමිතීන් සැකසීම (p. 2-4), වෙනත් කෙනෙකුගේ මාධ්‍ය ප්‍රවාහයක් ලබා ගැනීම (p. 5). වඩාත්ම දුෂ්කර වන්නේ දෙවන පියවරයි, මන්ද එය කොටස් දෙකකින් සමන්විත වේ: ස්ථාපිත කිරීම භෞතිකසහ තාර්කිකසම්බන්ධතා. පළමුවැන්න පෙන්නුම් කරයි මාර්ගය, එක් ජාල නෝඩයක සිට තවත් ජාල නෝඩයකට ලබා ගැනීම සඳහා කුමන පැකට් යා යුතුද යන්න. දෙවැන්න පෙන්නුම් කරයි වීඩියෝ/ශ්‍රව්‍ය පරාමිතීන්- භාවිතා කළ යුතු ගුණාත්මකභාවය, කුමන කෝඩෙක් භාවිතා කළ යුතුද.

මානසික වේදිකාව createOfferහෝ නිර්මාණය පිළිතුරමාරු කිරීමේ අදියරවලට සම්බන්ධ විය යුතුය SDPසහ අයිස් අපේක්ෂකයාවස්තූන්.

මූලික ආයතන

මාධ්‍ය ප්‍රවාහ (MediaStream)

ප්‍රධාන ආයතනය මාධ්‍ය ප්‍රවාහය, එනම් වීඩියෝ සහ ශ්‍රව්‍ය දත්ත, පින්තූර සහ ශබ්ද ප්‍රවාහයයි. මාධ්‍ය ප්‍රවාහ වර්ග දෙකක් තිබේ - දේශීය සහ දුරස්ථ. දේශීය එක ආදාන උපාංග (කැමරාව, මයික්‍රොෆෝනය) සහ දුරස්ථ එක ජාලය හරහා දත්ත ලබා ගනී. මේ අනුව, සෑම නෝඩයකටම දේශීය හා දුරස්ථ නූල් දෙකම ඇත. තුල WebRTCප්‍රවාහ සඳහා අතුරු මුහුණතක් ඇත මාධ්ය ප්රවාහයසහ උප අතුරු මුහුණතක් ද ඇත LocalMediaStreamවිශේෂයෙන්ම දේශීය නූල් සඳහා. තුල JavaScriptඔබට හමුවිය හැක්කේ පළමු එක හා ඔබ භාවිතා කරන්නේ නම් පමණි lib jingle, එවිට දෙවැන්න ද හමුවිය හැකිය.

තුල WebRTCත්‍රෙඩ් එක ඇතුලේ තරමක් අවුල් සහගත ධුරාවලියක් තියෙනවා. සෑම ප්‍රවාහයක්ම මාධ්‍ය පීලි කිහිපයකින් සමන්විත විය හැක ( මාධ්ය ධාවන පථය), එය මාධ්‍ය නාලිකා කිහිපයකින් සමන්විත විය හැකිය ( MediaChannel) එමෙන්ම මාධ්‍ය ප්‍රවාහ කිහිපයක් ද තිබිය හැකිය.

අපි සෑම දෙයක්ම පිළිවෙලට සලකා බලමු. මෙය සිදු කිරීම සඳහා, අපි උදාහරණයක් මතක තබා ගනිමු. අපි හිතමු අපි අපේම වීඩියෝවක් පමණක් නොව, අපි යමක් ලිවීමට යන කඩදාසි කැබැල්ලක් ඇති අපගේ මේසයේ වීඩියෝවක් ද සම්ප්‍රේෂණය කිරීමට අවශ්‍ය බව. අපට වීඩියෝ දෙකක් (අපි + වගුව) සහ එක් ශ්රව්ය (අපි) අවශ්ය වනු ඇත. මෙම දත්ත බොහෝ විට දුර්වල ලෙස එකිනෙකා මත රඳා පවතින බැවින්, අප සහ වගුව විවිධ නූල් වලට බෙදිය යුතු බව පැහැදිලිය. එබැවින් අපට දෙකක් ලැබෙනු ඇත මාධ්ය ප්රවාහය'අ - එකක් අපට සහ එකක් මේසයට. පළමුවැන්න වීඩියෝ සහ ශ්‍රව්‍ය දත්ත යන දෙකම අඩංගු වන අතර දෙවැන්න වීඩියෝ පමණක් අඩංගු වේ (රූපය 4).

රූපය 4: වෙනස් මාධ්‍ය ප්‍රවාහ දෙකක්. එකක් අපට, එකක් අපේ මේසයට

මාධ්‍ය ප්‍රවාහයට අවම වශයෙන් දත්ත අඩංගු කිරීමේ හැකියාව ඇතුළත් විය යුතු බව වහාම පැහැදිලි වේ විවිධ වර්ග- වීඩියෝ සහ ශ්රව්ය. මෙය තාක්ෂණයේ දී සැලකිල්ලට ගනු ලබන අතර එබැවින් එක් එක් වර්ගයේ දත්ත මාධ්ය ධාවන පථයක් හරහා ක්රියාත්මක වේ. මාධ්ය ධාවන පථය. මාධ්‍ය ධාවන පථයට විශේෂ දේපලක් ඇත කාරුණික, අප ඉදිරියෙහි ඇති දේ තීරණය කරයි - වීඩියෝ හෝ ශ්රව්ය (රූපය 5)

රූපය 5: මාධ්‍ය ප්‍රවාහ සෑදී ඇත්තේ මාධ්‍ය පීලි වලින්

වැඩසටහනේ සෑම දෙයක්ම සිදු වන්නේ කෙසේද? අපි මාධ්‍ය ප්‍රවාහ දෙකක් ඇති කරනවා. ඊට පස්සේ අපි වීඩියෝ ට්‍රැක් දෙකක් සහ ඕඩියෝ ට්‍රැක් එකක් හදනවා. අපි කැමරා සහ මයික්‍රෆෝනය වෙත ප්‍රවේශය ලබා ගනිමු. කුමන උපාංගයක් භාවිතා කළ යුතුද යන්න අපි එක් එක් ධාවන පථයට කියමු. පළමු මාධ්‍ය ප්‍රවාහයට වීඩියෝ සහ ශ්‍රව්‍ය පථයක් සහ දෙවන මාධ්‍ය ප්‍රවාහයට වෙනත් කැමරාවකින් වීඩියෝ පටයක් එක් කරමු.

නමුත් සම්බන්ධතාවයේ අනෙක් අන්තයේ ඇති මාධ්‍ය ප්‍රවාහයන් වෙන්කර හඳුනා ගන්නේ කෙසේද? මෙය සිදු කිරීම සඳහා, සෑම මාධ්‍ය ප්‍රවාහයකටම දේපලක් ඇත ලේබලය- ප්රවාහ ලේබලය, එහි නම (රූපය 6). මාධ්‍ය පීලි වලට එකම දේපල ඇත. බැලූ බැල්මට පෙනෙන්නේ වීඩියෝව වෙනත් ආකාරවලින් ශබ්දයෙන් වෙන්කර හඳුනාගත හැකි බවයි.

රූපය 6: මාධ්‍ය ප්‍රවාහ සහ ධාවන පථ ලේබල් මගින් හඳුනා ගැනේ

ඉතින්, සහ මාධ්‍ය ධාවන පථ ලේබලයක් හරහා හඳුනාගත හැකි නම්, අපගේ උදාහරණය සඳහා එකක් වෙනුවට මාධ්‍ය ප්‍රවාහ දෙකක් භාවිතා කිරීමට අවශ්‍ය වන්නේ ඇයි? සියල්ලට පසු, ඔබට එක් මාධ්‍ය ප්‍රවාහයක් මාරු කළ හැකි අතර එහි විවිධ පීලි භාවිතා කරන්න. අපි මාධ්‍ය ප්‍රවාහවල වැදගත් දේපලකට පැමිණ ඇත - ඒවා සමමුහුර්ත කරන්නමාධ්ය පීලි. විවිධ මාධ්‍ය ප්‍රවාහයන් එකිනෙක සමමුහුර්ත කර නැත, නමුත් එක් එක් මාධ්‍ය ප්‍රවාහය තුළ සියලුම පීලි එකම වේලාවක සෙල්ලම් කළා.

මේ අනුව, අපට අපගේ වචන, අපගේ හැඟීම් සහ අපගේ කඩදාසි කැබැල්ල එකවර වාදනය කිරීමට අවශ්‍ය නම්, එක් මාධ්‍ය ප්‍රවාහයක් භාවිතා කිරීම වටී. මෙය එතරම් වැදගත් නොවේ නම්, විවිධ ධාරාවන් භාවිතා කිරීම වඩා ලාභදායී වේ - පින්තූරය වඩාත් සුමට වනු ඇත.

සම්ප්‍රේෂණය අතරතුර ධාවන පථයක් අක්‍රිය කිරීමට අවශ්‍ය නම්, ඔබට දේපල භාවිතා කළ හැකිය සක්රීය කර ඇතමාධ්ය පීලි.

අවසානයේදී, ඔබ ස්ටීරියෝ ශබ්දය ගැන සිතා බැලිය යුතුය. ඔබ දන්නා පරිදි, ස්ටීරියෝ ශබ්දය වෙනස් ශබ්ද දෙකකි. ඒවගේම ඒවත් වෙනම යවන්න ඕන. මේ සඳහා නාලිකා භාවිතා වේ. MediaChannel. ශ්‍රව්‍ය මාධ්‍ය ධාවන පථයකට බොහෝ නාලිකා තිබිය හැක (උදාහරණයක් ලෙස, ඔබට 5+1 ශ්‍රව්‍ය අවශ්‍ය නම් 6). මාධ්‍ය ධාවන පථය තුළ, නාලිකා, ඇත්ත වශයෙන්ම ද සමමුහුර්ත කර ඇත. වීඩියෝ සඳහා, සාමාන්යයෙන් එක් නාලිකාවක් පමණක් භාවිතා කරයි, නමුත් කිහිපයක් භාවිතා කළ හැකිය, උදාහරණයක් ලෙස, ප්රචාරණ ආවරණ සඳහා.

සාරාංශ ගත කිරීමට: අපි වීඩියෝ සහ ශ්‍රව්‍ය දත්ත සම්ප්‍රේෂණය කිරීමට මාධ්‍ය ප්‍රවාහයක් භාවිතා කරමු. එක් එක් මාධ්‍ය ප්‍රවාහය තුළ, දත්ත සමමුහුර්ත කර ඇත. අපට සමමුහුර්තකරණය අවශ්‍ය නැතිනම් අපට බහු මාධ්‍ය ප්‍රවාහ භාවිතා කළ හැක. එක් එක් මාධ්‍ය ප්‍රවාහය තුළ මාධ්‍ය පීලි වර්ග දෙකක් ඇත - වීඩියෝ සහ ශ්‍රව්‍ය සඳහා. සාමාන්‍යයෙන් පීලි දෙකකට වඩා නැත, නමුත් ඔබට විවිධ වීඩියෝ කිහිපයක් (මැදිහත්කරුගේ සහ ඔහුගේ මේසයේ) මාරු කිරීමට අවශ්‍ය නම් තවත් ඒවා තිබිය හැකිය. සෑම ධාවන පථයක්ම නාලිකා කිහිපයකින් සමන්විත විය හැකිය, එය සාමාන්‍යයෙන් ස්ටීරියෝ ශබ්දය සඳහා පමණක් භාවිතා වේ.

සරලම වීඩියෝ කතාබස් තත්වයේදී, අපට එක් ප්‍රාදේශීය මාධ්‍ය ප්‍රවාහයක් ඇත, එය පීලි දෙකකින් සමන්විත වනු ඇත - වීඩියෝ පථයක් සහ ශ්‍රව්‍ය පථයක්, ඒ සෑම එකක්ම එක් ප්‍රධාන නාලිකාවකින් සමන්විත වේ. වීඩියෝ පථය කැමරාවට වගකිව යුතු අතර, ශ්‍රව්‍ය පථය මයික්‍රොෆෝනය සඳහා වන අතර මාධ්‍ය ප්‍රවාහය දෙකෙහිම කන්ටේනරය වේ.

සැසි විස්තරය (SDP)

විවිධ පරිගණකවල සෑම විටම විවිධ කැමරා, මයික්‍රොෆෝන, වීඩියෝ කාඩ්පත් සහ වෙනත් උපකරණ ඇත. ඔවුන් සතුව ඇති බොහෝ විකල්ප තිබේ. ජාල නෝඩ් දෙකක් අතර මාධ්‍ය දත්ත හුවමාරුව සඳහා මේ සියල්ල සම්බන්ධීකරණය කළ යුතුය. WebRTCඑය ස්වයංක්‍රීයව සිදු කර නිර්මාණය කරයි විශේෂ වස්තුව- සැසි විස්තරය SDP. මෙම වස්තුව වෙනත් නෝඩයකට යවන්න, ඔබට මාධ්‍ය දත්ත යැවිය හැක. තවම වෙනත් නෝඩයක් සමඟ සම්බන්ධයක් නොමැත.

මේ සඳහා ඕනෑම සංඥා යාන්ත්රණයක් භාවිතා කරයි. SDPසොකට් හරහා පවා, පුද්ගලයෙකුට පවා (දුරකථනයෙන් වෙනත් නෝඩයකට කියන්න), රුසියානු පෝස්ට් මගින් පවා සම්ප්රේෂණය කළ හැකිය. සෑම දෙයක්ම ඉතා සරලයි - ඔබට සූදානම් කළ එකක් ලබා දෙනු ඇත SDPසහ එය යැවීමට අවශ්ය වේ. සහ අනෙක් පැත්තෙන් ලැබීමෙන් පසු - දෙපාර්තමේන්තුවට මාරු කිරීම WebRTC. සැසි හසුරුව පෙළ ලෙස ගබඩා කර ඇති අතර, ඔබට එය ඔබගේ යෙදුම්වල වෙනස් කළ හැක, නමුත් ඔබට සාමාන්‍යයෙන් අවශ්‍ය නොවේ. උදාහරණයක් ලෙස, ඩෙස්ක්ටොප්↔දුරකථනය සම්බන්ධ කරන විට, සමහර විට ඔබට අවශ්ය ශ්රව්ය කෝඩෙක් තෝරාගැනීම බල කිරීමට අවශ්ය වේ.

සාමාන්යයෙන්, සම්බන්ධතාවයක් ස්ථාපනය කිරීමේදී, උදාහරණයක් ලෙස, ඔබ යම් ලිපිනයක් සඳහන් කළ යුතුය URL. සංඥා යාන්ත්‍රණය හරහා ඔබ විසින්ම දත්ත ගමනාන්තයට යවන බැවින් මෙහි මෙය අවශ්‍ය නොවේ. දැක්වීමට WebRTCඅපට ස්ථාපනය කිරීමට අවශ්‍ය දේ p2pඔබට createOffer ශ්‍රිතය ඇමතීමට අවශ්‍ය සම්බන්ධතාවය. මේ ෆන්ෂන් එකට කතා කරලා විශේෂයක් දුන්නට පස්සේ ආපසු අමතන්න'a නිර්මාණය වනු ඇත SDPවස්තුව සහ එයම සම්මත කර ඇත ආපසු අමතන්න. ඔබට අවශ්‍ය වන්නේ මෙම වස්තුව ජාලය හරහා වෙනත් නෝඩයකට (interlocutor) මාරු කිරීමයි. ඊට පසු, අනෙක් කෙළවරේ, සංඥා යාන්ත්රණය හරහා දත්ත පැමිණෙනු ඇත, එනම් මෙය SDPවස්තුවක්. මෙම සැසි විස්තරය මෙම නෝඩයට ආගන්තුක වන අතර එබැවින් ප්‍රයෝජනවත් තොරතුරු දරයි. මෙම වස්තුව ලැබීම සම්බන්ධතාවය ආරම්භ කිරීමට සංඥාවක් වේ. එබැවින්, ඔබ මෙයට එකඟ විය යුතු අතර createAnswer ශ්‍රිතය අමතන්න. එය createOffer හි සම්පූර්ණ ප්‍රතිසමයකි. ඔබේ වෙත ආපසු ආපසු අමතන්නප්‍රාදේශීය සැසි විස්තරයක් සමත් වන අතර එය සංඥා යාන්ත්‍රණය හරහා ආපසු යැවීමට අවශ්‍ය වනු ඇත.

ඔබට createAnswer ශ්‍රිතය ඇමතීමට හැක්කේ වෙනත් කෙනෙකුගේ ලැබීමෙන් පසුව පමණක් බව සඳහන් කිරීම වටී SDPවස්තුව. ඇයි? දේශීය නිසා SDP createAnswer කියන විට උත්පාදනය වන වස්තුව දුරස්ථ පාලකය මත රඳා පැවතිය යුතුය SDPවස්තුවක්. මෙම අවස්ථාවේදී පමණක් ඔබගේ වීඩියෝ සැකසුම් මැදිහත්කරුගේ සැකසුම් සමඟ සම්බන්ධීකරණය කළ හැකිය. එසේම, දේශීය මාධ්‍ය ප්‍රවාහය ලැබෙන තුරු createAnswer සහ createOffer අමතන්න එපා - ඔවුන්ට ලිවීමට කිසිවක් නැත. SDPවස්තුවක්.

තුළ සිට WebRTCඑය සංස්කරණය කිරීමට හැකි ය SDPවස්තුව, පසුව දේශීය හසුරුව ලබා ගැනීමෙන් පසුව, එය සැකසිය යුතුය. සමත් වීම ටිකක් අමුතු දෙයක් ලෙස පෙනෙන්නට පුළුවන WebRTCඇය විසින්ම අපට ලබා දුන් දේ, නමුත් එය ප්‍රොටෝකෝලයයි. ඔබට දුරස්ථ හසුරුව ලැබුණු විට, ඔබ එය ද සැකසිය යුතුය. එමනිසා, ඔබ එක් නෝඩයක් මත විස්තර දෙකක් ස්ථාපනය කළ යුතුය - ඔබේම සහ වෙනත් කෙනෙකුගේ (එනම්, දේශීය සහ දුරස්ථ).

එවැනි පසු අතට අත දීමනෝඩ් එක එකාගේ කැමැත්ත ගැන දන්නවා. උදාහරණයක් ලෙස, නෝඩය නම් 1 codecs සඳහා සහය දක්වයි සහ බී, සහ නෝඩය 2 codecs සඳහා සහය දක්වයි බීසහ සී, එවිට, සෑම නෝඩයක්ම තමන්ගේම සහ තවත් අයෙකුගේ විස්තර දන්නා බැවින්, නෝඩ් දෙකම කෝඩෙක් එකක් තෝරා ගනු ඇත. බී(රූපය 7). සම්බන්ධතා තර්කනය දැන් ස්ථාපිත කර ඇති අතර මාධ්‍ය ප්‍රවාහ සම්ප්‍රේෂණය කළ හැකිය, නමුත් තවත් ගැටළුවක් ඇත - නෝඩ් තවමත් සම්බන්ධ වන්නේ සංඥා යාන්ත්‍රණයකින් පමණි.


රූපය 7: කෝඩෙක් සාකච්ඡා

අපේක්ෂකයින් (අයිස් අපේක්ෂකයා)

තාක්ෂණ WebRTCඑයාගේ අලුත් ක්‍රමවේදයෙන් අපිව අවුල් කරන්න හදනවා. සම්බන්ධතාවයක් ස්ථාපනය කිරීමේදී, ඔබට සම්බන්ධ වීමට අවශ්‍ය නෝඩයේ ලිපිනය සඳහන් කර නොමැත. මුලින්ම ස්ථාපනය කර ඇත තාර්කිකසම්බන්ධතාවය, නැත භෞතික, සෑම විටම ප්රතිවිරුද්ධය සිදු කර ඇතත්. නමුත් අපි තෙවන පාර්ශවීය සංඥා යාන්ත්රණයක් භාවිතා කරන බව අමතක නොකළහොත් මෙය අමුතු දෙයක් ලෙස නොපෙනේ.

එබැවින්, සම්බන්ධතාවය දැනටමත් ස්ථාපිත කර ඇත (තාර්කික සම්බන්ධතාවය), නමුත් ජාල නෝඩ් සඳහා දත්ත සම්ප්රේෂණය කිරීමට තවමත් ක්රමයක් නොමැත. සියල්ල එතරම් සරල නැත, නමුත් අපි සරලව ආරම්භ කරමු. නෝඩ් එකම පුද්ගලික ජාලයක තිබිය යුතුය. අප දැනටමත් දන්නා පරිදි, ඔවුන්ගේ අභ්යන්තරය හරහා පහසුවෙන් එකිනෙකා සමඟ සම්බන්ධ විය හැකිය IPලිපින (හෝ සමහර විට වෙනත්, භාවිතා නොකළහොත් TCP/IP).

සමහරු හරහා ආපසු අමතන්න'සහ WebRTCඅපට කියයි අයිස් අපේක්ෂකයාවස්තූන්. ඒවා පාඨමය ආකාරයෙන් ද එන අතර සැසි විස්තර කිරීම් මෙන්, ඒවා සංඥා යාන්ත්‍රණය හරහා යැවිය යුතුය. සැසි විස්තරයේ කැමරාවේ සහ මයික්‍රොෆෝන මට්ටමේ අපගේ සැකසුම් පිළිබඳ තොරතුරු අඩංගු වූයේ නම්, අපේක්ෂකයින් ජාලයේ අපගේ ස්ථානය පිළිබඳ තොරතුරු අඩංගු වේ. ඒවා වෙනත් නෝඩයකට මාරු කරන්න, ඔහුට භෞතිකව අප හා සම්බන්ධ වීමට හැකි වනු ඇත, ඔහු දැනටමත් සැසි විස්තරයක් ඇති බැවින්, ඔහුට තාර්කිකව සම්බන්ධ කළ හැකි අතර දත්ත "ගලා" ඇත. ඔහුගේ අපේක්ෂක වස්තුව අපට එවීමට ඔහු අමතක නොකරන්නේ නම්, එනම් ඔහු ජාලයේ සිටින ස්ථානය පිළිබඳ තොරතුරු, එවිට අපට ඔහු සමඟ සම්බන්ධ වීමට හැකි වනු ඇත. සම්භාව්‍ය සේවාදායක-සේවාදායක අන්තර් ක්‍රියාවෙන් තවත් එක් වෙනසක් අපි මෙහි සටහන් කරමු. HTTP සේවාදායකය සමඟ සන්නිවේදනය ඉල්ලීම්-ප්‍රතිචාර යෝජනා ක්‍රමයට අනුව සිදු වේ, සේවාදායකයා සේවාදායකයට දත්ත යවයි, එය ක්‍රියාවට නංවා එය හරහා යවයි ඉල්ලීම් පැකේජයේ දක්වා ඇති ලිපිනය. තුල WebRTCදැනගත යුතුයි ලිපින දෙකක්සහ දෙපැත්තෙන්ම ඒවා සම්බන්ධ කරන්න.

සැසි හැසිරවීම් වලින් ඇති වෙනස නම් දුරස්ථ අපේක්ෂකයින් පමණක් සැකසීමට අවශ්‍ය වීමයි. මෙහි සංස්කරණය කිරීම තහනම් වන අතර කිසිදු ප්‍රතිලාභයක් ගෙන දිය නොහැක. සමහර ක්‍රියාත්මක කිරීම් වලදී WebRTCඅපේක්ෂකයින් සැකසිය යුත්තේ සැසි හැසිරවීම් සැකසීමෙන් පසුව පමණි.

එක් සැසි විස්තරයක් පමණක් තිබුනේ ඇයි, නමුත් බොහෝ අපේක්ෂකයින් සිටිය හැක්කේ ඇයි? ජාලයේ පිහිටීම තීරණය කළ හැක්කේ එහි අභ්යන්තරයෙන් පමණක් නොවේ IPලිපිනය, නමුත් රවුටරයේ බාහිර ලිපිනය, සහ අවශ්යයෙන්ම එකක් නොවේ, මෙන්ම ලිපින හැරවීමසේවාදායකයන්. ඡේදයේ ඉතිරි කොටස අපේක්ෂකයින් සහ විවිධ පුද්ගලික ජාල වලින් නෝඩ් සම්බන්ධ කරන්නේ කෙසේද යන්න පිළිබඳ සවිස්තරාත්මක සාකච්ඡාවක් සඳහා කැප කෙරේ.

එබැවින්, නෝඩ් දෙකක් එකම ජාලයක ඇත (රූපය 8). ඔවුන් හඳුනා ගන්නේ කෙසේද? භාවිතා කිරීම මගින් IPලිපිනයන්. වෙන මගක් නෑ. ඇත්ත, ඔබට තවමත් විවිධ ප්‍රවාහන භාවිතා කළ හැක ( TCPසහ UDP) සහ විවිධ වරායන්. අපේක්ෂක වස්තුවේ අඩංගු තොරතුරු මෙයයි - IP, වරාය, ප්රවාහනසහ තවත්. උදාහරණයක් ලෙස, භාවිතා කරමු UDPප්රවාහනය සහ 531 වරාය.

රූපය 8: නෝඩ් දෙකක් එකම ජාලයක ඇත

එතකොට අපි node එකක නම් p1, එම WebRTCඑවැනි අපේක්ෂක වස්තුවක් අපට ලබා දෙනු ඇත - . මෙය නිශ්චිත ආකෘතියක් නොවේ, නමුත් රූප සටහනක් පමණි. අපි ගැටයක නම් p2, එවිට අපේක්ෂකයා වේ . සංඥා යාන්ත්රණය හරහා p1අපේක්ෂකයෙකු ලැබෙනු ඇත p2(එනම් නෝඩ් ස්ථානය p2, එනම් ඔහුගේ IPසහ වරාය) ඉන්පසු p1සමඟ සම්බන්ධ විය හැක p2සෘජුවම. වඩාත් නිවැරදි, p1ලිපිනයට දත්ත යවනු ඇත 10.50.150.3:531 ඔවුන් ළඟා වනු ඇතැයි බලාපොරොත්තුවෙන් p2. මෙම ලිපිනය නෝඩයකට අයත් වුවද කමක් නැත p2හෝ සමහර අතරමැදියෙක්. එකම වැදගත් දෙය නම් මෙම ලිපිනය හරහා දත්ත යවනු ලබන අතර ළඟා විය හැකිය p2.

නෝඩ් එකම ජාලයක පවතින තාක් - සෑම දෙයක්ම සරල සහ පහසුයි - සෑම නෝඩයකටම ඇත්තේ එක් අපේක්ෂක වස්තුවක් පමණි (සෑම විටම එහිම අර්ථය, එනම් ජාලය තුළ එහි පිහිටීම). නමුත් නෝඩ් ඇති විට තවත් බොහෝ අපේක්ෂකයින් සිටිනු ඇත විවිධජාල.

අපි වඩාත් සංකීර්ණ නඩුවකට යමු. එක් නෝඩයක් රවුටරයට පිටුපසින් (වඩාත් නිවැරදිව, NAT පිටුපස) ඇති අතර, දෙවන නෝඩය මෙම රවුටරය සමඟ එකම ජාලය තුළ ඇත (උදාහරණයක් ලෙස, අන්තර්ජාලයේ) (රූපය 9).

රූපය 9: NAT පිටුපසින් එක් සත්කාරක, තවත් නොවේ

මෙම නඩුවේ ගැටලුවට විශේෂ විසඳුමක් ඇත, එය අපි දැන් සලකා බලමු. ගෙදර රවුටරයසාමාන්යයෙන් මේසයක් අඩංගු වේ NAT. මෙය රවුටරයේ පුද්ගලික ජාලය තුළ ඇති නෝඩ් වලට ප්‍රවේශ වීමට ඉඩ සලසන විශේෂ යාන්ත්‍රණයකි, උදාහරණයක් ලෙස වෙබ් අඩවි.

අපි හිතමු web server එක කෙලින්ම අන්තර්ජාලයට සම්බන්ධයි, ඒ කියන්නේ ඒකට public එකක් තියෙනවා කියලා IP* ලිපිනය. ගැටයක් වෙන්න දෙන්න p2. ගැටය p1(වෙබ් සේවාදායකයා) ලිපිනයට ඉල්ලීමක් යවයි 10.50.200.10 . පළමුව, දත්ත රවුටරයට යයි r1, හෝ ඒ වෙනුවට ඔහුගේ අභ්යන්තරයඅතුරුමුහුණත 192.168.0.1 . ඊට පසු, රවුටරය මූලාශ්ර ලිපිනය මතක තබා ගනී (ලිපිනය p1) සහ එය විශේෂ වගුවකට ඇතුල් කරයි NAT, ඉන්පසු මූලාශ්‍ර ලිපිනය එයටම වෙනස් කරයි( p1 r1) තවදුරටත්, අනුව බාහිරඅතුරුමුහුණත, රවුටරය වෙබ් සේවාදායකයට කෙලින්ම දත්ත යවයි p2. වෙබ් සේවාදායකය දත්ත සකසයි, ප්‍රතිචාරයක් ජනනය කරයි, සහ එය ආපසු යවයි. රවුටරය වෙත යවයි r1, ආපසු එන ලිපිනයේ සිටින්නේ ඔහු බැවින් (රවුටරය ලිපිනය තමන්ගේම ලෙස වෙනස් කළේය). රවුටරය දත්ත ලබා ගනී, මේසය දෙස බලයි NATසහ දත්ත node වෙත යවයි p1. මෙහි අතරමැදියෙකු ලෙස රවුටරය ක්‍රියා කරයි.

නමුත් අභ්‍යන්තර ජාලයෙන් නෝඩ් කිහිපයක් එකවර බාහිර ජාලයට පිවිසෙන්නේ නම් කුමක් කළ යුතුද? ප්‍රතිචාරය ආපසු යැවිය යුත්තේ කාටද යන්න රවුටරය තේරුම් ගන්නේ කෙසේද? සමඟ මෙම ගැටළුව විසඳනු ලැබේ වරායන්. රවුටරය එහි ධාරක ලිපිනය ප්‍රතිස්ථාපනය කරන විට, එය වරාය ද ප්‍රතිස්ථාපනය කරයි. නෝඩ් දෙකක් අන්තර්ජාලයට පිවිසෙන්නේ නම්, රවුටරය ඔවුන්ගේ මූලාශ්ර වරායන් සමඟ ප්රතිස්ථාපනය කරයි විවිධ. එවිට, වෙබ් සේවාදායකයෙන් පැකට් එක නැවත රවුටරයට පැමිණි විට, මෙම පැකට්ටුව පවරා ඇත්තේ කාටද යන්න රවුටරය විසින් තේරුම් ගනු ඇත. උදාහරණයක් පහත දැක්වේ.

තාක්ෂණය වෙත නැවත යන්න WebRTC, හෝ ඒ වෙනුවට, භාවිතා කරන එහි කොටස වෙත ICEප්රොටෝකෝලය (එබැවින් අයිස්අපේක්ෂකයින්). ගැටය p2එක් අපේක්ෂකයෙකු ඇත (ජාලයේ එහි පිහිටීම - 10.50.200.10 ), සහ නෝඩය p1, NAT සමඟ රවුටරයක් ​​පිටුපස පිහිටා ඇති, අපේක්ෂකයින් දෙදෙනෙකු සිටිනු ඇත - දේශීය ( 192.168.0.200 ) සහ රවුටර අපේක්ෂකයා ( 10.50.200.5 ) පළමු එක ප්‍රයෝජනවත් නොවේ, නමුත් එය කෙසේ වෙතත් ජනනය වේ WebRTCදුරස්ථ ධාරකය ගැන තවමත් කිසිවක් දන්නේ නැත - එය එකම ජාලයේ හෝ නොවිය හැකිය. දෙවන අපේක්ෂකයා ප්‍රයෝජනවත් වනු ඇති අතර, අප දැනටමත් දන්නා පරිදි, වරාය වැදගත් කාර්යභාරයක් ඉටු කරනු ඇත ( හරහා යාමට NAT).

මේස ඇතුළත් කිරීම NATදත්ත අභ්යන්තර ජාලයෙන් පිටවන විට පමණක් ජනනය වේ. එබැවින්, නෝඩය p1පළමුව දත්ත සම්ප්‍රේෂණය කළ යුතු අතර ඉන් පසුව පමණක් node හි දත්ත p2 node වෙත ලබා ගත හැක p1.

ප්රායෝගිකව නෝඩ් දෙකමපිටුපසින් සිටිනු ඇත NAT. වගුවක ප්‍රවේශයක් සෑදීමට NATසෑම රවුටරයකම, නෝඩ් දුරස්ථ නෝඩයට යමක් යැවිය යුතුය, නමුත් මෙවර පළමුවැන්නට දෙවැන්නට ළඟා විය නොහැක, නැතහොත් අනෙක් අතට. මෙයට හේතුව නෝඩ් ඔවුන්ගේ බාහිරව නොදැන සිටීමයි IPලිපින, සහ අභ්යන්තර ලිපින වෙත දත්ත යැවීම අර්ථ විරහිත ය.

කෙසේ වෙතත්, බාහිර ලිපින දන්නේ නම්, සම්බන්ධතාවය පහසුවෙන් ස්ථාපිත වනු ඇත. පළමු නෝඩය දෙවන නෝඩයේ රවුටරයට දත්ත යවන්නේ නම්, රවුටරය එහි වගුව නිසා ඒවා නොසලකා හරිනු ඇත. NATහිස්ව තිබියදී. කෙසේ වෙතත්, වගුවේ පළමු නෝඩයේ රවුටරයේ NATවාර්තාවක් අවශ්‍ය විය. දැන් දෙවන නෝඩය පළමු නෝඩයේ රවුටරයට දත්ත යවන්නේ නම්, රවුටරය ඒවා පළමු නෝඩයට සාර්ථකව සම්ප්‍රේෂණය කරයි. දැන් මේසය NATදෙවන රවුටරයේ ඔබට අවශ්‍ය දත්ත තිබේ.

ගැටලුව වන්නේ ඔබේ බාහිර දැනගැනීම සඳහා ය IPලිපිනය, ඔබට පිහිටා ඇති නෝඩයක් අවශ්‍ය වේ පොදු ජාලය. මෙම ගැටළුව විසඳීම සඳහා, අන්තර්ජාලයට සෘජුවම සම්බන්ධ වන අතිරේක සේවාදායකයන් භාවිතා කරනු ලැබේ. ඔවුන්ගේ උපකාරයෙන්, මේසයේ නිධන්ගත වාර්තා ද නිර්මාණය වේ. NAT.

STUN සහ TURN සේවාදායකයන්

ආරම්භයේදී WebRTCඇත STUNසහ හැරවීමසේවාදායකයන්, අපි එය ලෙස හඳුන්වනු ඇත ICEසේවාදායකයන්. සේවාදායකයන් නිශ්චිතව දක්වා නොමැති නම්, එකම ජාලයේ නෝඩ් පමණක් (එය නොමැතිව එයට සම්බන්ධ වේ NAT) සඳහා බව වහාම සටහන් කළ යුතුය 3g- ජාල භාවිතා කළ යුතුය හැරවීමසේවාදායකයන්.

STUN සේවාදායකයයනු හුදෙක් ආපසු ලිපිනයක්, එනම් යවන්නාගේ ධාරකයේ ලිපිනය ලබා දෙන අන්තර්ජාලයේ සේවාදායකයකි. රවුටරය පිටුපස ඇති නෝඩය ප්‍රවේශ වේ STUNහරහා යාමට සේවාදායකය NAT. වෙත පැමිණි පැකේජය STUNසේවාදායකයේ මූලාශ්‍ර ලිපිනය අඩංගු වේ - රවුටරයේ ලිපිනය, එනම් අපගේ නෝඩයේ බාහිර ලිපිනය. මෙම ලිපිනය STUNසේවාදායකය සහ ආපසු යවයි. මේ අනුව, නෝඩය එහි බාහිරව ලබා ගනී IPජාලයෙන් ප්‍රවේශ විය හැකි ලිපිනය සහ වරාය. තව දුරටත්, WebRTCමෙම ලිපිනය භාවිතයෙන් අතිරේක අපේක්ෂකයෙකු (බාහිර රවුටර ලිපිනය සහ වරාය) නිර්මාණය කරයි. දැන් මේසයේ NATරවුටරයට අවශ්‍ය වරායේ රවුටරයට යවන පැකට් අපගේ නෝඩයට යවන ප්‍රවේශයක් රවුටරයේ ඇත.

අපි උදාහරණයක් සමඟ මෙම ක්රියාවලිය දෙස බලමු.

උදාහරණය (STUN සේවාදායක මෙහෙයුම)

STUNසේවාදායකය විසින් දක්වනු ලැබේ s1. රවුටරය, පෙර මෙන්, හරහා r1, සහ node එක හරහා p1. ඔබ ද මේසය අනුගමනය කිරීමට අවශ්ය වනු ඇත NAT- අපි එය ලෙස දක්වමු r1_nat. එපමණක් නොව, මෙම වගුව සාමාන්යයෙන් විවිධ උපජාල නෝඩ් වලින් බොහෝ ඇතුළත් කිරීම් අඩංගු වේ - ඒවා ලබා නොදෙනු ඇත.

ඉතින්, ආරම්භයේදී අපට හිස් මේසයක් තිබේ r1_nat.

වගුව 2: පැකට් ශීර්ෂකය

ගැටය p1මෙම පැකට්ටුව රවුටරය වෙත යවයි r1(කෙසේ වෙතත්, විවිධ උපජාල භාවිතා කළ හැක විවිධ තාක්ෂණයන්) රවුටරයට මූලාශ්‍ර ලිපිනය ආදේශ කිරීම අවශ්‍ය වේ src IP, පැකට්ටුවේ සඳහන් කර ඇති ලිපිනය නිසැකවම බාහිර උපජාලය සඳහා සුදුසු නොවන බැවින්, එපමනක් නොව, මෙම පරාසයේ ලිපින වෙන් කර ඇති අතර, අන්තර්ජාලයේ එක ලිපිනයකටවත් එවැනි ලිපිනයක් නොමැත. රවුටරය පැකට් එකේ ආදේශකයක් සාදා නිර්මාණය කරයි නව වාර්තාවඔබේ මේසයේ r1_nat. මෙය සිදු කිරීම සඳහා, ඔහු වරාය අංකයක් ඉදිරිපත් කළ යුතුය. උපජාලයක් තුළ ඇති නෝඩ් කිහිපයකට බාහිර ජාලයකට ප්‍රවේශ විය හැකි බැවින්, පසුව වගුවේ ඇති බව මතක තබා ගන්න NATතබා ගත යුතුය අමතර තොරතුරුඑවිට රවුටරයට මෙම ධාරක කිහිපයෙන් කුමන ධාරකයක් සඳහාද යන්න තීරණය කළ හැක. රවුටරයට පෝට් එකක් එන්න දෙන්න 888 .

වෙනස් කරන ලද පැකේජ ශීර්ෂකය:

වගුව 4: NAT වගුව නව ප්‍රවේශයක් සමඟ යාවත්කාලීන කරන ලදී

මෙතන IPඋපජාලය සඳහා ලිපිනය සහ තොට හරියටම මුල් පැකට්ටුවට සමාන වේ. ඇත්ත වශයෙන්ම, පසුබැසීමේදී, ඒවා සම්පූර්ණයෙන්ම යථා තත්ත්වයට පත් කිරීමට අපට ක්රමයක් තිබිය යුතුය. IPබාහිර ජාලය සඳහා ලිපිනය රවුටරයේ ලිපිනය වන අතර වරාය රවුටරය විසින් සොයා ගන්නා ලද ලිපිනයට වෙනස් වී ඇත.

නෝඩය ඇති සැබෑ වරාය p1සම්බන්ධතාවයක් පිළිගනී - මෙය ඇත්ත වශයෙන්ම, 35777 , නමුත් සේවාදායකය දත්ත යවයි කල්පිතවරාය 888 , එය රවුටරය මගින් සැබෑ ලෙස වෙනස් කරනු ඇත 35777 .

ඉතින්, රවුටරය පැකට් ශීර්ෂයේ මූලාශ්‍ර ලිපිනය සහ වරාය වෙනස් කර වගුවට ප්‍රවේශයක් එක් කළේය NAT. දැන් පැකට්ටුව ජාලය හරහා සේවාදායකය වෙත යවනු ලැබේ, එනම් නෝඩය s1. දොරටුවේ, s1මෙම පැකේජය ඇත:

src IP Src PORT ඩෙස්ට් IP ඩෙස්ට් වරාය
10.50.200.5 888 12.62.100.200 6000

වගුව 5: STUN සේවාදායකයට පැකට්ටුවක් ලැබුණි

මුළු STUNලිපිනයෙන් පැකට්ටුවක් ලැබුණු බව සේවාදායකයා දනී 10.50.200.5:888 . දැන් සේවාදායකය මෙම ලිපිනය ආපසු යවයි. මෙතැනින් නතර වී අප දැන් සලකා බැලූ දේ නැවත බැලීම වටී. ඉහත වගු එහි කොටසකි ශීර්ෂකයපැකේජය, එය කිසිසේත්ම නොවේ අන්තර්ගතය. අපි අන්තර්ගතය ගැන කතා කළේ නැත, එය එතරම් වැදගත් නොවන බැවින් - එය කෙසේ හෝ ප්‍රොටෝකෝලයේ විස්තර කර ඇත STUN. දැන් අපි මාතෘකාවට අමතරව අන්තර්ගතය ද සලකා බලමු. එය සරල වන අතර රවුටරයේ ලිපිනය අඩංගු වේ - 10.50.200.5:888 අපි එය ගත්තත් ශීර්ෂකයපැකේජය. මෙය බොහෝ විට සිදු නොවේ, සාමාන්යයෙන් ප්රොටෝකෝල නෝඩ් වල ලිපිනයන් පිළිබඳ තොරතුරු ගැන සැලකිලිමත් නොවේ, පැකට් ඔවුන්ගේ ගමනාන්තයට ලබා දීම පමණක් වැදගත් වේ. මෙහිදී අපි නෝඩ් දෙකක් අතර මාර්ගයක් ස්ථාපිත කරන ප්රොටෝකෝලයක් සලකා බලමු.

දැන් අපට ප්‍රතිවිරුද්ධ දිශාවට යන දෙවන කණ්ඩායමක් ඇත:

වගුව 7: STUN සේවාදායකය මෙම අන්තර්ගතය සහිත පැකට්ටුවක් යවයි

මීලඟට, පැකට්ටුව රවුටරයේ බාහිර අතුරු මුහුණත වෙත ළඟා වන තුරු ජාලය හරහා ගමන් කරයි r1. පැකේජය ඔහු සඳහා අදහස් නොකරන බව රවුටරය තේරුම් ගනී. ඔහු එය තේරුම් ගන්නේ කෙසේද? මෙය සොයාගත හැක්කේ වරායෙන් පමණි. වරාය 888 ඔහු තම පුද්ගලික අරමුණු සඳහා භාවිතා නොකරයි, නමුත් යාන්ත්රණය සඳහා භාවිතා කරයි NAT. එබැවින්, රවුටරය මෙම වගුව දෙස බලයි. තීරුව දෙස බලයි බාහිර වරායසහ ගැලපෙන තන්තුවක් සොයයි ඩෙස්ට් වරායඑන පැකේජයෙන්, එනම් 888 .

අභ්යන්තර IP අභ්යන්තර වරාය බාහිර IP බාහිර වරාය
192.168.0.200 35777 10.50.200.5 888

වගුව 8: NAT වගුව

එවැනි රේඛාවක් පැවතීම අපගේ වාසනාවකි. එය වාසනාවන්ත නොවේ නම්, පැකට්ටුව සරලව ඉවත දමනු ඇත. දැන් ඔබට මෙම පැකට්ටුව යැවිය යුත්තේ කුමන උපජාල නෝඩ් වලටද යන්න තේරුම් ගත යුතුය. අපි ඉක්මන් නොවී, මෙම යාන්ත්‍රණයේ වරායන්හි වැදගත්කම නැවත සලකා බලමු. ඒ සමගම, උපජාලයේ නෝඩ් දෙකක් බාහිර ජාලයට ඉල්ලීම් යැවිය හැක. එවිට, පළමු නෝඩය සඳහා රවුටරය වරායක් සමඟ පැමිණියේ නම් 888 , ඊට පස්සේ තත්පරයට ඔහු වරායක් සමඟ එනවා 889 . මෙය සිදු වූ බව සිතන්න, එනම් මේසය r1_natඒ වගේ

වගුව 10: රවුටරය වංචා කිරීමේ ග්‍රාහක ලිපිනය

src IP Src PORT ඩෙස්ට් IP ඩෙස්ට් වරාය
12.62.100.200 6000 192.168.0.200 35777

වගුව 11: රවුටරය ග්රාහක ලිපිනය වෙනස් කළේය

පැකට්ටුව සාර්ථකව නෝඩ් වෙත පැමිණේ p1සහ පැකට්ටුවේ අන්තර්ගතය දෙස බැලීමෙන්, නෝඩය එහි බාහිර ගැන ඉගෙන ගනී IPලිපිනය, එනම් බාහිර ජාලයේ රවුටරයේ ලිපිනය. රවුටරය හරහා ගමන් කරන වරාය ද එය දනී NAT.

ඊළඟට කුමක් ද? මේ සියල්ලෙන් ඇති ප්‍රයෝජනය කුමක්ද? ප්රතිලාභය යනු වගුවේ ඇතුළත් කිරීමකි r1_nat. දැන් නම් කවුරුහරි රවුටරයට එවයි r1වරාය පැකේජය 888 , එවිට රවුටරය මෙම පැකට්ටුව සත්කාරක වෙත යොමු කරනු ඇත p1. මේ අනුව, සැඟවුණු නෝඩයට කුඩා පටු මාර්ගයක් නිර්මාණය විය p1.

ඉහත උදාහරණයෙන්, ඔබට එය ක්‍රියාත්මක වන ආකාරය පිළිබඳ යම් අදහසක් ලබා ගත හැකිය. NATසහ සාරය STUNසේවාදායකය. සාමාන්යයෙන්, යාන්ත්රණය ICEසහ STUN/TURNසේවාදායකයන් ඉලක්ක කර ඇත්තේ සීමාවන් ජය ගැනීම පමණි NAT.

නෝඩය සහ සේවාදායකය අතර රවුටර එකකට වඩා තිබිය හැක, නමුත් කිහිපයක්. මෙම අවස්ථාවෙහිදී, සේවාදායකයට සමාන ජාලයකට ඇතුල් වන පළමු රවුටරයේ ලිපිනය නෝඩයට ලැබෙනු ඇත. වෙනත් වචන වලින් කිවහොත්, අපි සම්බන්ධ වන රවුටරයේ ලිපිනය ලබා ගනිමු STUNසේවාදායකය. සදහා p2pසන්නිවේදනය යනු අපට අවශ්‍ය දෙයයි, එක් එක් රවුටරය තුළ අපට අවශ්‍ය රේඛාව මේසයට එකතු වන බව අප අමතක නොකළහොත් NAT. එබැවින් ආපසු යන මාර්ගය නැවතත් සුමට වනු ඇත.

හැරවීමසේවාදායකය වැඩි දියුණු කර ඇත STUNසේවාදායකය. මෙයින් එය වහාම අනුගමනය කරයි ඕනෑම දෙයක් හැරවීමසේවාදායකයට වැඩ කළ හැක්කේ කෙසේද සහ කෙසේද STUNසේවාදායකය. කෙසේ වෙතත්, ප්රතිලාභ ද ඇත. නම් p2pසන්නිවේදනය කළ නොහැක (ලෙස 3gජාල), ඉන්පසු සේවාදායකය පුනරාවර්තන මාදිලියට මාරු වේ ( රිලේ), එනම්, එය අතරමැදියෙකු ලෙස ක්රියා කරයි. ඇත්ත වශයෙන්ම, ඕනෑම දෙයක් ගැන p2pඑවිට එය ප්රශ්නයක් නොවේ, නමුත් යාන්ත්රණයේ රාමුවෙන් පිටත ICEනෝඩ් සිතන්නේ ඔවුන් කෙලින්ම සන්නිවේදනය කරන බවයි.

එය අවශ්ය වන්නේ කුමන අවස්ථාවලදීද? හැරවීමසේවාදායකය? ඇයි මදි STUNසේවාදායකයන්? කාරණය වන්නේ වර්ග කිහිපයක් තිබේ NAT. ඔවුන් එයම ප්රතිස්ථාපනය කරයි IPලිපිනය සහ වරාය, නමුත් ඒවායින් සමහරක් "ව්යාජකරණයට" එරෙහිව අතිරේක ආරක්ෂාවක් ඇත. උදාහරණයක් ලෙස, in සමමිතිකවගුව NATතවත් පරාමිති 2 ක් සුරකින ලදි - IPසහ දුරස්ථ ධාරකයේ වරාය. බාහිර ජාලයෙන් පැකට්ටුවක් හරහා ගමන් කරයි NATඅභ්‍යන්තර ජාලයට මූලාශ්‍ර ලිපිනය සහ වරාය වගුවේ සටහන් කර ඇති ඒවාට ගැලපෙන්නේ නම් පමණි. එබැවින්, අවධානය යොමු කිරීම STUNසේවාදායකය අසමත් වේ - වගුව NATලිපිනය සහ වරාය ගබඩා කරයි STUNසේවාදායකය සහ රවුටරයට පැකට්ටුවක් ලැබුණු විට WebRTCමැදිහත්කරු, ඔහු "අසත්‍ය" කර ඇති බැවින් ඔහුව ඉවත දමයි. ඔහු ආවේ නැත STUNසේවාදායකය.

මෙසේ හැරවීමමැදිහත්කරුවන් දෙදෙනාම පිටුපසින් සිටින විට සේවාදායකයක් අවශ්‍ය වේ සමමිතික NAT(එක් එක් තමන්ගේම සඳහා).

කෙටි සාරාංශය

ආයතන පිළිබඳ ප්‍රකාශ කිහිපයක් මෙන්න WebRTCසෑම විටම මතක තබා ගත යුතු ය. ඒවා ඉහත විස්තරාත්මකව විස්තර කර ඇත. කිසියම් ප්‍රකාශයක් ඔබට සම්පූර්ණයෙන්ම පැහැදිලි නැති බව පෙනේ නම්, අදාළ ඡේද නැවත කියවන්න.

  • මාධ්ය ප්රවාහය
    • වීඩියෝ සහ ශ්‍රව්‍ය දත්ත මාධ්‍ය ප්‍රවාහවලට අසුරා ඇත
    • මාධ්‍ය ප්‍රවාහයන් සෑදෙන මාධ්‍ය පීලි සමමුහුර්ත කරයි
    • විවිධ මාධ්‍ය ප්‍රවාහයන් සමමුහුර්ත නොවේ
    • මාධ්‍ය ප්‍රවාහයන් දේශීය සහ දුරස්ථ විය හැක, කැමරාවක් සහ මයික්‍රෆෝනයක් සාමාන්‍යයෙන් දේශීය එකට සම්බන්ධ වේ, දුරස්ථ ඒවා සංකේතාත්මක ආකාරයෙන් ජාලයෙන් දත්ත ලබා ගනී.
    • මාධ්‍ය පීලි වර්ග දෙකක් තිබේ - වීඩියෝ සඳහා සහ ශ්‍රව්‍ය සඳහා.
    • මාධ්‍ය ධාවන පථවලට සක්‍රිය / අක්‍රිය කිරීමේ හැකියාව ඇත
    • මාධ්‍ය ධාවන පථ සෑදී ඇත්තේ මාධ්‍ය නාලිකා මගිනි
    • මාධ්‍ය ධාවන පථ සෑදෙන මාධ්‍ය නාලිකා සමමුහුර්ත කරයි
    • මාධ්‍ය ප්‍රවාහ සහ මාධ්‍ය ධාවන පථවලට ඒවා වෙන්කර හඳුනාගත හැකි ලේබල ඇත
  • සැසි හසුරුව
    • ජාල නෝඩ් දෙකක් තාර්කිකව සම්බන්ධ කිරීමට සැසි විස්තරය භාවිතා කරයි
    • සැසි විස්තරය පිළිබඳ තොරතුරු ගබඩා කරයි ලබා ගත හැකි ක්රමවීඩියෝ සහ ශ්‍රව්‍ය දත්ත කේතනය කිරීම
    • WebRTCබාහිර සංඥා යාන්ත්‍රණයක් භාවිතා කරයි - සැසි විස්තර ඉදිරිපත් කිරීමේ කාර්යය ( sdp) යෙදුම මත වැටේ
    • තාර්කික සම්බන්ධතා යාන්ත්‍රණය අදියර දෙකකින් සමන්විත වේ - යෝජනාවක් ( පිරිනැමීම) සහ ප්රතිචාර ( පිළිතුර)
    • පිරිනැමීමකදී දේශීය මාධ්‍ය ප්‍රවාහයක් භාවිතා නොකර සැසි විස්තර උත්පාදනය කළ නොහැක ( පිරිනැමීම) සහ ප්‍රතිචාරයකදී දුරස්ථ සැසි විස්තරයක් භාවිතයෙන් තොරව කළ නොහැක ( පිළිතුර)
    • ප්රතිඵලයක් වශයෙන් විස්තරය ක්රියාත්මක කිරීම සඳහා ලබා දිය යුතුය WebRTC, සහ මෙම හසුරුව එකම ක්‍රියාත්මක කිරීමකින් දුරස්ථව හෝ දේශීයව ලබා ගත්තේද යන්න ගැටළුවක් නොවේ WebRTC
    • සැසි විස්තරය තරමක් සංස්කරණය කළ හැකිය
  • අපේක්ෂකයින්
    • අපේක්ෂක ( අයිස් අපේක්ෂකයා) යනු ජාලයේ නෝඩයේ ලිපිනයයි
    • නෝඩ් ලිපිනය ඔබේම විය හැකිය, නැතහොත් එය රවුටරයක ලිපිනය හෝ විය හැකිය හැරවීමසේවාදායකයන්
    • සෑම විටම බොහෝ අපේක්ෂකයින් සිටී
    • අපේක්ෂකයා සමන්විත වේ IPලිපිනය, වරාය සහ ප්රවාහන වර්ගය ( TCPහෝ UDP)
    • ජාලයක නෝඩ් දෙකක් අතර භෞතික සම්බන්ධතාවයක් ඇති කිරීමට අපේක්ෂකයින් භාවිතා කරයි
    • අපේක්ෂකයන් ද සංඥා යාන්ත්‍රණය හරහා යැවිය යුතුය
    • අයදුම්කරුවන් ද ක්‍රියාත්මක කිරීම් සමත් විය යුතුය WebRTC, නමුත් දුරස්ථ පමණි
    • සමහර ක්‍රියාත්මක කිරීම් වලදී WebRTCඅපේක්ෂකයින් සමත් විය හැක්කේ සැසි විස්තරය සැකසීමෙන් පසුව පමණි
  • STUN/TURN/ICE/NAT
    • NAT- බාහිර ජාලයකට ප්රවේශය ලබා දීම සඳහා යාන්ත්රණයක්
    • නිවසේ රවුටර විශේෂ වගුවකට සහය දක්වයි NAT
    • රවුටරය පැකට් වල ඇති ලිපින ප්‍රතිස්ථාපනය කරයි - පැකට්ටුව බාහිර ජාලයට ගියහොත් මූලාශ්‍ර ලිපිනය සහ ගමනාන්ත ලිපිනය අභ්‍යන්තර ජාලයේ ධාරක ලිපිනය සමඟ, පැකට්ටුව බාහිර ජාලයෙන් පැමිණියේ නම්
    • බාහිර ජාලයකට බහු-නාලිකා ප්රවේශය ලබා දීම සඳහා NATවරායන් භාවිතා කරයි
    • ICE- බයිපාස් යාන්ත්රණය NAT
    • STUNසහ හැරවීමසේවාදායකයන් - මඟ හැරීම සඳහා උපකාරක සේවාදායකයන් NAT
    • STUNසේවාදායකය ඔබට වගුවේ අවශ්‍ය ඇතුළත් කිරීම් සෑදීමට ඉඩ දෙයි NAT, සහ නෝඩයේ බාහිර ලිපිනය ද ආපසු ලබා දෙයි
    • හැරවීමසේවාදායකය සාමාන්‍යකරණය කරයි STUNයාන්ත්රණය සහ එය සෑම විටම ක්රියා කරයි
    • නරකම අවස්ථාවලදී හැරවීමසේවාදායකය අතරමැදියෙකු ලෙස භාවිතා වේ ( රිලේ), එනම් p2pසේවාදායක-සේවාදායක-සේවාදායක සම්බන්ධතාවයක් බවට පත් වේ.

WebRTC (Web Real Time Communications) යනු ප්ලගීන හෝ වෙනත් දිගු ස්ථාපනය නොකර බ්‍රවුසරයෙන් සහ බ්‍රවුසරයට තථ්‍ය කාලය තුළ ප්‍රවාහ ශ්‍රව්‍ය දත්ත, වීඩියෝ දත්ත සහ අන්තර්ගතය මාරු කිරීම විස්තර කරන ප්‍රමිතියකි. සම්මතය ඔබට බ්රවුසරය වීඩියෝ සම්මන්ත්රණ පර්යන්තයක් බවට පත් කිරීමට ඉඩ සලසයි, සන්නිවේදනය ආරම්භ කිරීමට වෙබ් පිටුවක් විවෘත කරන්න.

WebRTC යනු කුමක්ද?

මෙම ලිපියෙන් අපි සාමාන්‍ය පරිශීලකයෙකු සඳහා WebRTC තාක්‍ෂණය ගැන දැන ගැනීමට ඇති සියල්ල ආවරණය කරන්නෙමු. අපි ව්‍යාපෘතියේ වාසි සහ අවාසි සලකා බලමු, රහස් කිහිපයක් හෙළි කරමු, එය ක්‍රියා කරන ආකාරය, WebRTC භාවිතා කරන්නේ කොහේද සහ කුමක් සඳහාද යන්න ඔබට කියමු.

WebRTC ගැන ඔබ දැනගත යුතු දේ?

වීඩියෝ ප්‍රමිතීන් සහ තාක්ෂණයන්හි පරිණාමය

Sergey Yutsaitis, Cisco, Video+Conference 2016

WebRTC ක්‍රියා කරන ආකාරය

සේවාදායකයා පැත්තෙන්

  • පරිශීලකයා HTML5 ටැගයක් සහිත පිටුවක් විවෘත කරයි
  • බ්‍රවුසරය පරිශීලකයාගේ වෙබ් කැමරාවට සහ මයික්‍රෆෝනයට ප්‍රවේශය ඉල්ලයි.
  • පරිශීලක පිටුවේ ඇති JavaScript කේතය NAT සහ Firewall මඟ හැරීම සඳහා සම්බන්ධතා පරාමිති (IP ලිපින සහ WebRTC සේවාදායකයේ හෝ වෙනත් WebRTC සේවාලාභීන්ගේ වරායන්) පාලනය කරයි.
  • සේවාදායකයේ සම්මන්ත්‍රණය මිශ්‍ර කර ඇති මැදිහත්කරු හෝ ප්‍රවාහය පිළිබඳ තොරතුරු ලැබෙන විට, බ්‍රවුසරය භාවිතා කරන ශ්‍රව්‍ය සහ දෘශ්‍ය කෝඩෙක්ස් සාකච්ඡා කිරීමට පටන් ගනී.
  • WebRTC සේවාලාභීන් අතර දත්ත කේතනය කිරීමේ සහ ප්‍රවාහ කිරීමේ ක්‍රියාවලිය (අපගේ නඩුවේදී, බ්‍රව්සරය සහ සේවාදායකය අතර) ආරම්භ වේ.

WebRTC සේවාදායක පැත්තේ

සහභාගිවන්නන් දෙදෙනෙකු අතර දත්ත හුවමාරුව සඳහා වීඩියෝ සේවාදායකයක් අවශ්‍ය නොවේ, නමුත් ඔබට එක් සම්මන්ත්‍රණයකට සහභාගිවන්නන් කිහිප දෙනෙකු ඒකාබද්ධ කිරීමට අවශ්‍ය නම්, සේවාදායකයක් අවශ්‍ය වේ.



වීඩියෝ සේවාදායකයට විවිධ මූලාශ්‍රවලින් මාධ්‍ය ගමනාගමනය ලැබෙනු ඇත, එය පරිවර්තනය කර එය ටර්මිනලයක් ලෙස WebRTC භාවිතා කරන පරිශීලකයින්ට යවනු ඇත.

WebRTC සේවාදායකයට WebRTC සම වයසේ මිතුරන්ගෙන් මාධ්‍ය ගමනාගමනය ලැබෙනු ඇති අතර එය ඩෙස්ක්ටොප් යෙදුම් භාවිතයෙන් හෝ සම්මන්ත්‍රණ සහභාගිවන්නන්ට ලබා දෙනු ඇත. ජංගම උපාංග, යම්.

සම්මතයේ ප්රතිලාභ

  • මෘදුකාංග ස්ථාපනය අවශ්ය නොවේ.
  • ඉතා ඉහළ සන්නිවේදන ගුණාත්මක භාවයට ස්තූතියි:
    • නවීන වීඩියෝ (VP8, H.264) සහ ශ්‍රව්‍ය කෝඩෙක්ස් (Opus) භාවිතය.
    • සම්බන්ධතා කොන්දේසි වලට ප්රවාහයේ ගුණාත්මකභාවය ස්වයංක්රීයව ගැලපීම.
    • ගොඩනඟන ලද දෝංකාරය සහ ශබ්දය අවලංගු කිරීම.
    • සහභාගිවන්නන්ගේ මයික්‍රොෆෝනවල ස්වයංක්‍රීය මට්ටමේ පාලනය (AGC).
  • ඉහළ මට්ටමේ ආරක්ෂාව: සියලුම සම්බන්ධතා TLS සහ SRTP ප්‍රොටෝකෝල අනුව ආරක්ෂිත සහ සංකේතනය කර ඇත.
  • ඩෙස්ක්ටොප් වැනි අන්තර්ගතය ග්‍රහණය කර ගැනීම සඳහා ගොඩනඟන ලද යාන්ත්‍රණයක් ඇත.
  • HTML5 සහ JavaScript මත පදනම්ව ඕනෑම පාලන අතුරුමුහුණතක් ක්රියාත්මක කිරීමේ හැකියාව.
  • WebSockets භාවිතයෙන් ඕනෑම පසු-අන්ත පද්ධති සමඟ අතුරු මුහුණත ඒකාබද්ධ කිරීමේ හැකියාව.
  • විවෘත මූලාශ්ර ව්යාපෘතිය ප්රභව කේතය- ඔබේ නිෂ්පාදනය හෝ සේවාව තුළ ක්රියාත්මක කළ හැක.
  • සත්‍ය හරස් වේදිකා: එකම WebRTC යෙදුම ඕනෑම එකක සමානව ක්‍රියා කරයි මෙහෙයුම් පද්ධතිය, ඩෙස්ක්ටොප් හෝ ජංගම, බ්‍රවුසරය WebRTC සඳහා සහය දක්වයි. මෙය මෘදුකාංග සංවර්ධනය සඳහා බොහෝ සම්පත් ඉතිරි කරයි.

සම්මතයේ අවාසි

  • කණ්ඩායම් ශ්‍රව්‍ය සහ දෘශ්‍ය සම්මන්ත්‍රණ සංවිධානය කිරීමට, සහභාගිවන්නන්ගෙන් වීඩියෝ සහ ශ්‍රව්‍ය මිශ්‍ර කරන වීඩියෝ සම්මන්ත්‍රණ සේවාදායකයක් අවශ්‍ය වේ, මන්ද එන ප්‍රවාහ කිහිපයක් එකිනෙක සමමුහුර්ත කරන්නේ කෙසේදැයි බ්‍රවුසරය නොදනී.
  • සියලුම WebRTC විසඳුම් එකිනෙකට නොගැලපේ, මන්ද ප්‍රමිතිය විස්තර කරන්නේ වීඩියෝ සහ ශබ්දය සම්ප්‍රේෂණය කිරීම, ග්‍රාහකයින් ඇමතීම සඳහා ක්‍රම ක්‍රියාත්මක කිරීම අත්හැරීම, ඔවුන්ගේ ඇති බව නිරීක්ෂණය කිරීම, පණිවිඩ සහ ලිපිගොනු හුවමාරු කිරීම, කාලසටහන් කිරීම සහ විකුණුම්කරු සඳහා වෙනත් දේවල් පමණි.
  • වෙනත් වචන වලින් කිවහොත්, ඔබට එක් සංවර්ධකයෙකුගේ WebRTC යෙදුමකින් තවත් සංවර්ධකයෙකුගේ WebRTC යෙදුමකට ඇමතීමට නොහැකි වනු ඇත.
  • කණ්ඩායම් සම්මන්ත්‍රණ මිශ්‍ර කිරීම සඳහා පරිගණක සම්පත් විශාල ප්‍රමාණයක් අවශ්‍ය වේ, එබැවින් මෙම වර්ගයේ වීඩියෝ සන්නිවේදනය සඳහා ගෙවන දායකත්වයක් හෝ එහි යටිතල පහසුකම් සඳහා ආයෝජනයක් මිලදී ගැනීම අවශ්‍ය වේ, එහිදී සෑම සම්මන්ත්‍රණයකටම නවීන ප්‍රොසෙසරයක භෞතික හරය 1ක් අවශ්‍ය වේ.

WebRTC රහස්: කඩාකප්පල්කාරී වෙබ් තාක්ෂණයෙන් වෙළෙන්දන් ප්‍රතිලාභ ලබන ආකාරය


Tzachi Levent-Levi, Bloggeek.me, Video+Conference 2015

වීඩියෝ සම්මන්ත්‍රණ වෙළඳපොළ සඳහා WebRTC

වීඩියෝ සම්මන්ත්‍රණ පර්යන්ත ගණන වැඩි කිරීම

WebRTC තාක්‍ෂණය වීඩියෝ සම්මන්ත්‍රණ වෙළඳපොලේ සංවර්ධනයට ප්‍රබල බලපෑමක් ඇති කර ඇත. 2013 දී WebRTC සහය ඇති පළමු බ්‍රව්සර් නිකුත් කිරීමෙන් පසු, ලොව පුරා වීඩියෝ සම්මන්ත්‍රණ පර්යන්තවල විභව සංඛ්‍යාව උපාංග බිලියන 1 කින් වහාම වැඩි විය. ඇත්ත වශයෙන්ම, සෑම බ්‍රවුසරයක්ම සන්නිවේදන ගුණාත්මක භාවය අනුව එහි දෘඩාංග සගයන්ට වඩා පහත් නොවන වීඩියෝ සම්මන්ත්‍රණ පර්යන්තයක් බවට පත්ව ඇත.

විශේෂිත විසඳුම් සඳහා භාවිතා කරන්න

WebRTC සහාය ඇතිව විවිධ ජාවාස්ක්‍රිප්ට් පුස්තකාල සහ ක්ලවුඩ් සේවා API භාවිතය ඕනෑම වෙබ් ව්‍යාපෘති සඳහා වීඩියෝ සහාය එක් කිරීම පහසු කරයි. අතීතයේදී, තත්‍ය කාලීන දත්ත සම්ප්‍රේෂණය සඳහා සංවර්ධකයින්ට ප්‍රොටෝකෝල ක්‍රියා කරන ආකාරය ඉගෙන ගැනීමට සහ වෙනත් සමාගම්වල වැඩ භාවිතා කිරීමට අවශ්‍ය විය, බොහෝ විට අමතර බලපත්‍ර අවශ්‍ය වන අතර එමඟින් පිරිවැය වැඩි විය. WebRTC දැනටමත් "අඩවියෙන් ඇමතුම", "ඔන්ලයින් සහය කතාබස්" වැනි සේවාවන්හි සක්‍රියව භාවිතා වේ.

ලිනක්ස් සඳහා ස්කයිප් හි හිටපු පරිශීලකයින්

2014 දී, මයික්‍රොසොෆ්ට් විසින් ලිනක්ස් සඳහා ස්කයිප් ව්‍යාපෘතිය සඳහා සහය අවසන් කරන බව නිවේදනය කරන ලද අතර එය තොරතුරු තාක්ෂණ වෘත්තිකයන් අතර මහත් කරදරයක් විය. WebRTC තාක්ෂණය මෙහෙයුම් පද්ධතියට බැඳී නැත, නමුත් බ්රවුසර මට්ටමින් ක්රියාත්මක වේ, i.e. ලිනක්ස් භාවිතා කරන්නන්ට ස්කයිප් සඳහා සම්පූර්ණ ආදේශකයක් ලෙස WebRTC මත පදනම් වූ නිෂ්පාදන සහ සේවාවන් දැකීමට හැකි වනු ඇත.

ෆ්ලෑෂ් සමඟ තරඟය

WebRTC සහ HTML5 ෆ්ලෑෂ් තාක්‍ෂණයට මරු පහරක් විය, එය දැනටමත් හොඳම වසරවලින් බොහෝ දුරස්ව යමින් තිබුණි. 2017 සිට, ප්‍රමුඛ බ්‍රව්සර් ෆ්ලෑෂ් සඳහා සහය දැක්වීම නිල වශයෙන් නතර කර ඇති අතර තාක්‍ෂණය අවසානයේ වෙළඳපොලෙන් අතුරුදහන් විය. හැබැයි Flash ක්‍රෙඩිට් එක දෙන්න ඕනේ, මොකද web conferencing market එක හදල දුන්නෙත් එයා නිසා තාක්ෂණික හැකියාවන්බ්‍රව්සර්වල සජීවී සන්නිවේදනය සඳහා.

WebRTC වීඩියෝ ඉදිරිපත් කිරීම්

Dmitry Odintsov, TrueConf, Video+Conference 2017 ඔක්තෝබර්

WebRTC හි කෝඩෙක්ස්

ශ්රව්ය කෝඩෙක්ස්

WebRTC හි ශ්‍රව්‍ය තදබදය සම්පීඩනය කිරීමට, Opus සහ G.711 codecs භාවිතා වේ.

G.711- සාම්ප්‍රදායික දුරකථන පද්ධතිවල බහුලව භාවිතා වන ඉහළ බිට්රේට් (64 kbps) සහිත පැරණිතම හඬ කෝඩෙක්. ප්රධාන වාසිය වන්නේ සැහැල්ලු සම්පීඩන ඇල්ගොරිතම භාවිතා කිරීම නිසා අවම ගණනය කිරීමේ භාරයයි. කෝඩෙක් හඬ සංඥා වල සම්පීඩනය අඩු මට්ටමක පවතින අතර පරිශීලකයින් අතර සන්නිවේදනය අතරතුර අතිරේක ශ්රව්ය ප්රමාදයක් හඳුන්වා නොදේ.

G.711 උපාංග විශාල සංඛ්‍යාවකින් සහය දක්වයි. මෙම කෝඩෙක් භාවිතා කරන පද්ධති වෙනත් ශ්‍රව්‍ය කෝඩෙක්ස් (G.723, G.726, G.728, ආදිය) මත පදනම් වූ ඒවාට වඩා භාවිතා කිරීමට පහසුය. ගුණාත්මක භාවය අනුව, G.711 MOS පරීක්‍ෂණයේදී 4.2 ලකුණු ලබා ගත්තේය (ලකුණු 4-5 යනු ඉහළම සහ මාධ්‍ය වේ. හොඳ තත්ත්වයේ, ISDN හි හඬ ගමනාගමන සම්ප්‍රේෂණයේ ගුණාත්මක භාවයට සමාන වන අතර ඊටත් වඩා ඉහළ).

ඔපස්අඩු කේතීකරණ ප්‍රමාදය (2.5 ms සිට 60 ms දක්වා), විචල්‍ය බිට් අනුපාත සහය සහ ඉහළ සම්පීඩනය සහිත කෝඩෙක් එකක් වන අතර එය විචල්‍ය සහිත ජාලවල ශ්‍රව්‍ය ප්‍රවාහය සඳහා වඩාත් සුදුසු වේ. හරහා. Opus යනු SILK (හඬ සම්පීඩනය, මානව කථන විකෘති කිරීම් ඉවත් කිරීම) සහ CELT (ශ්‍රව්‍ය දත්ත කේතනය) කෝඩෙක්ස්වල හොඳම විශේෂාංග ඒකාබද්ධ කරන දෙමුහුන් විසඳුමකි. කෝඩෙක් නොමිලේ ලබා ගත හැකිය, එය භාවිතා කරන සංවර්ධකයින් ප්‍රකාශන හිමිකරුවන්ට කර්තෘභාග ගෙවීමට අවශ්‍ය නොවේ. අනෙකුත් ශ්‍රව්‍ය කෝඩෙක්ස් සමඟ සසඳන විට, ඔපස් නිසැකවම බොහෝ ආකාරවලින් ජය ගනී. එය MP3, Vorbis, AAC LC වැනි තරමක් ජනප්‍රිය අඩු බිට්‍රේට් කෝඩෙක්ස් ග්‍රහණය කර ඇත. Opus විසින් AMR-WB සහ Speex වලට වඩා මුල් පිටපතට සමීපව ශබ්දයේ "පින්තූරය" ප්‍රතිසාධනය කරයි. මෙම කෝඩෙක් අනාගතයයි, එබැවින් WebRTC තාක්‍ෂණයේ නිර්මාපකයින් එය සහාය දක්වන ශ්‍රව්‍ය ප්‍රමිතිවල අනිවාර්ය පරාසයට ඇතුළත් කළේ එබැවිනි.

වීඩියෝ කෝඩෙක්ස්

WebRTC සඳහා වීඩියෝ කෝඩෙක් තෝරාගැනීමේ ගැටළු සංවර්ධකයින්ට වසර කිහිපයක් ගත විය, අවසානයේ ඔවුන් H.264 සහ VP8 භාවිතා කිරීමට තීරණය කළහ. සියලුම නවීන බ්‍රව්සර් පාහේ කෝඩෙක්ස් දෙකටම සහය දක්වයි. WebRTC සමඟ වැඩ කිරීමට වීඩියෝ සම්මන්ත්‍රණ සේවාදායකයන්ට අවශ්‍ය වන්නේ එකකට පමණි.

VP8ඉහළ වීඩියෝ ප්‍රවාහ විකේතන වේගය සහ රාමු අලාභයට වැඩි ප්‍රතිරෝධයක් සහිත විවෘත බලපත්‍රයක් සහිත නොමිලේ වීඩියෝ කෝඩෙක් වේ. කෝඩෙක් විශ්වීය ය, එය දෘඪාංග වේදිකාවලට ක්රියාත්මක කිරීම පහසුය, එබැවින් වීඩියෝ සම්මන්ත්රණ පද්ධති සංවර්ධකයින් බොහෝ විට එය ඔවුන්ගේ නිෂ්පාදනවල භාවිතා කරයි.

ගෙවූ වීඩියෝ කෝඩෙක් එච්.264ඔහුගේ සහෝදරයාට වඩා බොහෝ කලකට පෙර ප්රසිද්ධ විය. මෙය සුරැකීමේදී වීඩියෝ ප්‍රවාහයේ ඉහළ සම්පීඩනයක් සහිත කෝඩෙක් එකකි ඉහළ ගුණත්වයවීඩියෝ. දෘඩාංග වීඩියෝ සම්මන්ත්‍රණ පද්ධති අතර මෙම කෝඩෙක්හි ඉහළ ව්‍යාප්තිය WebRTC ප්‍රමිතියේ භාවිතා කිරීම යෝජනා කරයි.

Google සහ Mozilla VP8 කෝඩෙක් සක්‍රියව ප්‍රවර්ධනය කරන අතර Microsoft, Apple සහ Cisco H.264 (සාම්ප්‍රදායික වීඩියෝ සම්මන්ත්‍රණ පද්ධති සමඟ අනුකූල වීම සහතික කිරීම සඳහා) සක්‍රියව ප්‍රවර්ධනය කරයි. වලාකුළු මත පදනම් වූ WebRTC විසඳුම් සංවර්ධකයින් සඳහා මෙහි ඉතා විශාල ගැටළුවක් පැන නගී, මන්ද සම්මන්ත්‍රණයට සහභාගී වන සියලුම දෙනා එක් බ්‍රව්සරයක් භාවිතා කරන්නේ නම්, සමුළුව එක් කෝඩෙක් එකකට වරක් මිශ්‍ර කිරීම ප්‍රමාණවත් වන අතර බ්‍රව්සර් වෙනස් නම් සහ ඒවා අතර තිබේ. Safari / Edge වේ, එවිට සම්මන්ත්‍රණය දෙගුණයක් වෙනස් කෝඩෙක්ස් දෙකක් කේතනය කිරීමට සිදුවනු ඇත. පද්ධති අවශ්යතාමාධ්‍ය සේවාදායකයට සහ එහි ප්‍රතිඵලයක් ලෙස WebRTC සේවාවන් සඳහා දායක වීමේ පිරිවැය.

WebRTC API

WebRTC තාක්ෂණය ප්‍රධාන API තුනක් මත පදනම් වේ:

  • (කැමරාවලින් හෝ පරිශීලකයාගේ ඩෙස්ක්ටොප් එකෙන් ශ්‍රව්‍ය සහ දෘශ්‍ය සංඥා ලබා ගැනීමට වෙබ් බ්‍රවුසරයට වගකීම දරයි).
  • RTCPeerConnection(කැමරාවෙන්, මයික්‍රෆෝනයෙන් සහ ඩෙස්ක්ටොප් එකෙන් ලැබෙන මාධ්‍ය දත්ත "හුවමාරු" කිරීමට බ්‍රව්සර් අතර සම්බන්ධය සඳහා වගකීම දරයි. එසේම, මෙම API හි "රාජකාරි" වලට සංඥා සැකසීම (බාහිර ඝෝෂාවකින් එය පිරිසිදු කිරීම, මයික්‍රෆෝන පරිමාව සකස් කිරීම) සහ පාලනය භාවිතා කරන ලද ශ්‍රව්‍ය සහ දෘශ්‍ය කෝඩෙක්ස්) .
  • RTC දත්ත නාලිකාව(ස්ථාපිත සම්බන්ධතාවයක් හරහා ද්වි-මාර්ග දත්ත හුවමාරුව සපයයි).

පරිශීලකයාගේ මයික්‍රෆෝනය සහ කැමරාව වෙත ප්‍රවේශ වීමට පෙර, බ්‍රවුසරය මෙම අවසරය ඉල්ලා සිටී. තුල ගූගල් ක්රෝම්ඔබට "සැකසීම්" කොටසේ ප්‍රවේශය පූර්ව-වින්‍යාසගත කළ හැකිය, ඔපෙරා සහ ෆයර්ෆොක්ස් හි, උපාංග තේරීම ප්‍රවේශ වන අවස්ථාවේදී, පතන ලැයිස්තුවෙන් කෙලින්ම සිදු කෙරේ. HTTP ප්‍රොටෝකෝලය භාවිතා කරන විට සහ HTTPS භාවිතා කරන්නේ නම්, අවසර ඉල්ලීම සැමවිටම දිස්වනු ඇත:


RTCPeerConnection. WebRTC සම්මන්ත්‍රණයකට සහභාගී වන සෑම බ්‍රවුසරයකටම ප්‍රවේශය තිබිය යුතුය මෙම වස්තුව. RTCPeerConnection භාවිතයට ස්තූතිවන්ත වන්නට, මාධ්‍ය දත්ත එක් බ්‍රවුසරයකින් තවත් බ්‍රවුසරයකට NAT හරහා ගමන් කළ හැක. ගිනි පවුර. මාධ්‍ය ප්‍රවාහයන් සාර්ථකව සම්ප්‍රේෂණය කිරීමට, සහභාගිවන්නන් වෙබ් සොකට් වැනි ප්‍රවාහනයක් භාවිතයෙන් පහත දත්ත හුවමාරු කර ගත යුතුය:

  • ආරම්භක සහභාගිකයා දෙවන සහභාගිකයා වෙත පිරිනැමීමක්-SDP යවයි (දත්ත ව්‍යුහය, එය සම්ප්‍රේෂණය කරනු ලබන මාධ්‍ය ප්‍රවාහයේ ලක්ෂණ සමඟ);
  • දෙවන සහභාගිකයා "ප්රතිචාරයක්" ජනනය කරයි - පිළිතුර-SDP සහ එය ආරම්භකයා වෙත යවයි;
  • ඉන්පසුව, සහභාගිවන්නන් හමු වුවහොත් (සහභාගීවන්නන් NAT හෝ ෆයර්වෝල් පිටුපස සිටී නම්) ICE අපේක්ෂකයින් අතර හුවමාරුවක් සංවිධානය කරනු ලැබේ.

සහභාගිවන්නන් අතර මෙම හුවමාරුව සාර්ථකව නිම කිරීමෙන් පසුව, මාධ්ය ප්රවාහයන් (ශ්රව්ය සහ වීඩියෝ) මාරු කිරීම සෘජුවම සංවිධානය කරනු ලැබේ.

RTC දත්ත නාලිකාව. දත්ත නාලිකා ප්‍රොටෝකෝලය සඳහා සහය සාපේක්ෂව මෑතදී බ්‍රව්සර්වල දර්ශනය විය, එබැවින් මෙම API සලකා බැලිය හැක්කේ බ්‍රව්සර්වල WebRTC භාවිතා කරන අවස්ථාවන්හිදී පමණි. Mozilla Firefox 22+ සහ Google Chrome 26+. එය සමඟ, සහභාගිවන්නන්ට හුවමාරු කර ගත හැකිය කෙටි පණිවුඩබ්රවුසරයේ.

WebRTC සම්බන්ධතාවය

සහාය දක්වන ඩෙස්ක්ටොප් බ්‍රව්සර්

  • Google Chrome (17+) සහ Chromium එන්ජිම මත පදනම් වූ සියලුම බ්‍රව්සර්;
  • Mozilla Firefox (18+);
  • ඔපෙරා (12+);
  • සෆාරි (11+);

Android සඳහා සහය දක්වන ජංගම බ්‍රව්සර්

  • Google Chrome (28+);
  • Mozilla Firefox (24+);
  • ඔපෙරා ජංගම (12+);
  • සෆාරි (11+).

WebRTC, Microsoft සහ Internet Explorer

ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් සහ එහි නව එජ් බ්‍රවුසරයේ වෙබ්ආර්ටීසී සහාය ගැන මයික්‍රොසොෆ්ට් ඉතා දිගු කාලයක් නිහඬව සිටියේය. Redmond වල කොල්ලො ඇත්තටම කැමති නෑ තමන් පාලනය නොකරන තාක්ෂනය පරිශීලකයන් අතට පත් කරන්න, ඒක තමයි ප්‍රතිපත්තියක්. නමුත් ක්‍රමක්‍රමයෙන් දේවල් බිමට වැටුණා, මොකද. WebRTC නොසලකා හැරීමට තවදුරටත් නොහැකි වූ අතර, WebRTC ප්‍රමිතියෙන් ලබාගත් ORTC ව්‍යාපෘතිය නිවේදනය කරන ලදී.

සංවර්ධකයින්ට අනුව, ORTC යනු ජාවාස්ක්‍රිප්ට් සහ HTML5 මත පදනම් වූ වැඩිදියුණු කළ API කට්ටලයක් සහිත WebRTC ප්‍රමිතියේ දිගුවකි, එයින් අදහස් කරන්නේ සාමාන්‍ය භාෂාවට පරිවර්තනය කිරීමෙන් සියල්ල එක හා සමාන වනු ඇති බවයි, ප්‍රමිතිය පාලනය කරන්නේ Microsoft මිස Google නොවේ. සහ එහි සංවර්ධනය. දුරකථන සහ දෘඪාංග වීඩියෝ සම්මන්ත්‍රණ පද්ධතිවල භාවිතා වන H.264 සහ සමහර G.7XX ශ්‍රේණියේ ශ්‍රව්‍ය කෝඩෙක්ස් සඳහා සහය ඇතිව කෝඩෙක් කට්ටලය පුළුල් කර ඇත. සමහර විට RDP (අන්තර්ගතය මාරු කිරීම සඳහා) සහ පණිවිඩ යැවීම සඳහා ගොඩනඟන ලද සහාය ඇත. මාර්ගය වන විට, ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් පරිශීලකයින් වාසනාවන්ත නොවේ, ORTC සහාය එජ් හි පමණක් වනු ඇත. තවද, ඇත්ත වශයෙන්ම, එවැනි ප්‍රොටෝකෝල සහ කෝඩෙක් කට්ටලයක් කුඩා ලේ සහිත ව්‍යාපාර සඳහා ස්කයිප් සමඟ ගැලපේ, එය WebRTC සඳහා තවත් ව්‍යාපාරික යෙදුම් විවෘත කරයි.

මෙම ලිපියේ පරමාර්ථය වන්නේ සම වයසේ සිට සම වයසේ සිටින වීඩියෝ කතාබස් (p2p වීඩියෝ චැට්) හි ආදර්ශන නියැදියක එහි ව්‍යුහය සහ ක්‍රියාකාරීත්වයේ මූලධර්මය පිළිබඳව දැන ගැනීමයි. මෙම කාර්යය සඳහා, අපි බහු-පරිශීලක peer-to-peer වීඩියෝ චැට් demo webrtc.io-demo භාවිතා කරන්නෙමු. එය සබැඳියෙන් බාගත හැකිය: https://github.com/webRTC/webrtc.io-demo/tree/master/site .

GitHub යනු වෙබ් ව්‍යාපෘතිවල සහයෝගී සංවර්ධනය සඳහා වන වෙබ් අඩවියක් හෝ වෙබ් සේවාවක් බව සටහන් කළ යුතුය. එය මත, සංවර්ධකයින්ට ඔවුන්ගේ වර්ධනයන් පිළිබඳ කේත පළ කිරීමට, ඒවා සාකච්ඡා කිරීමට සහ එකිනෙකා සමඟ සන්නිවේදනය කිරීමට හැකිය. මීට අමතරව, සමහර විශාල තොරතුරු තාක්ෂණ සමාගම් ඔවුන්ගේ නිල ගබඩාවන් මෙම වෙබ් අඩවියේ තබා ඇත. විවෘත මූලාශ්‍ර ව්‍යාපෘති සඳහා සේවාව නොමිලේ. GitHub යනු විවෘත මූලාශ්‍ර පුස්තකාලවල ගබඩාවකි.

ඉතින්, GitHub වෙතින් peer-to-peer වීඩියෝ චැට් එකක demo නියැදියක් බාගත කර, අපි එය C තැටියේ තබමු. පුද්ගලික පරිගණකයඅපගේ "webrtc_demo" යෙදුම සඳහා සාදන ලද නාමාවලියෙහි.


සහල්. 1

ව්‍යුහයෙන් පහත පරිදි (පය. 1), peer-to-peer වීඩියෝ කතාබස් ජාවාස්ක්‍රිප්ට් ක්‍රමලේඛන භාෂාවෙන් ක්‍රියාත්මක කරන ලද client script.js සහ server server.js ස්ක්‍රිප්ට් වලින් සමන්විත වේ. ස්ක්‍රිප්ට් (පුස්තකාලය) webrtc.io.js (සේවාලාභියා) - peer-to-peer යෝජනා ක්‍රමයට අනුව බ්‍රව්සර් අතර තත්‍ය කාලීන සන්නිවේදනයන් සංවිධානය කරයි: "සේවාදායක-සේවාදායකයා", සහ webrtc.io.js (සේවාලාභියා) සහ webrtc .io.js (SERVER), WebSocket ප්‍රොටෝකෝලය භාවිතයෙන්, ඔවුන් "සේවාදායක-සේවාදායක" ගෘහ නිර්මාණ ශිල්පය භාවිතයෙන් බ්‍රවුසරය සහ වෙබ් සේවාදායකය අතර ද්විත්ව සන්නිවේදනය සපයයි.

webrtc.io.js (SERVER) ස්ක්‍රිප්ට් එක webrtc.io පුස්තකාලයට ඇතුළත් කර ඇති අතර එය node_modules\webrtc.io\lib නාමාවලියෙහි පිහිටා ඇත. index.html වීඩියෝ කතාබස් අතුරුමුහුණත HTML5 සහ CSS3 තුළ ක්‍රියාත්මක වේ. webrtc_demo යෙදුම් ගොනු වල අන්තර්ගතය එක් html සංස්කාරකයක් සමඟින් බැලිය හැක, උදාහරණයක් ලෙස "Notepad++".

අපි වීඩියෝ චැට් මෙහෙයුමේ මූලධර්මය පරීක්ෂා කරන්නෙමු ගොනු පද්ධතියපී.සී. පරිගණකයක සේවාදායකය (server.js) ධාවනය කිරීමට, ඔබ node.js ධාවන කාලය ස්ථාපනය කළ යුතුය. Node.js ඔබට බ්‍රවුසරයෙන් පිටත JavaScript කේතය ධාවනය කිරීමට ඉඩ සලසයි. ඔබට සබැඳියෙන් node.js බාගත කළ හැක: http://nodejs.org/ (07/15/13 දින v0.10.13 අනුවාදය). node.org අඩවියේ ප්‍රධාන පිටුවේ, බාගැනීම් බොත්තම ක්ලික් කර http://nodejs.org/download/ වෙත යන්න. windows භාවිතා කරන්නන් සඳහා, පළමුව win.installer (.msi) බාගත කර, පසුව win.installer (.msi) පරිගණකයේ ධාවනය කර, වැඩසටහන් ගොනු නාමාවලියෙහි nodejs සහ "npm පැකේජ කළමනාකරු" ස්ථාපනය කරන්න.




සහල්. 2

මේ අනුව, node.js ජාවාස්ක්‍රිප්ට් සංවර්ධන සහ ක්‍රියාත්මක කිරීමේ පරිසරයකින් මෙන්ම npm පැකේජ කළමනාකරු හෝ පැකේජ කළමනාකරු භාවිතයෙන් ස්ථාපනය කළ හැකි අභ්‍යන්තර මොඩියුල කට්ටලයකින් සමන්විත වේ.

මොඩියුල ස්ථාපනය කිරීම සඳහා, ඔබට අවශ්ය වේ විධාන රේඛාවයෙදුම් නාමාවලියෙන් (උදාහරණයක් ලෙස, "webrtc_demo") විධානය ක්‍රියාත්මක කරන්න: npm ස්ථාපනය module_name. මොඩියුල ස්ථාපනය කිරීමේදී, npm කළමනාකරු විසින් ස්ථාපනය සිදු කරන ලද නාමාවලියෙහි node_modules ෆෝල්ඩරයක් නිර්මාණය කරයි. එය ක්‍රියාත්මක වන විට, nodejs ස්වයංක්‍රීයව node_modules නාමාවලියෙන් මොඩියුල ඇතුළත් වේ.

එබැවින්, node.js ස්ථාපනය කිරීමෙන් පසු, විධාන රේඛාව විවෘත කර npm පැකේජ කළමනාකරු භාවිතයෙන් webrtc_demo බහලුමේ node_modules ෆෝල්ඩරයේ ඇති අධිවේගී මොඩියුලය යාවත්කාලීන කරන්න:

C:\webrtc_demo>npm ස්ථාපන අධිවේගී

අධිවේගී මොඩියුලය යනු node.js හෝ වෙබ් යෙදුම් සංවර්ධන වේදිකාව සඳහා වන වෙබ් රාමුවකි. ප්‍රකාශ කිරීමට ගෝලීය ප්‍රවේශය ලබා ගැනීමට, ඔබට එය මෙලෙස ස්ථාපනය කළ හැක: npm ස්ථාපනය -g අධිවේගී.

ඉන්පසු අපි webrtc.io මොඩියුලය යාවත්කාලීන කරන්නෙමු:

C:\webrtc_demo>npm ස්ථාපනය webrtc.io

ඉන්පසුව, විධාන රේඛාවේදී, අපි සේවාදායකය ආරම්භ කරමු: server.js:

C:\webrtc_demo>nodeserver.js


සහල්. 3

සෑම දෙයක්ම, සේවාදායකය සාර්ථකව ක්රියා කරයි (රූපය 3). දැන්, වෙබ් බ්‍රවුසරයක් භාවිතයෙන්, ඔබට ip-ලිපිනය මගින් සේවාදායකය හා සම්බන්ධ වී index.html වෙබ් පිටුව බාගත කළ හැක, එයින් වෙබ් බ්‍රවුසරය සේවාදායක ස්ක්‍රිප්ට් කේතය - script.js සහ webrtc.io.js ස්ක්‍රිප්ට් කේතය උපුටා ගනී. සහ ඒවා ක්රියාත්මක කරන්න. peer-to-peer වීඩියෝ කතාබස් ක්‍රියා කිරීම සඳහා (බ්‍රවුසර දෙකක් අතර සම්බන්ධතාවයක් ඇති කර ගැනීමට), webrtc සඳහා සහය දක්වන බ්‍රව්සර් දෙකකින් node.js හි ක්‍රියාත්මක වන සංඥා සේවාදායකය ip-ලිපිනය මගින් සම්බන්ධ කර ගැනීම අවශ්‍ය වේ.

එහි ප්රතිඵලයක් වශයෙන්, සන්නිවේදන යෙදුමේ (වීඩියෝ චැට්) සේවාදායක කොටසෙහි අතුරු මුහුණත කැමරාව සහ මයික්රොෆෝනය වෙත ප්රවේශ වීමට අවසර ඉල්ලීමක් සමඟ විවෘත වනු ඇත (රූපය 4).



සහල්. 4

"Allow" බොත්තම මත ක්ලික් කිරීමෙන් පසුව, බහුමාධ්ය සන්නිවේදනය සඳහා කැමරාව සහ මයික්රොෆෝනය සම්බන්ධ වේ. මීට අමතරව, වීඩියෝ චැට් අතුරුමුහුණත හරහා, ඔබට පෙළ දත්ත සමඟ සන්නිවේදනය කළ හැකිය (රූපය 5).



සහල්. 5

ඒ බව සඳහන් කළ යුතුය . සේවාදායකය සංඥා කරයි, සහ ප්‍රධාන වශයෙන් නිර්මාණය කර ඇත්තේ පරිශීලකයින්ගේ බ්‍රව්සර් අතර සම්බන්ධතාවයක් ඇති කර ගැනීමටය. WebRTC සංඥා සපයන server.js ස්ක්‍රිප්ට් ධාවනය කිරීමට Node.js භාවිත කරයි.




ඉහල