P2P վիդեո զրույց՝ հիմնված WebRTC-ի վրա: WebRTC

Համացանցի եվրոպացի օգտատերերը բաժանված են երկու մասի. համաձայն Ալենբախի (Գերմանիա) հասարակական կարծիքի ուսումնասիրման ինստիտուտի հարցման՝ Skype-ը, չաթի և ակնթարթային հաղորդագրությունների համակարգերը դարձել են առօրյա կյանքի անբաժանելի մասը 16,5 միլիոն մեծահասակների և երեխաների համար՝ 9 միլիոն: օգտվում են այս ծառայություններից դեպք առ դեպք, իսկ 28 միլիոնը դրանց ձեռք չի տալիս։

Սա կարող է փոխվել, քանի որ Firefox-ն այժմ ինտեգրվում է իրական ժամանակի հաղորդակցման տեխնոլոգիա (WebRTC), ինչպես նաև ինքը՝ հաճախորդը։ Աուդիո և վիդեո զրույց սկսելն այժմ ավելի դժվար չէ, քան կայք բացելը: Մյուս կողմից, այնպիսի ծառայություններ, ինչպիսիք են Facebook-ը և Skype-ը, հիմնվում են լուծումների վրա՝ օգտագործելով առանձին հաճախորդ և ստեղծել հաշիվ:

WebRTC-ն առանձնանում է ոչ միայն օգտագործման հեշտությամբ։ Այս մեթոդը նույնիսկ թույլ է տալիս տեղադրել ուղիղ կապ երկու բրաուզերի միջև. Այսպիսով, աուդիո և վիդեո տվյալները չեն անցնում սերվերի միջով, որտեղ կարող է լինել ծանրաբեռնվածություն կամ որտեղ ադմինիստրատորը առանձնապես զգայուն չէ գաղտնիության կամ տվյալների պաշտպանության նկատմամբ: Ուղիղ կապի շնորհիվ WebRTC-ն ոչ գրանցում է պահանջում, ոչ էլ Հաշիվցանկացած ծառայության մեջ:

Զրույց սկսելու համար հարկավոր է միայն հետևել հղմանը։ Հաղորդակցությունը մնում է մասնավոր, քանի որ տվյալների հոսքը կոդավորված է: Իրական ժամանակի հաղորդակցություն բրաուզերի միջոցով Google ընկերությունըսկսեց ակտիվորեն ներգրավվել 2011 թվականին, երբ հրապարակեց իր WebRTC ներդրման սկզբնական կոդը:

Դրանից անմիջապես հետո Chrome-ը և Firefox-ը ստացան իրենց սեփական WebRTC շարժիչները: Ներկայումս նրանց բջջային տարբերակները հագեցած են ինչպես այս տեխնոլոգիայով, այնպես էլ Android 5.0-ով տեղադրված WebView 3.6 շարժիչով, որն օգտագործվում է հավելվածների կողմից։

Իրական ժամանակի հաղորդակցության համար վեբ դիտիչում պետք է ներդրվեն համապատասխան JavaScript ինտերֆեյսներ: Օգտագործելով GetUserMedia ծրագրային ապահովումակտիվացնում է ձայնագրումը աուդիո և վիդեո աղբյուրներից, այսինքն՝ վեբ-տեսախցիկից և խոսափողից: RTCPeerConnection-ը պատասխանատու է կապի հաստատման, ինչպես նաև ինքնին կապի համար:

Բրաուզերի ինտեգրմանը զուգահեռ աշխատանքային խումբՀամաշխարհային ցանցի կոնսորցիումը (W3C) արագացրել է WebRTC ստանդարտացման գործընթացը: Այն պետք է ավարտվի 2015թ.

WebRTC-ն բավարարվում է քիչ բանով

WebRTC ծառայությունից օգտվելը շատ ռեսուրսներ չի պահանջում, քանի որ սերվերը միացնում է միայն զրուցակիցներին: Կապ հաստատելը նույնպես առանձնապես դժվար չէ։ Նախ, զննարկիչը ազդանշան է տալիս WebRTC սերվերին, որ նախատեսում է զանգ սկսել: Նա սերվերից ստանում է HTTPS հղում՝ հաղորդակցությունը կոդավորված է: Օգտագործողը այս հղումն ուղարկում է իր զրուցակցին։ Այնուհետև զննարկիչը օգտատիրոջից թույլտվություն է խնդրում մուտք գործել վեբ-տեսախցիկ և խոսափող:

Զրուցակցի հետ ուղիղ հոսքային կապ հաստատելու համար զննարկիչը ստանում է իր IP հասցեն և կոնֆիգուրացիայի տվյալները WebRTC ծառայությունից։ Նույնն է անում դիմացինի վեբ դիտողը:

Որպեսզի հոսքային կապը գործի առանց ընդհատումների և լավ որակ, բրաուզերում աշխատում են երեք շարժիչներ: Նրանցից երկուսը օպտիմիզացնում և սեղմում են աուդիո և վիդեո տվյալները, երրորդը պատասխանատու է դրանց տեղափոխման համար։ Այն ուղարկում է տվյալներ միջոցով SRTP արձանագրություն(Secure Real-time Transport Protocol), որը թույլ է տալիս գաղտնագրել հոսքայինիրական ժամանակում։

Եթե ​​ուղղակի կապ չի կարող հաստատվել, WebRTC-ն այլ ճանապարհ է փնտրում: Օրինակ, սա տեղի է ունենում, երբ ցանցի կարգավորումներըթույլ չտալ STUN սերվերին հայտնել IP հասցեի մասին: WebRTC ստանդարտը նախատեսում է, որ այս դեպքում զրույցը տեղի կունենա, բայց TURN սերվերի միջանկյալ ակտիվացմամբ (Traversal Using Relays around NAT): Այսպիսով, netscan.co կայքում դուք կարող եք ստուգել, ​​թե արդյոք WebRTC-ն ներդրված է ձեր համակարգչում և ձեր ցանցին հասանելիությամբ:

Ինչպես է կապը կատարվում

Նախ պետք է գրանցել խոսակցությունը (1): WebRTC ծառայությունը տրամադրում է հղում, որը պետք է ուղարկվի զրուցակցին: Զննարկիչը, օգտագործելով STUN սերվերը, պարզում է իր սեփական IP հասցեն (2), ուղարկում է այն ծառայությանը և ստանում գործընկերոջ IP-ն՝ ուղիղ կապ հաստատելու համար (3): Եթե ​​STUN-ը ձախողվի, խոսակցությունը վերահղվում է TURN սերվերի միջոցով (4):

Զննարկիչում WebRTC տեխնոլոգիայի միջոցով հաղորդակցությունը գործարկվում է JavaScript կոդով: Դրանից հետո հաղորդակցության համար պատասխանատու են երեք շարժիչներ. ձայնային և վիդեո շարժիչները հավաքում են մուլտիմեդիա տվյալներ վեբ-տեսախցիկից և խոսափողից, իսկ տրանսպորտային շարժիչը միավորում է տեղեկատվությունը և ուղարկում հոսքը կոդավորված ձևով՝ օգտագործելով SRTP (Secure Real-time Protocol):

Որ բրաուզերներն են աշխատում WebRTC-ի հետ

Chrome-ը և Firefox-ն ունեն WebRTC շարժիչ, որն օգտագործում է այնպիսի ծառայություններ, ինչպիսիք են talky.io-ն: Mozilla-ի բրաուզերը կարող է ուղղակիորեն աշխատել իր սեփական հաճախորդի հետ:

Google-ը և Mozilla-ն շարունակում են առաջ մղել իրական ժամանակում հաղորդակցության գաղափարը. Chrome-ը կարող է կազմակերպել WebRTC կոնֆերանս մի քանի մասնակիցների հետ, և Firefox-ի նոր Hello հաճախորդը մշակվել է հետ համագործակցությամբ: դուստր ընկերությունՀեռահաղորդակցության հսկա Telefonica. Apple-ն առայժմ մնում է կողքին, դուք դեռ չպետք է սպասեք WebRTC-ին Safari-ում: Այնուամենայնիվ, կան բազմաթիվ այլընտրանքային iOS հավելվածներ և Safari հավելվածներ:

Microsoft-ը մի փոքր այլ ընթացք է ընդունում: Որպես մրցույթի սեփականատեր Skype ծառայություն այս ընկերությունըչի պատրաստվում այդքան հեշտությամբ կապիտուլյացիայի ենթարկվել WebRTC-ին: Փոխարենը, Microsoft-ը մշակում է տեխնոլոգիա, որը կոչվում է ORTC (Object Real-Time Communications) Internet Explorer.

WebRTC-ից տարբերությունները, ինչպիսիք են տարբեր կոդեկները և սերվերի հետ կապ հաստատելու արձանագրությունները, աննշան են և ժամանակի ընթացքում, ամենայն հավանականությամբ, կվերածվեն WebRTC ստանդարտի հավելման, որը ներառում է այդ տարբերությունները: Այսպիսով, միայն Apple-ն է մնացել, ինչպես միշտ:

Լուսանկարը:արտադրական ընկերություններ; goodluz/Fotolia.com

