დაზღვევა მრავალი კორესპონდენტის ჩატისთვის WebRTC ვიკიებით. როგორ მოვაწყოთ WebRTC ონლაინ მაუწყებლობა დამატებითი ვებკამერისა და VPS სერვერის გამოყენებით WebRTC მედია და მაუწყებლობის სერვერის ინსტალაცია

დღეს WebRTC არის ცხელი ტექნოლოგია ბრაუზერებში აუდიოსა და ვიდეოს ნაკადისთვის. კონსერვატიული ტექნოლოგიები, როგორიცაა HTTP Streaming და Flash, უფრო შესაფერისია ჩაწერილი შინაარსის გასავრცელებლად (ვიდეო მოთხოვნით) და მნიშვნელოვნად ცვლის WebRTC-ს რეალურ დროში და ონლაინ მაუწყებლობაზე. სადაც ვიდეოს მინიმალური დაბინდვაა საჭირო, რაც მაყურებელს საშუალებას აძლევს უყუროს პირდაპირ ეთერში ნანახს.

რეალურ დროში მკაფიო კომუნიკაციის შესაძლებლობა ჰგავს თავად WebRTC არქიტექტურას, სადაც ვიდეო ნაკადების ტრანსპორტირება იყენებს UDP პროტოკოლს, რომელიც წარმოადგენს ვიდეოს მინიმალური შეფერხებით გადაცემის სტანდარტულ საფუძველს და ფართოდ გამოიყენება რეალურ დროში საკომუნიკაციო სისტემებში.

საკომუნიკაციო კონტენტი მნიშვნელოვანია ონლაინ მაუწყებლობის სისტემებში, ვებინარებში და სხვა აპლიკაციებში, რომლებიც საჭიროებენ ინტერაქტიულ კომუნიკაციას ვიდეო კონტენტთან, საბოლოო მომხმარებლებთან და მოითხოვს მეტს.

WebRTC-ის ცდის კიდევ ერთი მიზეზი არის გიჟური ტენდენცია. დღევანდელი სკინები Android Chrome ბრაუზერიის მხარს უჭერს ამ ტექნოლოგიას, რომელიც გარანტიას იძლევა მილიონობით მოწყობილობას, რომლებიც მზად არიან უყურონ მაუწყებლობას დამატებითი პროგრამული უზრუნველყოფის ან კონფიგურაციის დაყენების გარეშე.

WebRTC ტექნოლოგიის შესამოწმებლად და მასზე მარტივი ონლაინ მაუწყებლობის დასაწყებად, ჩვენ გამოვიყენეთ სერვერი Flashphoner WebRTC Media & Broadcasting Server პროგრამულ უზრუნველყოფაში. ფუნქციები ამტკიცებენ WebRTC ნაკადების გადაცემის შესაძლებლობას „ერთი-მეთამდე“ რეჟიმში, ასევე IP კამერებისა და ვიდეო თვალთვალის სისტემების მხარდაჭერა RTSP პროტოკოლის მეშვეობით; ამ კუთხით, ჩვენ ყურადღებას ვამახვილებთ ვებ მაუწყებლებზე და მათ მახასიათებლებზე.

WebRTC მედია და მაუწყებლობის სერვერის ინსტალაცია

ბო ამისთვის Windows სისტემასერვერის ვერსია არ ჩანდა და არ მინდოდა ვირტუალური აპარატის დაყენება, როგორიცაა VMWare+Linux; ვერ გავაპროტესტებდი ონლაინ მაუწყებლობას ჩემს სახლის Windows კომპიუტერზე. დროის დაზოგვის მიზნით, ჩვენ გადავწყვიტეთ ავიღოთ მაგალითი ცუდი ჰოსტინგის შესახებ ასეთ პლატფორმაზე:

ეს არის Centos x86_64 ვერსია 6.5 ყოველგვარი წინასწარ დაინსტალირებული პროგრამული უზრუნველყოფის გარეშე ამსტერდამის მონაცემთა ცენტრში. ამრიგად, ყველაფერი, რაც ჩვენ წესრიგში მივიღეთ, იყო სერვერზე და ssh წვდომაზე. მათთვის, ვინც იცის კონსოლის შესახებ Linux ბრძანებები WebRTC სერვერის დაყენება უნდა იყოს მარტივი და უმტკივნეულო. ოჰ, რა მოგვცეს:

1. გამოიკვლიეთ არქივები:

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

2. როზპაკუვატი:

$tar -xzf ჩამოტვირთვა-wcs5-server.tar.gz

3. Დაინსტალირება:

$cd FlashphonerWebCallServer

ინსტალაციამდე შეიყვანეთ სერვერის IP მისამართი: XXX.XXX.XXX.XXX

4. ლიცენზიის გააქტიურება:

$cd /usr/local/FlashphonerWebCallServer/bin

$./activation.sh

5. WCS სერვერის დაწყება:

$service ვებ ზარის სერვერის დაწყება

6. შეამოწმეთ ჟურნალი:

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

7. გთხოვთ გაითვალისწინოთ, რომ არსებობს ორი პროცესი:

$ps aux | grep ფლეშფონერი

ინსტალაციის პროცესი დასრულებულია.

WebRTC ონლაინ მაუწყებლობის ტესტირება

გადაცემების ტესტირება საკმაოდ მარტივი აღმოჩნდა. სერვერის ბირთვი არის ვებ კლიენტი, რომელიც შედგება ათეული Javascript, HTML და CSS ფაილისაგან, რომლებიც გადმოვწერეთ /var/www/html საქაღალდეში ინსტალაციის ეტაპზე. ერთადერთი, რაც უნდა გააკეთოთ, არის სერვერის IP მისამართის შეყვანა flashphoner.xml კონფიგურაციაში, რათა ვებ კლიენტმა შეძლოს კავშირის დამყარება HTML5 Websockets სერვერთან. მოდით აღვწეროთ ტესტირების პროცესი.

1. ჩვენ ვხსნით სატესტო კლიენტის გვერდს index.html Chrome ბრაუზერში:

2. გადაცემის დასაბეჭდად, თქვენ უნდა დააჭიროთ ღილაკს "დაწყება" ეკრანის შუაში.
სანამ მუშაობას დაიწყებთ, უნდა დარწმუნდეთ, რომ ვებკამერა დაკავშირებულია და მზადაა გამოსაყენებლად. არ არსებობს სპეციალური ვარიანტები ვებკამერებისთვის; მაგალითად, ჩვენ გამოვიყენეთ ლეპტოპში ჩაშენებული სტანდარტული კამერა ცალკე 1280x800 ჩარჩოთი.

Chrome ბრაუზერმა უნდა მოითხოვოს წვდომა კამერაზე და მიკროფონზე, რათა დარწმუნდეს, რომ თქვენი ვიდეო აიტვირთება ინტერნეტ სერვერზე და დაუშვას მისი წარმოება.

3. ინტერფეისი წარმატებით ავრცელებს ვიდეო ნაკადს კამერიდან WebRTC სერვერზე. ზედა მარჯვენა კუთხეში არის ინდიკატორი, რომელიც მიუთითებს, რომ ნაკადი მიდის სერვერზე, ბოლოში არის ღილაკი "Stop" ვიდეოს გაგზავნის საფეხურისთვის.

დაუბრუნეთ პატივისცემა შეტყობინებას ქვემოთ მოცემული ველიდან. გთხოვთ, შეიყვანოთ უნიკალური იდენტიფიკატორი ამ ნაკადისთვის, რათა ვინმემ შეძლოს შეუერთდეს მას ხელახლა ყურებამდე. Dosit ამ შეტყობინების გასახსნელად თქვენს ბრაუზერში. მისი ბუფერში დასაკოპირებლად, თქვენ უნდა დააჭიროთ ღილაკს "ასლი".

ვებინარების, ლექციების, ონლაინ ვიდეო გადაცემის ან ინტერაქტიული ტელევიზიის რეალური დანამატების შემთხვევაში, დისტრიბუტორებს მოუწევთ ამ იდენტიფიკატორის განაწილება მაყურებელთა ძირითად ჯგუფებზე, რათა მათ დაუკავშირდნენ საჭირო ნაკადებს, მაგრამ ასევე ლოგიკურ რობოტებს. პროგრამები. WebRTC მედია და მაუწყებლობის სერვერი ის არ მუშაობს, მაგრამ მხოლოდ ავრცელებს ვიდეოებს.

5. კავშირი დაინსტალირებულია და მაყურებელი აჩვენებს ნაკადს ეკრანზე. ახლა თქვენ შეგიძლიათ გაუგზავნოთ შეტყობინება სხვას, შეაჩეროთ ნაკადი ან გაჩუმდეთ სრული ეკრანის რეჟიმი, დაჭერით კონტროლი ქვედა მარჯვენა კუთხეში

WebRTC სერვერის ონლაინ მაუწყებლობის ტესტირების შედეგები

ტესტირების საათში უკანა ოთახი უიმედოდ გამოიყურებოდა. მონაცემთა ცენტრის პინგს დაახლოებით 100 მილიწამი დასჭირდა და გამორთვა თვალისთვის უხილავი იყო. შეიძლება ვივარაუდოთ, რომ ფაქტობრივი შეფერხება არის იგივე 100 პლუს-მინუს რამდენიმე ათეული მილიწამი ბუფერულ საათში. Flash ვიდეოსთან შედარება: Flash-ის ასეთი ტესტები არ მუშაობს ისე კარგად, როგორც WebRTC. ასე რომ, თუ ხელებს მსგავს დონეზე მოძრაობთ, ეკრანზე მოძრაობა მხოლოდ ერთი ან ორი წამის შემდეგ გამოჩნდება.

თუმცა, მნიშვნელოვანია, რომ კუბურები გვერდებზე ნაჭრებად დაჭრათ. ეს მიუთითებს VP8 კოდეკის ბუნებაზე და მისი მთავარი მიზანია უზრუნველყოს რეალურ დროში ვიდეო კომუნიკაციები სასიამოვნო სიცხადით და კომუნიკაციის შეფერხების გარეშე.

სერვერის ინსტალაცია და კონფიგურაცია მარტივია, მისი გაშვებისთვის არ გჭირდებათ რაიმე სერიოზული უნარ-ჩვევები გარდა Linux-ის ცოდნისა, როგორც ჰაკერის ცოდნისა, რომელსაც შეუძლია კონსოლიდან ბრძანებების შეყვანა ssh-ის საშუალებით და შესვლა. ტექსტის რედაქტორი. შედეგად, ჩვენ შევძელით გავაუმჯობესოთ ერთიდან ბევრზე ონლაინ მაუწყებლობა ბრაუზერებს შორის. დამატებითი დამკვირვებლების სტრიმინგთან დაკავშირებამ ასევე პრობლემა არ გამოიწვია.

გადაცემის ხარისხი ძალიან სასიამოვნო აღმოჩნდა ვებინარებისა და ონლაინ კომუნიკაციებისთვის. ერთადერთი, რაც საჭმელს დაუძახა, იყო ვიდეო. კამერა მხარს უჭერს 1280x800, მაგრამ გარჩევადობა ტესტის სურათზე მსგავსია 640x480. შესაძლოა, თქვენ უნდა შეამოწმოთ კვების ინფორმაცია დისტრიბუტორებთან.

ვიდეო ვებკამერიდან გადაცემის ტესტირებიდან
WebRTC სერვერის საშუალებით

WebRTC (Web Real Time Communications) არის სტანდარტი, რომელიც აღწერს აუდიოს, ვიდეოს და კონტენტის გადაცემას ბრაუზერიდან რეალურ დროში, დანამატების ან სხვა გაფართოებების დაყენების გარეშე. სტანდარტი საშუალებას გაძლევთ გადართოთ ბრაუზერი ვიდეო კონფერენციის ბოლო ტერმინალზე და უბრალოდ გახსნათ ვებ გვერდი ჩამოტვირთვის დასაბეჭდად.

რა არის WebRTC?

ეს სტატია მოიცავს ყველაფერს, რაც საშუალო მომხმარებელმა უნდა იცოდეს WebRTC ტექნოლოგიის შესახებ. მოდით შევხედოთ პროექტის უპირატესობებსა და ნაკლოვანებებს, გამოვავლინოთ რამდენიმე საიდუმლოება და გავიგოთ სად და რატომ ვითარდება WebRTC.

რა უნდა იცოდეთ WebRTC-ის შესახებ?

ვიდეო კომუნიკაციის სტანდარტებისა და ტექნოლოგიების ევოლუცია

Sergiy Yutsaytis, Cisco, ვიდეო+კონფერენცია 2016 წ

როგორ მუშაობს WebRTC?

კლიენტის მხარეს

  • Koristuvach ხსნის გვერდს HTML5 ტეგის დასამატებლად
  • ბრაუზერი ანიჭებს წვდომას მომხმარებლის ვებკამერასა და მიკროფონზე.
  • კლიენტის ვებსაიტზე JavaScript კოდი აკონტროლებს კავშირის პარამეტრებს (IP მისამართები და WebRTC სერვერის ან სხვა WebRTC კლიენტების პორტები) NAT და Firewall-ის გვერდის ავლით.
  • როდესაც თქვენ წაშლით ინფორმაციას ბრაუზერის შესახებ ან სტრიმინგს კონფერენციიდან, რომელიც შერეულია სერვერზე, ბრაუზერი იწყებს არჩეული აუდიო და ვიდეო კოდეკების მიღებას.
  • იწყება WebRTC კლიენტებს შორის ნაკადის მონაცემების კოდირებისა და გადაცემის პროცესი (ჩვენს შემთხვევაში ბრაუზერსა და სერვერს შორის).

WebRTC სერვერის მხარეს

ორ მონაწილეს შორის მონაცემების გასაცვლისთვის, ვიდეო სერვერი არ არის საჭირო, მაგრამ თუ თქვენ გჭირდებათ რამდენიმე მონაწილის გაერთიანება ერთ კონფერენციაში, საჭიროა სერვერი.



ვიდეო სერვერი ამოიღებს მედია ტრაფიკს სხვადასხვა მოწყობილობებიდან, გარდაქმნის მას და აძლიერებს მომხმარებლებს, როგორც ტერმინალი, რომელიც იყენებს WebRTC-ს.

WebRTC სერვერი ასევე წყვეტს მედია ტრაფიკს WebRTC ბანკეტებიდან და გადასცემს მას კონფერენციის მონაწილეებს, როგორიცაა vikorist პროგრამები დესკტოპ კომპიუტერებიან კიდევ მობილური მოწყობილობები, არის შემთხვევები, როცა ასეთი რამ აშკარაა.

უპირატესობები სტანდარტთან მიმართებაში

  • არ არის საჭირო PZ-ის დაყენება.
  • კავშირის სიმწარე ძალიან მაღალია:
    • მოძებნეთ მიმდინარე ვიდეოები (VP8, H.264) და აუდიო კოდეკები (Opus).
    • ავტომატურად არეგულირებს დინებას სარეცხი აუზის ქვეშ.
    • დაინერგა ხმაურის შემცირების სისტემა.
    • მიკროფონის მგრძნობელობის დონის ავტომატური რეგულირება (AGC).
  • უსაფრთხოების მაღალი დონე: ყველა კომუნიკაცია დაცული და დაშიფრულია TLS და SRTP პროტოკოლების გამოყენებით.
  • არსებობს შინაარსის შენახვის მექანიზმი, მაგალითად, სამუშაო მაგიდაზე.
  • ნებისმიერი საკონტროლო ინტერფეისის განხორციელების შესაძლებლობა HTML5 და JavaScript-ზე დაფუძნებული.
  • ინტერფეისის ინტეგრირების შესაძლებლობა ნებისმიერ back-end სისტემასთან WebSockets-ის გამოყენებით.
  • პროექტი ღია კოდით შეიძლება გავრცელდეს თქვენს პროდუქტზე ან სერვისზე.
  • True cross-platform: იგივე WebRTC დანამატები კარგად იმუშავებს ნებისმიერ ოპერაციულ სისტემაზე, დესკტოპზე თუ მობილურზე, სანამ ბრაუზერი მხარს უჭერს WebRTC-ს. მნიშვნელოვანია რესურსების დაზოგვა პროგრამული უზრუნველყოფის შემუშავებისთვის.

არ არის საკმარისი სტანდარტისთვის

  • ჯგუფური აუდიო და ვიდეო კონფერენციების ორგანიზებისთვის საჭიროა ვიდეოკონფერენციის სერვერი, რომელიც აერთიანებს მონაწილეთა ვიდეოს და ხმას, რადგან ბრაუზერს არ შეუძლია რამდენიმე ნაკადის სინქრონიზაცია, რომლებიც შედიან ერთმანეთთან.
  • ყველა WebRTC გადაწყვეტა ერთმანეთში აბსურდულია, რადგან... სტანდარტი გულისხმობს არა მხოლოდ ვიდეო და ხმის გადაცემის მეთოდებს, არამედ აბონენტების მიმართვის მეთოდების განხორციელებას, მათი ხელმისაწვდომობის გაზრდას, ასოცირებული ფაილების გაცვლას, დაგეგმვას და ა.შ., გამყიდველამდე.
  • სხვა სიტყვებით რომ ვთქვათ, თქვენ ვერ შეძლებთ ერთი დისტრიბუტორის WebRTC პროგრამების სხვა დისტრიბუტორის WebRTC აპლიკაციებზე გადატანას.
  • ჯგუფური კონფერენციების შერევა დიდ ფინანსურ რესურსებს მოითხოვს, ამიტომ ამ ტიპის ვიდეო კომუნიკაცია მოითხოვს შესყიდვებს ფასიანი გამოწერაან ინვესტიცია ჩადეთ საკუთარ ინფრასტრუქტურაში, სადაც თითოეული კონფერენცია მოითხოვს ყოველდღიური პროცესორის 1 ფიზიკურ ბირთვს.

WebRTC-ის საიდუმლოებები: როგორ შეუძლიათ მოვაჭრეებს ამოიღონ ღირებულება დამარღვეველი ვებ ტექნოლოგიიდან


Tsachi Levent-Levi, Bloggeek.me, ვიდეო+კონფერენცია 2015 წ

WebRTC ბაზრის ვიდეო კონფერენციისთვის

გაიზარდა ვიდეოკონფერენციის ტერმინალების რაოდენობა

WebRTC ტექნოლოგიამ ხელი შეუწყო ვიდეო კონფერენციების ბაზრის განვითარებას. 2013 წელს WebRTC-ის მხარდაჭერით პირველი ბრაუზერების გაჩენის შემდეგ, მსოფლიოში ვიდეოკონფერენციის ტერმინალების რაოდენობა მკვეთრად გაიზარდა 1 მილიარდი მოწყობილობით. არსებითად, კანის ბრაუზერი გახდა ვიდეო კონფერენციის ტერმინალი, რომელიც არ აყენებს კომპრომისს მის აპარატურულ კოლეგებს კავშირის ხარისხის თვალსაზრისით.

მოძებნეთ სპეციალიზებული გადაწყვეტილებები

სხვადასხვა JavaScript ბიბლიოთეკებისა და ბნელი სერვისების API-ების კომბინაცია WebRTC-ის მხარდაჭერით საშუალებას გაძლევთ მარტივად დაამატოთ ვიდეო მხარდაჭერა ნებისმიერ ვებ პროექტში. ადრე, მონაცემების რეალურ დროში გადასაცემად, დისტრიბუტორებს უნდა ესწავლათ რობოტული პროტოკოლების პრინციპები და გამოეყენებინათ სხვა კომპანიების პრაქტიკა, რაც ხშირად მოითხოვდა დამატებით ლიცენზირებას, რამაც გაზარდა ხარჯები. WebRTC ახლა აქტიურად რეკლამირებულია ისეთ სერვისებში, როგორიცაა „საიტზე დარეკვა“, „ონლაინ ჩატის მხარდაჭერა“ და ა.შ.

ყოფილი Koristuvacham Skype Linux-ისთვის

2014 წელს Microsoft-მა გამოაცხადა Skype for Linux პროექტის მხარდაჭერა, რამაც დიდი იმედგაცრუება გამოიწვია IT მუშაკებში. WebRTC ტექნოლოგია არ არის მიბმული ოპერაციულ სისტემასთან, მაგრამ დანერგილია მხოლოდ ბრაუზერის დონეზე. Linux-ის მომხმარებლებს შეუძლიათ გამოიყენონ პროდუქტები და სერვისები WebRTC-ზე დაფუძნებული, როგორც სკაიპის სრული შემცვლელი.

კონკურენცია Flash-ით

WebRTC და HTML5 გახდა საბედისწერო დარტყმა Flash ტექნოლოგიაზე, რომელიც უკვე განიცდიდა თავის უარეს ბედს. 2017 წლიდან სადენიანი ბრაუზერებმა ოფიციალურად შეწყვიტეს Flash-ის მხარდაჭერა და ტექნოლოგია დარჩა ბაზარზე. მაგრამ საჭიროა Flash-ის უფრო ეფექტური დანერგვა, თუნდაც ვებ კონფერენციების ბაზრის შექმნით და ბრაუზერებში პირდაპირი სტრიმინგის ტექნიკური შესაძლებლობების დამკვიდრებით.

ვიდეო პრეზენტაციები WebRTC

დიმიტრო ოდინცოვი, TrueConf, ვიდეო+კონფერენცია ჟოვტენი 2017 წ

WebRTC კოდეკები

აუდიო კოდეკები

WebRTC აუდიო ტრაფიკის შეკუმშვისთვის გამოიყენება Opus და G.711 კოდეკები.

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-მდე), მხარს უჭერს ცვლადი ბიტის სიჩქარეს და შეკუმშვის მაღალ დონეს, რომელიც იდეალურია ნაკადის აუდიო სიგნალების გადასაცემად ცვლადი გამტარობის ფარგლებში. Istyu. Opus არის ჰიბრიდული გადაწყვეტა, რომელიც აერთიანებს SILK (ხმის შეკუმშვა, ადამიანის მეტყველების ჩახშობა) და CELT (აუდიო კოდირება) კოდეკების საუკეთესო მახასიათებლებს. კოდეკი ხელმისაწვდომია საზოგადოებისთვის და მასში გამარჯვებული გამომცემლები არ საჭიროებენ იურიდიული გადასახადის გადახდას. სხვა აუდიო კოდეკებთან შედარებით, Opus, რა თქმა უნდა, იმარჯვებს შესრულების სიმდიდრით. შეგიძლიათ ჩამოტვირთოთ პოპულარული კოდეკები დაბალი ბიტური სიჩქარით, როგორიცაა MP3, Vorbis, AAC LC. Opus განაახლებს ხმოვან სურათს ორიგინალთან ყველაზე ახლოს, AMR-WB და Speex-ის ქვემოთ. ეს კოდეკი მალე გამოვა და WebRTC ტექნოლოგიის შემქმნელებმა შეიტანეს ის აუდიო სტანდარტების ყოვლისმომცველ დიაპაზონში, რომელსაც ისინი მიჰყვებიან.

ვიდეო კოდეკები

WebRTC-ისთვის ვიდეო კოდეკის არჩევანი იქნა აღებული რამდენიმე საცალო ვაჭრობისგან, შედეგი იყო H.264 და VP8. Თითქმის ყველაფერი მიმდინარე ბრაუზერებიშეურაცხმყოფელი კოდეკების მხარდაჭერა. იმისთვის, რომ ვიდეო კონფერენციის სერვერებმა იმუშაონ WebRTC-თან, საკმარისია მხოლოდ ერთის მხარდაჭერა.

VP8- მაღალი ხარისხის ვიდეო კოდეკი ღია ლიცენზიით, რომელიც გთავაზობთ ვიდეო ნაკადის მაღალი სიჩქარის დეკოდირებას და გაზრდილ სტაბილურობას კადრების დაკარგვამდე. კოდეკი უნივერსალურია, მისი დანერგვა მარტივია აპარატურულ პლატფორმებში, ამიტომ ვიდეოკონფერენციის სისტემების გამყიდველები მას ხშირად იყენებენ თავიანთ პროდუქტებში.

ფასიანი ვიდეო კოდეკი H.264რძალზე ბევრად ადრე რომ გათხოვდა. ამ კოდეკს აქვს ვიდეო ნაკადის შეკუმშვის მაღალი ხარისხი, ხოლო ვიდეოს მაღალი სიკაშკაშე ინარჩუნებს. ტექნიკის ვიდეოკონფერენციის სისტემების კოდეკის მაღალი სიგანე გადასცემს ვიდეო ზარებს WebRTC სტანდარტში.

Google და Mozilla აქტიურად უწევენ VP8 კოდეკს, ხოლო Microsoft, Apple და Cisco H.264-ს (ტრადიციულ ვიდეოკონფერენციის სისტემებთან თავსებადობის უზრუნველსაყოფად). და აქ ჩნდება ძალიან დიდი პრობლემა მუქი WebRTC გადაწყვეტის დეველოპერებისთვის და თუ კონფერენციაში ყველა მონაწილე იყენებს ერთ ბრაუზერს, მაშინ კონფერენცია უნდა იყოს შერეული ერთხელ ერთ კოდეკთან და თუ ბრაუზერები განსხვავებულია მათ შორის, Safari / Edge, მაშინ კონფერენცია ხდება ორჯერ სხვადასხვა კოდეკებში, რომლებიც ორჯერ უნდა გადავიდეს სისტემის სარგებელიმედია სერვერზე და, შედეგად, WebRTC სერვისებზე ხელმოწერების ხელმისაწვდომობა.

WebRTC API

WebRTC ტექნოლოგია დაფუძნებულია სამ მთავარ API-ზე:

  • (მიუთითებს, რომ ვებ ბრაუზერი იღებს აუდიო და ვიდეო სიგნალებს კამერებიდან ან ოპერატორის დესკტოპიდან).
  • RTCPeerConnection(მიუთითებს კავშირს ბრაუზერებს შორის კამერის, მიკროფონისა და დესკტოპის მონაცემების, მედია მონაცემების „გაცვლის“ მიზნით. ასევე, ამ API-ს „ვალდებულებები“ მოიცავს სიგნალის დამუშავებას (მესამე მხარის ხმაურის გასუფთავება, მიკროფონის რეგულირება) და კონტროლს. vicors აუდიო და ვიდეო კოდეკები).
  • RTCData არხი(უზრუნველჰყოფს მონაცემთა ორმხრივ გადაცემას დაინსტალირებული კავშირის მეშვეობით).

პირველ რიგში, თქვენ უარყოფთ წვდომას მომხმარებლის მიკროფონსა და კამერაზე, ბრაუზერი მოგთხოვთ ამის დაშვებას. IN გუგლ ქრომიმოგვიანებით შეგიძლიათ დააყენოთ წვდომა "პარამეტრების" განყოფილებაში; Opera-სა და Firefox-ში მოწყობილობების არჩევა შესაძლებელია დაუყოვნებლივ იმ მომენტში, როდესაც თქვენ გააუქმებთ წვდომას სიიდან. ნებართვის მოთხოვნა ყოველთვის გამოჩნდება HTTP პროტოკოლის გამოყენებისას და ერთხელ, თუ იყენებთ HTTPS:


RTCPeerConnection. ბრაუზერი, რომელიც მონაწილეობს WebRTC კონფერენციაში, პასუხისმგებელია ამ ობიექტზე მის წვდომაზე. RTCPeerConnection-ით, მედიის ერთი ბრაუზერიდან მეორეზე გადატანა შესაძლებელია NAT და სასაზღვრო ეკრანების მეშვეობით. მედია ნაკადების წარმატებული გადაცემისთვის მონაწილეებმა უნდა გაცვალონ ასეთი მონაცემები დამატებითი ტრანსპორტის გამოყენებით, როგორიცაა ვებ-სოკეტები:

  • ინიციატორი მონაწილე უგზავნის სხვა მონაწილეს Offer-SDP (მონაცემთა სტრუქტურა, გადაცემული მედია ნაკადის მახასიათებლებით);
  • სხვა მონაწილე აყალიბებს „დადასტურებას“ - პასუხი-SDP და გადასცემს მას ინიციატორს;
  • შემდეგ მონაწილეებს შორის ეწყობა ICE კანდიდატების გაცვლა, თუ ისინი გამოვლინდებიან (თუ მონაწილეები იმყოფებიან NAT ან სასაზღვრო ეკრანების მიღმა).

მონაწილეებს შორის გაცვლის წარმატებით დასრულების შემდეგ, ორგანიზებულია მედია ნაკადების (აუდიო და ვიდეო) დაუყოვნებელი გადაცემა.

RTCData არხი. მონაცემთა არხის პროტოკოლის მხარდაჭერა ახლახან გამოჩნდა ბრაუზერებში, ამიტომ ეს API შეგიძლიათ ნახოთ WebRTC ვიკიში Mozilla Firefox 22+ და Google Chrome 26+ ბრაუზერებში. დამატებითი დახმარებისთვის მონაწილეებს შეუძლიათ ტექსტური შეტყობინებების გაცვლა ბრაუზერში.

კავშირები WebRTC-ის საშუალებით

დესკტოპ ბრაუზერები ჩვენ მხარს ვუჭერთ

  • Google Chrome (17+) და ყველა ბრაუზერი, რომელიც დაფუძნებულია Chromium ძრავზე;
  • Mozilla FireFox (18+);
  • ოპერა (12+);
  • Safari (11+);

მხარდაჭერილი მობილური ბრაუზერები Android-ისთვის

  • Google Chrome (28+);
  • Mozilla Firefox (24+);
  • Opera Mobile (12+);
  • Safari (11+).

WebRTC, Microsoft და Internet Explorer

უკვე დიდი ხანია, Microsoft-მა დაზოგა ფული WebRTC მხარდაჭერის დისკზე Internet Explorerდა თქვენს ახალ Edge ბრაუზერში. რედმონდის ბიჭებს აღარ უყვართ ტექნოლოგიების კორპორატიული მფლობელების ხელში ჩაგდება, რადგან ვერ აკონტროლებენ მას, ამ პოლიტიკის ღერძს. ალე ეტაპობრივად მარჯვნივ განადგურდა მკვდარი ცენტრიდან, რადგან. WebRTC-ის იგნორირება აღარ არის შესაძლებელი და გამოცხადდა ORTC პროექტი, WebRTC სტანდარტის მსგავსი.

ORTC დისტრიბუტორების სიტყვებით, ეს არის WebRTC სტანდარტის გაფართოება API-ების შემცირებული ნაკრებით. JavaScript-ის საფუძვლებიდა HTML5, რაც ჩემს ორიგინალურ თარგმანში ნიშნავს, რომ ყველაფერი იგივე იქნება, სტანდარტს და მის განვითარებას მხოლოდ Microsoft გააკონტროლებს და არა Google. გაფართოების კოდეკების ნაკრები, რომელსაც მხარს უჭერს H.264 და G.7XX სერიის სხვადასხვა აუდიო კოდეკები, რომლებიც გამოიყენება სატელეფონო და აპარატურულ ვიდეოკონფერენციის სისტემებში. შესაძლებელია, რომ საჭირო გახდეს RDP მხარდაჭერა (შინაარსის გადაცემისთვის) და შეტყობინებების გაცვლა. სანამ საუბარს იტყოდა, Internet Explorer არ იყო გულახდილი კორისტუვაჩების მიმართ, ORTC მხარდაჭერას ჩამოერთმევა Edge. ბუნებრივია, პროტოკოლებისა და კოდეკების ასეთ კომპლექტს მცირე კავშირი აქვს Skype for Business-თან, რაც კიდევ უფრო მეტ ბიზნეს სტაგნაციას ქმნის WebRTC-სთვის.

WebRTC(Web Real-Time Communications) არის ტექნოლოგია, რომელიც საშუალებას აძლევს ვებ დანამატებს და საიტებს შეუფერხებლად გადასცენ აუდიო და/ან ვიდეო მედია ნაკადები, ასევე გაცვალონ დამატებითი მონაცემები ბრაუზერებს შორის, შუამავლების უსიამოვნების გარეშე. სტანდარტების ნაკრები, მათ შორის WebRTC ტექნოლოგია, გაძლევთ საშუალებას გაცვალოთ მონაცემები და ჩაატაროთ თანატოლებთან ტელეკონფერენციები დანამატების ან სხვა მესამე მხარის პროგრამული უზრუნველყოფის დაყენების საჭიროების გარეშე.

WebRTC შედგება მრავალი ურთიერთდამოკიდებული აპლიკაციის პროგრამის ინტერფეისებისგან (API) და პროტოკოლებისგან, რომლებიც ერთდროულად მოქმედებენ. თქვენ მიერ მოძიებული დოკუმენტაცია დაგეხმარებათ გაიგოთ WebRTC-ის საფუძვლები, როგორ დააყენოთ და დააკონფიგურიროთ კავშირები მონაცემთა გადაცემისთვის, მედიის სტრიმინგისთვის და მრავალი სხვა.

სიგიჟე

ვინაიდან WebRTC-ის დანერგვა განვითარების პროცესშია და თქვენს ბრაუზერს აქვს WebRTC ფუნქციონირება, გირჩევთ გამოიყენოთ Google-ის Adapter.js polyfile ბიბლიოთეკა თქვენს კოდზე მუშაობამდე.

Adapter.js გთავაზობთ მრავალფეროვან სოლებსა და პოლიფილებს WebRTC-ის იმპლემენტაციაში ფუნქციების გლუვი ინტეგრაციისთვის კონტექსტებს შორის, რომლებიც მხარს უჭერენ მას. Adapter.js ასევე აგროვებს გენერატორების პრეფიქსებს და ავტორიტეტების სხვა სახელებს, რაც ამარტივებს WebRTC-ზე განვითარების პროცესს, რაც ყველაზე დიდ შედეგს იძლევა. ბიბლიოთეკა ასევე ხელმისაწვდომია NPM პაკეტის სახით.

Adapter.js ბიბლიოთეკის შემდგომი განვითარებისთვის, ჩვენ გაოცებული ვართ.

მე მესმის WebRTC ვიკი

WebRTC-ს აქვს მრავალი დანიშნულება და ამავდროულად უზრუნველყოფს მძლავრი მულტიმედიური შესაძლებლობების ინტერნეტს, მათ შორის აუდიო და ვიდეო კონფერენციის მხარდაჭერას, ფაილების გაზიარებას, ეკრანის გაზიარებას, ავთენტიფიკაციას და თავსებადობას, ძველი სატელეფონო სისტემები, მათ შორის DTMF ტონალური აკრეფის მხარდაჭერა. კვანძებს შორის კავშირები შეიძლება შეიქმნას სპეციალური დრაივერების ან დანამატების საჭიროების გარეშე და ხშირად შუალედური სერვისების გარეშე.

ორ კვანძს შორის კავშირი წარმოდგენილია როგორც ობიექტი RTCPeerConnection ინტერფეისისთვის. სანამ კავშირი ღიად არის დაინსტალირებული, RTCPeerConnection vikorist ობიექტი, მედია ნაკადები (MediaStreams) და/ან მონაცემთა არხები (RTCDataChannel s) შეიძლება დაემატოს კავშირს.

მედია ნაკადები შეიძლება შედგებოდეს მედიის ინფორმაციის ნებისმიერი რაოდენობის ტრეკისგან (ტრეკებისგან). ეს ჩანაწერები წარმოდგენილია MediaStreamTrack ინტერფეისის ობიექტებით და შეიძლება შეიცავდეს მედიის ერთ ან მეტ ტიპს, აუდიოს, ვიდეოს, ტექსტის ჩათვლით (როგორიცაა სუბტიტრები ან თავების სათაურები). ნაკადების უმეტესობა წარმოიქმნება, მინიმუმ, მხოლოდ ერთი აუდიო ტრეკისგან (ერთი აუდიო ჩანაწერიდან) ან ვიდეო ტრეკიდან და შეიძლება გაიგზავნოს და წაშალოს, როგორც ნაკადები (მედია მოცემულ დროს) ან შენახული u ფაილი.

ასევე შესაძლებელია ორ კვანძს შორის კავშირის შექმნა მონაცემთა გაცვლის მიზნით RTCDataChannel ინტერფეისის ობიექტის გამოყენებით, რომელიც შეიძლება გამოყენებულ იქნას სერვისის ინფორმაციის გადასაცემად, მონაცემთა გაცვლისა და პაკეტების თამაშის სტატუსების, ფაილის გადაცემის ან დახურული მონაცემთა გადაცემის არხებისთვის.

საჭიროა დამატებითი დეტალები და ბმულები შესაბამის სახელმძღვანელოებსა და გაკვეთილებზე

WebRTC ინტერფეისები

მათ მეშვეობით, რომლებიც WebRTC უზრუნველყოფს ინტერფეისებს, რომლებიც შეუფერხებლად მუშაობენ სხვადასხვა ამოცანების შესასრულებლად, ჩვენ დავყავით ისინი კატეგორიებად. მიჰყევით ანბანს გვერდითა ზოლზე სწრაფი ნავიგაციისთვის.

რეგულირება კავშირი და keruvannya

ეს ინტერფეისები შერჩეულია კონფიგურაციისთვის, მხარდაჭერისთვის და ქსელში WebRTC კავშირებით. ისინი წარმოადგენენ peer-to-peer მედია კავშირებს, მონაცემთა არხებს და ინტერფეისებს, რომლებიც გამოიყენება კანის კვანძის პოტენციალის შესახებ ინფორმაციის გაცვლისას, საუკეთესო კონფიგურაციის შესარჩევად ორმხრივი მულტიმედიური დიდი კავშირის დაყენებისას.

RTCPeerConnection წარმოადგენს WebRTC კავშირს შორის ლოკალური კომპიუტერი და შორეულ კვანძში. Vikoryst გამოიყენება ორ კვანძს შორის წარმატებული გადაცემის დასამუშავებლად. RTCSessionDescription განსაზღვრავს სესიის პარამეტრებს. RTCSessionDescription კოდი შეიცავს იმ ტიპის აღწერას, რომელიც აჩვენებს მოლაპარაკების პროცესის თითოეულ ნაწილს (წინადადებას/საუბარს) და აღწერს სესიის SDP დესკრიპტორს. RTCIceCandidate არის ინტერნეტ კავშირის ინსტალაციის (ICE) სერვერის კანდიდატი RTCPeerConnection კავშირის დასაყენებლად. RTCIceTransport გთავაზობთ ინფორმაციას თქვენი ინტერნეტ კავშირის შესახებ (ICE). RTCPeerConnectionIceEvent წარმოადგენს მოვლენებს, რომლებიც არჩეულია ICE კანდიდატებისთვის, სახელწოდებით RTCPeerConnection. ამ pod ობიექტს გადაეცემა ერთი ტიპი: icecandidate . RTCRtpSender ამუშავებს მონაცემთა გადაცემას MediaStreamTrack ტიპის ობიექტის მეშვეობით RTCPeerConnection ტიპის ობიექტისთვის. RTCRtpReceiver იღებს და დეკოდირებს მონაცემებს MediaStreamTrack ტიპის ობიექტის მეშვეობით RTCPeerConnection ტიპის ობიექტისთვის. RTCTrackEvent მიუთითებს, რომ შეიქმნა MediaStreamTrack ტიპის ახალი შეყვანის ობიექტი და RTCRtpReceiver ტიპის ობიექტი დაემატება RTCPeerConnection ობიექტს. RTCCertificate უზრუნველყოფს სერთიფიკატს, რომელიც წარმოადგენს RTCPeerConnection ობიექტს. RTCDataChannel წარმოადგენს ორმხრივ მონაცემთა არხს ორ საკომუნიკაციო კვანძს შორის. RTCDataChannelEvent აჩვენებს მოვლენებს, რომლებიც ხდება, როდესაც RTCDataChannel ტიპის ობიექტი უკავშირდება RTCPeerConnection მონაცემთა არხის ტიპის ობიექტს. RTCDTMFSender დაშიფვრავს და გადასცემს ორმაგი ტონიანი მრავალ სიხშირის (DTMF) სიგნალს RTCPeerConnection ტიპის ობიექტისთვის. RTCDTMFToneChangeEvent მიუთითებს ორმაგი ბგერის მრავალ სიხშირის (DTMF) ტონის შეცვლის შეყვანა. ეს პროდუქტი არ იშლება (როგორც სხვაგვარად არ არის მითითებული) და არ ეხება (როგორც სხვაგვარად არ არის მითითებული). RTCStatsReport ასინქრონულად აცნობებს სტატუსს გადაცემული ობიექტისთვის MediaStreamTrack ტიპისთვის. RTCIdentityProviderRegistrar არეგისტრირებს პირადობის პროვაიდერს (idP). RTCIdentityProvider რთავს ბრაუზერის შესაძლებლობას მოითხოვოს იდენტიფიცირებული პირადობის შექმნა ან გადამოწმება. RTCIdentityAssertion აჩვენებს დისტანციური ნაკადის კვანძის ID-ს. თუ უნივერსიტეტი ჯერ არ არის დაინსტალირებული და დადასტურებული, ინტერფეისში გაგზავნილი შეტყობინება გახდება null. ინსტალაციის შემდეგ, მისი შეცვლა შეუძლებელია. RTCIdentityEvent წარმოადგენს პირადობის პროვაიდერის (idP) იდენტიფიკატორის ობიექტს. ობიექტის ტიპის RTCPeerConnection მსგავსია. ერთი ტიპი გადაეცემა ამ ქვეიდენტობის შედეგს. RTCIdentityErrorEvent წარმოადგენს შეცდომის მოვლენას, რომელიც დაკავშირებულია პირადობის პროვაიდერთან (idP). ობიექტის ტიპის RTCPeerConnection მსგავსია. ამ მეთოდით ორი ტიპის შეცდომის გადაცემა ხდება: idpassertionerror და idpvalidationerror.

Pos_bniki

WebRTC არქიტექტურის API-ს მიმოხილვა, რომელსაც იყენებენ დეველოპერები WebRTC-ის შესაქმნელად და განვითარებისთვის და აკრეფის გაფართოებისთვის კიდეების პროტოკოლებიდა კავშირის სტანდარტები. ეს სახე ამ სტანდარტების ჩვენებაა. WebRTC საშუალებას გაძლევთ მოაწყოთ კავშირი მასპინძელ-მასპინძელ რეჟიმში, ბრაუზერში დამატებითი მონაცემების, აუდიოს, ვიდეო ნაკადების ან ნებისმიერი სხვა კომბინაციის გადასაცემად. ამ სტატიაში ჩვენ გადავხედავთ WebRTC სესიის ცხოვრებას, დაწყებული კავშირის დამყარებით და გავივლით მთელ პროცესს დასრულებამდე, როდესაც ის აღარ არის საჭირო. WebRTC API-ს მიმოხილვა WebRTC შედგება მრავალი ურთიერთდამოკიდებული აპლიკაციის პროგრამის ინტერფეისებისგან (API) და პროტოკოლებისგან, რომლებიც ერთად მუშაობენ მონაცემთა და მედია ნაკადების გაცვლის მხარდასაჭერად ორ ან მეტ კვანძს შორის. ეს არის რეპრეზენტაციების სტატისტიკა მოკლე სახეკანის API და yaku meta vin ხელახლა განიხილება. WebRTC საფუძვლები ეს სტატია გაგაცნობთ ბრაუზერული RTC პროგრამების შექმნას. ამ სტატიის ბოლომდე სამუშაო თარიღი არის მედია არხი, რომელიც მუშაობს წერტილიდან წერტილამდე რეჟიმში. WebRTC პროტოკოლები ამ სტატიაში წარმოდგენილია პროტოკოლები, რომელთა გარდა შეიქმნა WebRTC API. ეს სახელმძღვანელო აღწერს, თუ როგორ შეიძლება ვიკორისტოთ ვუზოლ-ვუზოლის და ქსოვის კავშირი

WebRTC არის API, რომელიც მოწოდებულია ბრაუზერის მიერ და საშუალებას გაძლევთ მოაწყოთ P2P კავშირები და გადაიტანოთ მონაცემები პირდაპირ ბრაუზერებს შორის. ინტერნეტში შეგიძლიათ მიიღოთ დიდი დახმარება WebRTC-ის გამოყენებით ძლიერი ვიდეო ჩატის დაწერით. მაგალითად, სტატიის ღერძი არის ჰაბრეზე. ეს ყველაფერი კეთდება ორ კლიენტს შორის. ამ სტატიაში შევეცდები გავიგო როგორ მოვაწყოთ კავშირები და ინფორმაციის გაცვლა სამ და მეტ კლიენტს შორის WebRTC-ის გამოყენებით.

RTCPeerConnection ინტერფეისი არის peer-to-peer კავშირი ორ ბრაუზერს შორის. იმისათვის, რომ შევკრიბოთ სამი ან მეტი თანამშრომელი, ჩვენ უნდა მოვაწყოთ ბადის საზღვარი (საზღვარი, რომელსაც შორის კვანძი უკავშირდება ყველა სხვა კვანძს).
გამოვიყენოთ შემდეგი დიაგრამა:

  1. როდესაც გვერდი ღიაა, მოწმდება ოთახის ID-ის არსებობა მდებარეობა.ჰაში
  2. თუ ოთახის ID არ არის მითითებული, იქმნება ახალი
  3. სასიგნალო სერვერი იკვებება მითითებულ ოთახში გაწევრიანების მსურველთა შეტყობინებებით
  4. Signaling სერვერი აგზავნის შეტყობინებებს ახალი მომხმარებლის შესახებ სხვა კლიენტებს ამ ოთახში.
  5. კლიენტები, რომლებიც უკვე იმყოფებიან ოთახში, უგზავნიან ახალ SDP შეთავაზებას
  6. ახალბედა პასუხობს შეთავაზებას“ და

0. სასიგნალო სერვერი

როგორც ჩანს, მიუხედავად იმისა, რომ WebRTC უზრუნველყოფს P2P კავშირის შესაძლებლობას ბრაუზერებს შორის, მისი მუშაობა მოითხოვს დამატებით ტრანსპორტირებას სერვისის შეტყობინებების გაცვლისთვის. აპლიკაცია, რომელიც იყენებს ამ ტრანსპორტს, არის WebSocket სერვერი, დაწერილი Node.JS-ში socket.io ვიკით:

Var socket_io = მოითხოვს ("socket.io"); module.exports = ფუნქცია (სერვერი) ( var users = (); var io = socket_io(server); io.on("კავშირი", ფუნქცია(სოკეტი) ( // ახალი მფლობელი უნდა მოვიდეს ოთახის სოკეტში.on ("ოთახი)", ფუნქცია(მესიჯი) (var json = JSON.parse(message); // დაამატეთ სოკეტი კლიენტების სიაში, მომხმარებლები = სოკეტი; თუ (socket.room !== განუსაზღვრელი) ( // თუ სოკეტი უკვე რომელ ოთახშია). .id; ამ ოთახში არის ინფორმაცია ახალი მონაწილის მიღების შესახებ socket.broadcast.to(socket.room).emit("new", json.id); )); // განცხადება დაკავშირებული WebRTC-თან (SDP შეთავაზება, SDP პასუხი ან ICE კანდიდატი) socket.on ("webrtc", ფუნქცია(მესიჯი) ( var json = JSON.parse(message); if (json.to !== განუსაზღვრელი && users !== განუსაზღვრელი) ( // მფლობელი მესიჯში მითითებულია მფლობელი) სერვერზე, ჩვენ ვაგზავნით შეტყობინებებს მხოლოდ თქვენ... users.emit("webrtc", message); ) else ( // ...ინფორმაცია ასევე მნიშვნელოვანია ფართოზოლოვანი socket.broadcast.to(socket.room).emit("webrtc", message); ) )); // როდესაც არსებობს კავშირი socket.on("disconnect", function() ( // როდესაც კლიენტი არის დაკავშირებული, ჩვენ ვაცნობებთ სხვებს socket.broadcast.to(socket.room).emit("leave", socket. user_id); წაშალე მომხმარებლები;)); )); );

1.index.html

გვერდის გასასვლელი კოდი მარტივია. სხვა ლამაზმანების განლაგებას აშკარად არ ვაქცევდი პატივი, რასაც ეს სტატია არ ეხება. თუ ვინმეს სურს მისი გალამაზება, განსაკუთრებული სირთულეები არ არსებობს.

WebRTC ჩატის დემო

Დაკავშირებულია 0თანატოლები

2. მთავარი.js

2.0. შეტყობინების ამოღება გვერდის ელემენტებზე და WebRTC ინტერფეისზე
var chatlog = document.getElementById("chatlog"); var message = document.getElementById("მესიჯი"); var connection_num = document.getElementById("connection_num"); var room_link = document.getElementById("room_link");

ჩვენ, როგორც ადრე, უნდა გამოვიყენოთ ბრაუზერის პრეფიქსები WebRTC ინტერფეისებთან ადაპტაციისთვის.

Var PeerConnection = window.mozRTCPeerConnection || window.webkitRTCPeerConnection; var SessionDescription = window.mozRTCSessionDescription || window.RTCSessionDescription; var IceCandidate=window.mozRTCIceCandidate || ფანჯარა.RTCIceCandidate;

2.1. დანიშნული ოთახის ID

აქ ჩვენ გვჭირდება ფუნქცია ოთახისა და სტუმრისთვის უნიკალური იდენტიფიკატორის შესაქმნელად. ჩვენ ვიქნებით გამარჯვებულები ამ UUID-ისთვის.

ფუნქცია uuid() ( var s4 = ფუნქცია() ( return Math.floor(Math.random() * 0x10000).toString(16); ); დაბრუნება s4() + s4() + "-" + s4() + "-" + s4() + "-" + s4() + "-" + s4() + s4() + s4();

შევეცადოთ ამოიღოთ ოთახის ID მისამართიდან. თუ ეს არ არის დაინსტალირებული, წარმოიქმნება ახალი. ჩვენ გამოსახულია საწარმოო ოთახში გაგზავნის გვერდზე და ამავდროულად გენერირდება საწარმოო პროცესის ოპერატორის ID.

Var ROOM = location.hash.substr(1); if (!ROOM) ( ROOM = uuid(); ) room_link.innerHTML = "ბმული ოთახთან"; var ME = uuid();

2.2. WebSocket

როგორც კი გვერდი გაიხსნება, რომელიც დაუკავშირდება ჩვენს სასიგნალო სერვერს, ის სასწრაფოდ ითხოვს ოთახში შეყვანას და, შესაძლოა, მთხოვნელებს ეცნობოს.

// მითითებულია, რომ შეტყობინების დახურვისას აუცილებელია სერვერზე გაფრთხილება მის შესახებ var socket = io.connect("", ("სინქრონიზაციის გათიშვა განტვირთვისას": true)); socket.on("webrtc", socketReceived); socket.on ("ახალი", socketNewPeer); // ის იძულებით ითხოვს შეყვანას ოთახში socket.emit("room", JSON.stringify((id: ME, room: ROOM))); // WebRTC ფუნქციასთან დაკავშირებული მისამართის შეტყობინებების გასაძლიერებლად დამატებითი ფუნქცია sendViaSocket(type, message, to) ( socket.emit("webrtc", JSON.stringify((id: ME, to: to, type: type, data : message) )));

2.3. PeerConnection პარამეტრები

პროვაიდერების უმეტესობა უზრუნველყოფს ინტერნეტთან კავშირს NAT-ის საშუალებით. ამ პირდაპირი კავშირის საშუალებით ეს არ ხდება ისეთი ტრივიალური საკითხი. კავშირის შექმნის შემდეგ, ჩვენ უნდა მივუთითოთ STUN და TURN სერვერების სია, რათა ბრაუზერი გამოიყენებოდეს NAT-ის გვერდის ავლით. ასევე არსებობს რამდენიმე დამატებითი ვარიანტი კავშირისთვის.

Var სერვერი = ( iceServers: [ (url: "stun:23.21.150.121"), (url: "stun:stun.l.google.com:19302"), (url: "turn:numb.viagenie.ca", რწმუნებათა სიგელები: "თქვენ შეგიძლიათ წაიკითხოთ თქვენი სიტყვები", მომხმარებლის სახელი: " [ელფოსტა დაცულია]") ]); var პარამეტრები = ( სურვილისამებრ: [ (DtlsSrtpKeyAgreement: true), // საჭიროა Chrome-სა და Firefox-ს შორის კომუნიკაციისთვის (RtpDataChannels: true) // საჭიროა Firefox-ის მიერ DataChannels API-სთვის ] )

2.4. ახალი ანგარიშის მენეჯერის დაკავშირება

როდესაც ოთახში ახალი ბანკეტი მოვა, სერვერი გვაიძულებს შეგვატყობინოთ ახალი. გთხოვთ, გაითვალისწინოთ თქვენ მიერ შეყვანილი ინფორმაცია და ფუნქცია დააწკაპუნეთ. socketNewPeer.

ვარ თანატოლები = (); ფუნქცია socketNewPeer(data) ( peers = (candidateCache: ); // შექმენით ახალი კავშირი var pc = new PeerConnection(სერვერი, პარამეტრები); // დააწყვეთ იგი initConnection(კომპიუტერი, მონაცემები, "შემოთავაზება"); // შეინახეთ თანატოლი სიაში peers.connection = pc;// შექმენით DataChannel, რომლისთვისაც მოხდება ინფორმაციის გაცვლა var channel = pc.createDataChannel("mychannel", ());channel.owner=data;peers.channel=channel; არხი bindEvents( არხი). ICE კანდიდატი იდენტიფიცირებულია, ის დაემატება სიას შემდგომი წასვლისთვის peers.candidateCache.push(event.candidate); ) else (// კანდიდატის იდენტიფიკაციის დასრულების შემდეგ, საძიებო სისტემა კვლავ მოიძებნება, მაგრამ კანდიდატის გარეშე // რომელი ტიპისთვის ვაგზავნით ბანკეტს პირველ SDP შეთავაზებაზე ან SDP პასუხზე (ფუნქციის პარამეტრისგან დამოუკიდებლად)... sendViaSocket(sdpType, pc.localDescription, id); // ...და შემდეგ ყველა კანდიდატი ნაპოვნი ICE-მდე (var i = 0; i< peers.candidateCache.length; i++) { sendViaSocket("candidate", peers.candidateCache[i], id); } } } pc.oniceconnectionstatechange = function (event) { if (pc.iceConnectionState == "disconnected") { connection_num.innerText = parseInt(connection_num.innerText) - 1; delete peers; } } } function bindEvents (channel) { channel.onopen = function () { connection_num.innerText = parseInt(connection_num.innerText) + 1; }; channel.onmessage = function (e) { chatlog.innerHTML += "

პეერი ამბობს: "+e.data+"
"; }; }

2.5. SDP შეთავაზება, SDP პასუხი, ICE კანდიდატი

ამ შეტყობინებებიდან ერთ-ერთს აირჩევთ, მოგეთხოვებათ შეტყობინება.

ფუნქცია socketReceived(data) ( var json = JSON.parse(data); switch (json.type) ( case "candidate": remoteCandidateReceived(json.id, json.data); შესვენება; შემთხვევა "offer": remoteOfferReceived(json. ) id, json.data); შესვენება; შემთხვევა "პასუხი": დისტანციური

2.5.0 SDP შეთავაზება
ფუნქცია remoteOfferReceived(id, data) (createConnection(id); var pc = peers.connection; pc.setRemoteDescription(new SessionDescription(data)); pc.createAnswer(function(პასუხი) (pc.setLocalDescription(პასუხი); )); ) ფუნქცია createConnection(id) ( if (peers === განუსაზღვრელია) ( peers = (candidateCache: ); var pc = new PeerConnection(სერვერი, პარამეტრები); initConnection(pc, id, "პასუხი"); peers.connection = pc pc.ondatachannel = ფუნქცია(ე) ( peers.channel = e.channel; peers.channel.owner = id; bindEvents(peers.channel); ) )
2.5.1 SDP პასუხი
ფუნქცია remoteAnswerReceived(id, მონაცემები) ( var pc = peers.connection; pc.setRemoteDescription(new SessionDescription(data)); )
2.5.2 ICE კანდიდატი
ფუნქცია remoteCandidateReceived(id, data) (createConnection(id); var pc = peers.connection; pc.addIceCandidate(new IceCandidate(data)); )
2.6. შეტყობინების გაგზავნა

ღილაკზე დაჭერისას გაგზავნაფუნქცია ეწოდება გაგზავნა შეტყობინება. საკმარისია გაიაროთ ბანკეტების სია და სცადოთ ყველასთვის შეტყობინების გაგზავნა.

ამ სტატიების მეტა – peer-to-peer ვიდეო ჩატის (p2p ვიდეო ჩატი) დემონსტრირების გამოყენებით, გაეცანით მის სტრუქტურას და მუშაობის პრინციპს. ამ მიზნით, ჩვენ სწრაფად გავუწევთ კლიენტების დიდ რაოდენობას გაშუქებას peering ვიდეო ჩატის webrtc.io-demo-ს დემონსტრირებით. შეგიძლიათ ჩამოტვირთოთ ის უფასოდ: https://github.com/webRTC/webrtc.io-demo/tree/master/site.

გთხოვთ გაითვალისწინოთ, რომ GitHub არის ვებ-გვერდი ან ვებ სერვისი ვებ პროექტების ყოვლისმომცველი განვითარებისთვის. ამ საიტზე დეველოპერებს შეუძლიათ განათავსონ თავიანთი პროექტების კოდები, განიხილონ ისინი და შეადარონ სათითაოდ. გარდა ამისა, მსხვილი IT კომპანიები ამ საიტზე ათავსებენ ოფიციალურ საცავებს. სერვისი უფასოა ღია კოდის მქონე პროექტებისთვის. GitHub არის ბიბლიოთეკების კოლექცია ღია კოდით.

ასევე, გადმოწერეთ Peer-to-peer ვიდეო ჩეთის დემო ვერსია GitHub-დან და განათავსეთ იგი თქვენი პერსონალური კომპიუტერის C დისკზე ჩვენი webrtc_demo დანამატისთვის შექმნილ დირექტორიაში.


ბრინჯი. 1

როგორც სტრუქტურიდან ჩანს (ნახ. 1), peer-to-peer ვიდეო ჩატი შედგება კლიენტის script.js და სერვერის server.js სკრიპტებისაგან, რომლებიც განხორციელებულია ჩემი JavaScript პროგრამის მიერ. სკრიპტი (ბიბლიოთეკა) webrtc.io.js (CLIENT) - უზრუნველყოფს ბრაუზერებს შორის რეალურ დროში კომუნიკაციის ორგანიზებას peer-to-peer სქემის გამოყენებით: "კლიენტი-კლიენტი", და 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/. ამისთვის კორისტუვაჩივის ფანჯრებიჯერ დააინსტალირეთ win.installer (.msi), შემდეგ გაუშვით win.installer (.msi) კომპიუტერზე, შემდეგ დააინსტალირეთ nodejs და “npm პაკეტის მენეჯერი” Program Files დირექტორიაში.




ბრინჯი. 2

ამრიგად, node.js შედგება JavaScript კოდის ძირითადი განვითარებისა და განვითარებისგან, ასევე შიდა მოდულების ნაკრებისგან, რომლებიც შეიძლება დაინსტალირდეს მენეჯერის ან პაკეტის მენეჯერის npm-ის დახმარებით.

მოდულების დასაყენებლად გჭირდებათ ბრძანების ხაზიპროგრამების დირექტორიადან (მაგალითად, "webrtc_demo") შეიყვანეთ ბრძანება: npm დააინსტალირე module_name. მოდულების ინსტალაციის პროცესში, npm მენეჯერი ქმნის node_modules საქაღალდეს დირექტორიაში, სადაც ინსტალაცია დასრულდა. პროცესისთვის, nodejs ავტომატურად მოიცავს მოდულებს node_modules დირექტორიაში.

ასევე, node.js-ის ინსტალაციის შემდეგ, გახსენით ბრძანების ხაზი და გახსენით express მოდული node_modules დირექტორიაში webrtc_demo npm პაკეტის მენეჯერის გამოყენებით:

C:\webrtc_demo>npm დააინსტალირეთ Express

ექსპრეს მოდული არის ვებ ჩარჩო node.js-ისთვის ან ვებ პლატფორმა პროგრამების შემუშავებისთვის. Express-ზე გლობალური წვდომის მისაღწევად, შეგიძლიათ დააინსტალიროთ იგი შემდეგნაირად: npm ინსტალაცია -g express.

შემდეგ ვაახლებთ webrtc.io მოდულს:

C:\webrtc_demo>npm დააინსტალირეთ webrtc.io

შემდეგ ბრძანების სტრიქონში ჩვენ გავუშვით სერვერი: server.js:

C:\webrtc_demo>node server.js


ბრინჯი. 3

მთელი სერვერი წარმატებით მუშაობს (სურათი 3). ახლა, ვებ ბრაუზერის გამოყენებით, შეგიძლიათ გადახვიდეთ სერვერზე IP მისამართის უკან და შეხვიდეთ ვებ გვერდზე index.html, საიდანაც ბრაუზერი მიიღებს კლიენტის სკრიპტის კოდს - script.js და სკრიპტის კოდს webrtc.io.js. და შემდეგ წაშალეთ ისინი. Peer-to-peer ვიდეო ჩეთის მუშაობისთვის (ორ ბრაუზერს შორის კავშირის დასამყარებლად), გჭირდებათ ორი ბრაუზერი, რომელიც მხარს უჭერს webrtc-ს, დაკავშირება IP მისამართით სიგნალის სერვერთან, რომელიც მუშაობს node.js-ზე.

შედეგად, იხსნება საკომუნიკაციო პროგრამის კლიენტური ნაწილის ინტერფეისი (ვიდეო ჩატი) და იძლევა კამერასა და მიკროფონზე წვდომის საშუალებას (ნახ. 4).



ბრინჯი. 4

ღილაკზე „დაშვების“ დაჭერის შემდეგ, კამერა და მიკროფონი დაკავშირებულია მულტიმედიური ჩაწერისთვის. გარდა ამისა, ვიდეო ჩეთის ინტერფეისის საშუალებით შეგიძლიათ შეაგროვოთ ტექსტური მონაცემები (მცირე 5).



ბრინჯი. 5

აუცილებელია აღინიშნოს, რომ... სერვერი არის სიგნალის სერვერი და ძირითადად გამოიყენება კომპიუტერის მომხმარებლების ბრაუზერებს შორის კავშირების დასამყარებლად. სერვერის სკრიპტის server.js-ისთვის, რომელიც უზრუნველყოფს WebRTC სიგნალიზაციას, გამოიყენება Node.js.