WebRTC(Web Real-Time Communications) տեխնոլոգիա է, որը թույլ է տալիս վեբ հավելվածներին և կայքերին գրավել և ընտրողաբար փոխանցել աուդիո և/կամ վիդեո մեդիա հոսքերը, ինչպես նաև կամայական տվյալներ փոխանակել բրաուզերների միջև՝ առանց պարտադիր միջնորդների օգտագործելու: Ստանդարտների փաթեթը, որը ներառում է WebRTC տեխնոլոգիան, թույլ է տալիս փոխանակել տվյալներ և անցկացնել հավասարակցական հեռակոնֆերանսներ՝ առանց օգտագործողի կողմից պլագիններ կամ որևէ այլ երրորդ կողմի ծրագրային ապահովման տեղադրման:

WebRTC-ն բաղկացած է մի քանի փոխկապակցված ծրագրավորման ինտերֆեյսներից (API) և արձանագրություններից, որոնք աշխատում են միասին: Փաստաթղթերը, որոնք դուք կգտնեք այստեղ, կօգնեն ձեզ հասկանալ WebRTC-ի հիմունքները, ինչպես ստեղծել և օգտագործել կապը տվյալների և մեդիա հոսքի համար և շատ ավելին:

Համատեղելիություն

Քանի որ WebRTC-ի ներդրումը դեռ սկզբնական փուլում է, և յուրաքանչյուր դիտարկիչ ունի WebRTC ֆունկցիոնալություն, մենք խստորեն խորհուրդ ենք տալիս օգտագործել Google-ի Adapter.js polyfill գրադարանը՝ նախքան ձեր կոդի վրա աշխատելը:

Adapter.js-ն օգտագործում է սեպեր և պոլիֆիլմեր՝ WebRTC-ի ներդրման տարբերություններն այն աջակցող համատեքստերի միջև անխափան կերպով կամրջելու համար: Adapter.js-ը նաև մշակում է վաճառողի նախածանցները և գույքի անվանման այլ տարբերությունները՝ հեշտացնելով WebRTC-ում զարգացումը առավել համատեղելի արդյունքներով: Գրադարանը հասանելի է նաև որպես NPM փաթեթ:

Adapter.js գրադարանը լրացուցիչ ուսումնասիրելու համար նայեք:

WebRTC հասկացությունները և օգտագործումը

WebRTC-ն բազմաֆունկցիոնալ է և, ի հետ միասին, ապահովում է հզոր մուլտիմեդիա հնարավորություններ համացանցի համար, ներառյալ աուդիո և վիդեո կոնֆերանսների աջակցություն, ֆայլերի փոխանակում, էկրանի նկարահանում, ինքնության կառավարում և փոխգործունակություն հին հեռախոսային համակարգերի հետ, ներառյալ DTMF ձայնային հավաքման աջակցությունը: Հանգույցների միջև կապերը կարող են ստեղծվել առանց օգտագործման հատուկ վարորդներկամ պլագիններ և հաճախ առանց միջանկյալ ծառայությունների:

Երկու հանգույցների միջև կապը ներկայացված է որպես RTCPeerConnection ինտերֆեյսի օբյեկտ: Կապ հաստատվելուց և բացվելուց հետո, օգտագործելով RTCPeerConnection օբյեկտը, միացմանը կարող են ավելացվել մեդիա հոսքեր ( MediaStream s) և/կամ տվյալների ալիքներ (RTCDataChannel s):

Մեդիա հոսքերը կարող են բաղկացած լինել մեդիա տեղեկատվության ցանկացած քանակի հետքերից (հետքերից): Այս հետքերը ներկայացված են MediaStreamTrack ինտերֆեյսի օբյեկտներով և կարող են պարունակել մեկ կամ մի քանի տեսակի մեդիա տվյալներ, ներառյալ աուդիո, վիդեո, տեքստ (օրինակ, ենթագրեր կամ գլուխների վերնագրեր): Հեռարձակումների մեծ մասը բաղկացած է առնվազն մեկ աուդիո ուղուց (մեկ աուդիո ուղուց) կամ տեսահոլովակից և կարող է ուղարկվել և ստացվել որպես հոսքեր (իրական ժամանակի մեդիա) կամ պահել ֆայլում:

Կարող եք նաև օգտագործել երկու հանգույցների միջև կամայական տվյալներ փոխանակելու համար՝ օգտագործելով RTCDataChannel ինտերֆեյսի օբյեկտը, որը կարող է օգտագործվել ծառայության տեղեկատվության, ֆոնդային շուկայի տվյալների, խաղի կարգավիճակի փաթեթների, ֆայլերի փոխանցման կամ մասնավոր տվյալների ալիքների փոխանցման համար:

անհրաժեշտ է լրացուցիչ մանրամասներ և հղումներ դեպի համապատասխան ուղեցույցներ և ձեռնարկներ

WebRTC ինտերֆեյսներ

Քանի որ WebRTC-ն տրամադրում է ինտերֆեյսեր, որոնք միասին աշխատում են տարբեր առաջադրանքներ կատարելու համար, մենք դրանք բաժանել ենք կատեգորիաների: Տեսեք կողագոտու ինդեքսը՝ արագ նավարկության համար:

Կապի կարգավորում և կառավարում

Այս միջերեսներն օգտագործվում են WebRTC կապերը կարգավորելու, բացելու և կառավարելու համար: Դրանք ներկայացնում են միաշերտ մեդիա կապեր, տվյալների ալիքներ և ինտերֆեյսներ, որոնք օգտագործվում են յուրաքանչյուր հանգույցի հնարավորությունների մասին տեղեկատվություն փոխանակելու համար՝ երկկողմանի մուլտիմեդիա կապ հաստատելու համար լավագույն կոնֆիգուրացիան ընտրելու համար:

RTCPeerConnection-ը ներկայացնում է WebRTC կապը տեղական համակարգիչև հեռավոր հանգույցը: Օգտագործվում է երկու հանգույցների միջև տվյալների հաջող փոխանցման համար: RTCSessionDescription-ը ներկայացնում է նստաշրջանի պարամետրերը: Յուրաքանչյուր RTCSessionDescription պարունակում է տիպի նկարագրություններ՝ ցույց տալով, թե բանակցային գործընթացի որ մասը (առաջարկը/պատասխանը) է նկարագրում, և SDP նկարագրիչ՝ նիստի համար: RTCIceCandidate-ը ներկայացնում է ինտերնետ կապի հաստատման (ICE) սերվերի թեկնածուն RTCPeerConnection կապ հաստատելու համար: RTCIceTransport-ը ներկայացնում է ինտերնետ կապի հաստատության (ICE) տեղեկատվությունը: RTCPeerConnectionIceEvent-ը ներկայացնում է իրադարձություններ, որոնք տեղի են ունենում ICE թեկնածուների վրա, սովորաբար RTCPeerConnection: Մեկ տեսակ փոխանցվում է այս օբյեկտըիրադարձություններ՝ սառցե թեկնածու. RTCRtpSender Կառավարում է տվյալների հոսքը և փոխանցումը MediaStreamTrack տիպի օբյեկտի միջոցով RTCPeerConnection տիպի օբյեկտի համար: RTCRtpReceiver Կառավարում է տվյալների ընդունումը և վերծանումը MediaStreamTrack տիպի օբյեկտի միջոցով RTCPeerConnection տիպի օբյեկտի համար: RTCTrackEvent Ցույց է տալիս, որ նոր մուտքային MediaStreamTrack օբյեկտ է ստեղծվել, և RTCRtpReceiver օբյեկտն ավելացվել է RTCPeerConnection օբյեկտին: RTCCertificate-ը ներկայացնում է վկայագիր, որն օգտագործում է RTCPeerConnection օբյեկտը: RTCDataChannel-ը ներկայացնում է երկկողմանի տվյալների ալիք երկու միացման հանգույցների միջև: RTCDataChannelEvent-ը ներկայացնում է իրադարձություններ, որոնք բարձրացվում են, երբ RTCDataChannel տիպի օբյեկտը կցվում է RTCPeerConnection տվյալների ալիքի տիպի օբյեկտին: RTCDTMFSender-ը վերահսկում է RTCPeerConnection տիպի օբյեկտի համար երկտոնային բազմահաճախականության (DTMF) ազդանշանի կոդավորումը և փոխանցումը: RTCDTMFToneChangeEvent Ցույց է տալիս մուտքային Dual Tone Multi Frequency (DTMF) ազդանշանի փոփոխության իրադարձություն: Այս իրադարձությունը չի փչում (եթե այլ բան նշված չէ) և չի կարող չեղարկվել (եթե այլ բան նշված չէ): RTCSstatsReport Ասինխրոն կերպով հաղորդում է MediaStreamTrack տեսակի անցած օբյեկտի կարգավիճակը: RTCIdentityProviderRegistrar Գրանցում է ինքնության մատակարարին (idP): RTCIdentityProvider-ը Թույլ է տալիս դիտարկիչի հնարավորությունը՝ պահանջել ինքնության հայտարարագրի ստեղծում կամ հաստատում: RTCIdentityAssertion-ը ներկայացնում է ընթացիկ կապի հեռավոր հանգույցի նույնացուցիչը: Եթե ​​հանգույցը դեռ տեղադրված և հաստատված չէ, ինտերֆեյսի հղումը կվերադարձնի null: Տեղադրվելուց հետո չի փոխվում: RTCIdentityEvent-ը ներկայացնում է ինքնության մատակարարի (idP) հայտարարագրման իրադարձության օբյեկտ: RTCPeerConnection տեսակի օբյեկտի իրադարձություն: Մեկ տեսակ փոխանցվում է այս ինքնության արդյունքի իրադարձությանը: RTCIdentityErrorEvent-ը ներկայացնում է սխալի իրադարձության օբյեկտ՝ կապված ինքնության մատակարարի (idP) հետ: RTCPeerConnection տեսակի օբյեկտի իրադարձություն: Այս իրադարձությանը փոխանցվում է երկու տեսակի սխալ՝ idpassertionerror և idpvalidationerror:

Էքսկուրսավարներ

WebRTC Architecture Overview API-ի տակ, որը մշակողները օգտագործում են WebRTC-ի ստեղծման և օգտագործման համար, կա մի շարք ցանցային արձանագրություններև կապի ստանդարտները: Այս վերանայումը այս ստանդարտների ցուցադրությունն է: WebRTC-ն թույլ է տալիս կապը կազմակերպել հանգույցից հանգույց ռեժիմով՝ կամայական տվյալներ, աուդիո, վիդեո հոսքեր կամ դրանց ցանկացած համակցություն բրաուզերում փոխանցելու համար: Այս հոդվածում մենք կանդրադառնանք WebRTC նիստի կյանքին, սկսած կապի հաստատումից և մինչև վերջ, մինչև այն դադարեցվի, երբ այլևս դրա կարիքը չկա: WebRTC API-ի ակնարկ WebRTC-ն բաղկացած է մի քանի փոխկապակցված ծրագրավորման ինտերֆեյսներից (API) և արձանագրություններից, որոնք աշխատում են միասին՝ աջակցելու երկու կամ ավելի հանգույցների միջև տվյալների և մեդիա հոսքերի փոխանակմանը: Այս հոդվածը ներկայացնում է կարճ ակնարկայս API-ներից յուրաքանչյուրը և ինչ նպատակի է այն ծառայում: WebRTC-ի հիմունքները Այս հոդվածը կուղեկցի ձեզ միջբրաուզերային RTC հավելված ստեղծելու ճանապարհին: Այս հոդվածի վերջում դուք պետք է ունենաք աշխատանքային կետ առ կետ տվյալների և մեդիա ալիք: WebRTC արձանագրություններ Այս հոդվածը ներկայացնում է այն արձանագրությունները, որոնք լրացնում են WebRTC API-ն: Այս ուղեցույցը նկարագրում է, թե ինչպես կարող եք օգտագործել հանգույց-հանգույց կապը և կապված լինել

Այսօր WebRTC-ն բրաուզերներում աուդիո և վիդեո հոսքի «թեժ» տեխնոլոգիա է: Պահպանողական տեխնոլոգիաները, ինչպիսիք են HTTP Streaming-ը և Flash-ը, ավելի հարմար են ձայնագրված բովանդակություն տարածելու համար (տեսանյութ ըստ պահանջի) և զգալիորեն զիջում են WebRTC-ին իրական ժամանակի և առցանց հեռարձակումների առումով, այսինքն. որտեղ տեսահոլովակների նվազագույն ուշացում է պահանջվում, որպեսզի հեռուստադիտողները կարողանան տեսնել, թե ինչ է կատարվում «ուղիղ եթերում»:

Բարձրորակ իրական ժամանակում հաղորդակցության հնարավորությունը բխում է հենց WebRTC ճարտարապետությունից, որտեղ UDP արձանագրությունն օգտագործվում է վիդեո հոսքերի տեղափոխման համար, որը ստանդարտ հիմք է նվազագույն ուշացումներով տեսանյութերի փոխանցման համար և լայնորեն օգտագործվում է իրական ժամանակի հաղորդակցման համակարգերում:

Հաղորդակցման հետաձգումը կարևոր է առցանց հեռարձակման համակարգերում, վեբինարներում և այլ հավելվածներում, որոնք պահանջում են ինտերակտիվ հաղորդակցություն տեսանյութի աղբյուրի, վերջնական օգտագործողների հետ և պահանջում են լուծում:

WebRTC-ին փորձելու ևս մեկ լավ պատճառն այն է, որ դա միանշանակ միտում է: Այսօր յուրաքանչյուր Android Chrome բրաուզերաջակցում է այս տեխնոլոգիան, որը երաշխավորում է միլիոնավոր սարքեր, որոնք պատրաստ են դիտել հեռարձակումը առանց որևէ լրացուցիչ ծրագրակազմ կամ կոնֆիգուրացիա տեղադրելու:

Ստուգելու նպատակով WebRTC տեխնոլոգիագործողության մեջ և դրա վրա գործարկեցինք պարզ առցանց հեռարձակում, մենք օգտագործեցինք Flashphoner WebRTC Media & Broadcasting Server սերվերի ծրագրակազմը: Հատկանիշները նշում են WebRTC հոսքերը մեկից շատ ռեժիմով հեռարձակելու հնարավորություն, ինչպես նաև IP տեսախցիկների և տեսահսկման համակարգերի աջակցություն RTSP արձանագրության միջոցով; Այս վերանայման մեջ մենք կկենտրոնանանք վեբ-վեբ հեռարձակումների և դրանց առանձնահատկությունների վրա:

WebRTC Media & Broadcasting Server-ի տեղադրում

Որովհետև համար Windows համակարգերչկար սերվերի տարբերակ, և ես չէի ուզում տեղադրել վիրտուալ մեքենա, ինչպիսին VMWare+Linux-ն է, որպեսզի կարողանայի առցանց հեռարձակումներ ստուգել տանը: Windows համակարգիչՉստացվեց. Ժամանակ խնայելու համար մենք որոշեցինք ամպային հոսթինգի օրինակ վերցնել հետևյալ կերպ.

Դա Centos x86_64 տարբերակ 6.5-ն էր՝ առանց նախապես տեղադրված ծրագրերի Ամստերդամի տվյալների կենտրոնում: Այսպիսով, այն ամենը, ինչ մենք ունենք մեր տրամադրության տակ, սերվերն է և ssh մուտքը դրան: Նրանց համար, ովքեր ծանոթ են կոնսոլային խաղերին Linux հրամաններ, WebRTC սերվերի տեղադրումը խոստանում է լինել պարզ և ցավազուրկ: Այսպիսով, ինչ արեցինք.

1. Ներբեռնեք արխիվը.

$wget https://site/download-wcs5-server.tar.gz

2. Բացեք փաթեթավորումը:

$tar -xzf download-wcs5-server.tar.gz

3. Տեղադրել:

$cd FlashphonerWebCallServer

Տեղադրման ընթացքում մուտքագրեք սերվերի IP հասցեն՝ XXX.XXX.XXX.XXX

4. Ակտիվացնել լիցենզիան.

$cd /usr/local/FlashphonerWebCallServer/bin

$./activation.sh

5. Սկսեք WCS սերվերը.

$service webcallserver-ի մեկնարկը

6. Ստուգման մատյան.

$tail - f /usr/local/FlashphonerWebCallServer/logs/flashphoner_manager.log

7. Ստուգեք, որ երկու գործընթացները տեղում են.

$ps aux | grep Flashphoner

Տեղադրման գործընթացը ավարտված է:

WebRTC առցանց հեռարձակումների փորձարկում

Հեռարձակումների փորձարկումը պարզվեց. Բացի սերվերից, կա վեբ-հաճախորդ, որը բաղկացած է տասնյակ Javascript-ից, HTML-ից և CSS ֆայլերև տեղադրվել է մեր կողմից /var/www/html պանակում՝ տեղադրման փուլում: Միակ բանը, որ պետք է արվեր, սերվերի IP հասցեն մուտքագրելն էր flashphoner.xml կոնֆիգուրացիայի մեջ, որպեսզի վեբ հաճախորդը կարողանա կապ հաստատել սերվերի հետ HTML5 Websockets-ի միջոցով: Եկեք նկարագրենք թեստավորման գործընթացը:

1. Բացեք index.html փորձնական հաճախորդի էջը Chrome դիտարկիչում.

2. Հեռարձակումը սկսելու համար անհրաժեշտ է սեղմել «Սկսել» կոճակը էկրանի մեջտեղում:
Նախքան դա անելը, դուք պետք է համոզվեք, որ վեբ-տեսախցիկը միացված է և պատրաստ է օգտագործմանը: Վեբ-տեսախցիկի համար հատուկ պահանջներ չկան, օրինակ՝ մենք օգտագործել ենք նոութբուքի մեջ ներկառուցված ստանդարտ տեսախցիկ՝ 1280x800 լուծաչափով:

Chrome բրաուզերը անպայման կխնդրի մուտք գործել դեպի տեսախցիկ և խոսափող, որպեսզի օգտատերը հասկանա, որ իր տեսանյութը կուղարկվի ինտերնետ սերվեր և թույլ տա:

3. Ինտերֆեյսը ներկայացնում է տեսախցիկից վիդեո հոսքի հաջող հեռարձակում WebRTC սերվեր: Աջ կողմում վերին անկյունՑուցանիշը ցույց է տալիս, որ հոսքը գնում է դեպի սերվեր, ներքևի անկյունում կա «Stop» կոճակը՝ տեսանյութի ուղարկումը դադարեցնելու համար:

Խնդրում ենք նկատի ունենալ ստորև բերված տուփի հղումը: Այն պարունակում է եզակի նույնացուցիչ այս հոսքի համար, այնպես որ բոլորը կարող են միանալ դիտմանը: Պարզապես բացեք այս հղումը ձեր բրաուզերում: Այն clipboard-ում պատճենելու համար սեղմեք «Պատճենել» կոճակը:

IN իրական հավելվածներինչպես վեբինարները, դասախոսությունները, առցանց վիդեո հեռարձակումները կամ ինտերակտիվ հեռուստատեսությունը, մշակողները պետք է տարածեն այս նույնացուցիչը որոշակի խմբերհեռուստադիտողներ, որպեսզի նրանք կարողանան միանալ անհրաժեշտ հոսքերին, բայց սա արդեն հավելվածի տրամաբանությունն է։ WebRTC Մեդիա և հեռարձակման սերվեր չի ազդում դրա վրա, այլ միայն տարածում է տեսանյութեր:

5. Կապը հաստատված է, և հեռուստադիտողը տեսնում է հոսքը էկրանին: Այժմ նա կարող է հղումն ուղարկել մեկ ուրիշին, դադարեցնել հեռարձակումը կամ միացնել ամբողջ էկրանով ռեժիմ, օգտագործելով ներքևի աջ անկյունում գտնվող հսկիչները:

WebRTC առցանց հեռարձակման սերվերի փորձարկման արդյունքներ

Թեստերի ժամանակ ուշացումը կատարյալ տեսք ուներ: Տվյալների կենտրոնի Ping-ը մոտ 100 միլիվայրկյան էր, և ուշացումը անտեսանելի էր աչքի համար: Այստեղից մենք կարող ենք ենթադրել, որ իրական ուշացումը նույնն է 100 գումարած կամ մինուս մի քանի տասնյակ միլիվայրկյան բուֆերացման ժամանակի համար: Համեմատած Ֆլեշ տեսանյութ Flash-ն այս թեստերում այնքան լավ չի աշխատում, որքան WebRTC-ը: Այսպիսով, եթե դուք շարժեք ձեր ձեռքը նմանատիպ ցանցի վրա, էկրանի վրա շարժումը կարելի է տեսնել միայն մեկ կամ երկու վայրկյան հետո:

Ինչ վերաբերում է որակին, ապա մենք նշում ենք, որ խորանարդները երբեմն կարող են տարբերվել շարժումներով: Սա համահունչ է VP8 կոդեկի բնույթին և նրա հիմնական նպատակին՝ իրական ժամանակում տեսահաղորդակցություն ապահովել ընդունելի որակով և առանց կապի ուշացումների:

Սերվերը բավականին հեշտ է տեղադրել և կարգավորել այն, չի պահանջում որևէ լուրջ հմտություններ, բացի Linux-ի իմացությունից առաջադեմ օգտվողի մակարդակով, որը կարող է հրամաններ կատարել վահանակից ssh-ի միջոցով և օգտագործել; տեքստի խմբագիր. Արդյունքում մեզ հաջողվեց բրաուզերների միջև մեկից շատ առցանց հեռարձակում հաստատել: Լրացուցիչ հեռուստադիտողների միացումը հոսքին նույնպես որևէ խնդիր չառաջացրեց։

Հեռարձակման որակը բավականին ընդունելի է վեբինարների և առցանց հեռարձակումների համար։ Միակ բանը, որ որոշ հարցեր առաջացրեց, տեսանյութի լուծումն էր։ Տեսախցիկը աջակցում է 1280x800, բայց թեստային պատկերի լուծաչափը շատ նման է 640x480: Ըստ ամենայնի, այս հարցը պետք է հստակեցվի մշակողների հետ։

Տեսանյութ վեբ-տեսախցիկից հեռարձակման փորձարկման մասին
WebRTC սերվերի միջոցով

Այս հոդվածի նպատակն է օգտագործել հավասարակցական տեսազրույցի ցուցադրական նմուշ (p2p վիդեո զրույց)՝ ծանոթանալու դրա կառուցվածքին և գործառնական սկզբունքին: Այդ նպատակով մենք կօգտագործենք բազմաօգտատեր peer-to-peer տեսազրույցի ցուցադրությունը webrtc.io-demo: Այն կարելի է ներբեռնել հղումից՝ https://github.com/webRTC/webrtc.io-demo/tree/master/site:

Հարկ է նշել, որ GitHub-ը կայք կամ վեբ ծառայություն է վեբ նախագծերի համատեղ մշակման համար։ Դրա վրա մշակողները կարող են տեղադրել իրենց մշակումների կոդերը, քննարկել դրանք և շփվել միմյանց հետ։ Բացի այդ, որոշ խոշոր ՏՏ ընկերություններ տեղադրում են իրենց պաշտոնական պահեստները այս կայքում: Ծառայությունն անվճար է բաց կոդով նախագծերի համար: GitHub-ը բաց, անվճար կոդով գրադարանների պահոց է:

Այսպիսով, մենք GitHub-ից ներբեռնված վիդեո զրույցի ցուցադրական նմուշը կտեղադրենք C սկավառակի վրա: անհատական ​​համակարգիչմեր «webrtc_demo» հավելվածի համար ստեղծված գրացուցակում:


Բրինձ. 1

Ինչպես երևում է կառուցվածքից (նկ. 1), գործընկերների հետ տեսազրույցը բաղկացած է լեզվով ներդրված հաճախորդի script.js և server server.js սկրիպտներից։ JavaScript ծրագրավորում. Սկրիպտ (գրադարան) webrtc.io.js (ՀԱՃԱԽՈՐԴ) - ապահովում է բրաուզերների միջև իրական ժամանակում հաղորդակցության կազմակերպում, օգտագործելով հավասարազոր սխեմա՝ «հաճախորդ-հաճախորդ», և webrtc.io.js (CLIENT) և 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/ (տարբերակը v0.10.13-ի 07/15/13-ի դրությամբ): Node.org կայքի գլխավոր էջում սեղմեք ներբեռնման կոճակը և անցեք http://nodejs.org/download/: Համար windows օգտվողներնախ ներբեռնեք win.installer (.msi), ապա գործարկեք win.installer (.msi) համակարգչի վրա և տեղադրեք nodejs-ը և «npm package manager»-ը Program Files գրացուցակում:




Բրինձ. 2

Այսպիսով, node.js-ը բաղկացած է զարգացման և գործարկման միջավայրից JavaScript կոդը, ինչպես նաև ներքին մոդուլների մի շարքից, որոնք կարող են տեղադրվել npm փաթեթի կառավարչի կամ կառավարչի միջոցով:

Մոդուլներ տեղադրելու համար դուք պետք է հրամանի տողՀավելվածի գրացուցակից (օրինակ՝ «webrtc_demo») գործարկեք հրամանը. npm տեղադրել module_name. Մոդուլների տեղադրման ժամանակ npm կառավարիչը ստեղծում է node_modules թղթապանակ այն գրացուցակում, որտեղից կատարվել է տեղադրումը։ Գործողության ընթացքում nodejs-ը ավտոմատ կերպով միացնում է մոդուլները node_modules գրացուցակից:

Այսպիսով, node.js-ը տեղադրելուց հետո բացեք հրամանի տողը և թարմացրեք էքսպրես մոդուլը webrtc_demo գրացուցակի node_modules պանակում՝ օգտագործելով npm փաթեթի կառավարիչը.

C:\webrtc_demo>npm տեղադրել էքսպրես

Էքսպրես մոդուլը վեբ շրջանակ է node.js-ի համար կամ վեբ հարթակ՝ հավելվածների մշակման համար։ Էքսպրեսի գլոբալ հասանելիություն ունենալու համար կարող եք տեղադրել այն այսպես. npm install -g express.

Այնուհետև թարմացրեք webrtc.io մոդուլը.

C:\webrtc_demo>npm տեղադրել webrtc.io

Այնուհետև հրամանի տողում մենք գործարկում ենք սերվերը՝ server.js:

C:\webrtc_demo>հանգույց server.js


Բրինձ. 3

Վերջ, սերվերը հաջողությամբ աշխատում է (Նկար 3): Այժմ, օգտագործելով վեբ բրաուզերը, կարող եք կապվել սերվերի հետ IP հասցեով և բեռնել index.html վեբ էջը, որտեղից վեբ զննարկիչը կհանի հաճախորդի սցենարի կոդը՝ script.js և webrtc.io.js script կոդը, և կատարել դրանք: Որպեսզի հասակակից տեսազրույցն աշխատի (երկու բրաուզերի միջև կապ հաստատելու համար), անհրաժեշտ է, որ երկու բրաուզերներից, որոնք աջակցում են webrtc-ին, կապ հաստատեն node.js-ում աշխատող ազդանշանային սերվերի հետ IP հասցեով:

Արդյունքում, կապի հավելվածի հաճախորդի մասի ինտերֆեյսը (վիդեո զրույց) կբացվի տեսախցիկ և խոսափող մուտք գործելու թույլտվության խնդրանքով (նկ. 4):



Բրինձ. 4

«Թույլատրել» կոճակը սեղմելուց հետո տեսախցիկը և խոսափողը միացված են մուլտիմեդիա հաղորդակցության համար: Բացի այդ, դուք կարող եք հաղորդակցվել տեքստային տվյալների միջոցով տեսազրույցի ինտերֆեյսի միջոցով (նկ. 5):



Բրինձ. 5

Հարկ է նշել, որ. Սերվերը ազդանշանային սերվեր է և հիմնականում նախատեսված է օգտատերերի բրաուզերների միջև կապեր հաստատելու համար: Node.js-ն օգտագործվում է server.js սերվերի սկրիպտը գործարկելու համար, որն ապահովում է WebRTC ազդանշան: