Server WebRTC pada tahun 2020 - Gambaran Umum Fitur

1. Siapa yang membutuhkan WebRTC sisi server?



Seperti yang kita semua tahu, WebRTC adalah teknologi peer-to-peer yang mengimplementasikan saluran komunikasi antara dua browser untuk mentransfer audio, video, dan data lainnya dengan latensi rendah. Teknologi ini sepenuhnya gratis, dan jika aplikasi Anda perlu membangun komunikasi di browser untuk dua peserta jarak jauh, maka Anda dapat menambahkan kode javascript yang sesuai ke halaman web dan masalahnya teratasi. Browser akan berkomunikasi secara langsung, tidak diperlukan server.



WebRTC sisi server memasuki tempat kejadian jika diperlukan lebih dari dua peserta, dan data dari satu peserta dikirim ke beberapa peserta lain sekaligus.



Dalam hal ini, salah satu peserta dapat menjadi server yang akan menjalin komunikasi satu lawan satu dengan peserta pertama, menerima data darinya, kemudian menjalin komunikasi, juga dalam mode

satu lawan satu dengan peserta lain dan mengirimkan data ini kepada mereka. Itu. server memiliki banyak saluran komunikasi peer-to-peer dan hanya menyalin data ke semua saluran ini. Dalam terminologi WebRTC, server seperti itu berfungsi sebagai Unit Penerusan Selektif (SFU).



gambar



Namun, komunikasi kelompok tidak hanya dimungkinkan dengan SFU. Anda mungkin bertanya mengapa setiap orang tidak dapat mengirim data ke semua orang, tanpa server apa pun, dan Anda akan benar. Ini disebut MESH - komunikasi.



Ada dua poin penting di sini:



  1. Dalam skema MESH, setiap peserta mengirim dan menerima aliran data N-1, di mana N adalah ukuran grup. Itu. Persyaratan kecepatan unggah untuk setiap peserta dalam skema MESH meningkat dengan pertumbuhan kelompok. Sedangkan pada skema SFU, setiap peserta selalu mengirimkan hanya satu aliran. Tidak setiap peserta memiliki kecepatan koneksi jaringan yang dapat menangani pengiriman aliran N-1.
  2. , MESH - . , , - . MESH , , VP8/VP9/H264 4 . WebRTC – , . , (PeerConnection). , 720p 30% , . .


Karena dua poin utama tersebut, skema MESH menjadi kurang baik diimplementasikan dengan jumlah peserta yang terus meningkat dan skema SFU harus digunakan.



Jadi, dengan jumlah partisipan komunikasi yang banyak, dibutuhkan server (SFU).

Mari kita berikan contoh aplikasi seperti itu di mana server dibutuhkan:



  • Konferensi video dengan banyak peserta (Zoom yang disukai semua orang menggunakan server WebRTC, seperti semua layanan serupa).
  • Pengawasan video langsung, ketika video dikirim dari satu kamera ke beberapa pemirsa dan perangkat perekam. Sistem keamanan, pemantauan.
  • Sistem interaktif seperti lelang online, tutorial, dan aplikasi web lain yang memerlukan latensi audio / video rendah.


2. Jika Anda masih membutuhkan WebRTC sisi server, apa yang dapat Anda gunakan di tahun 2020?



Layanan cloud atau Anda sendiri?



Di sini, pada awalnya, argumen TI biasa yang mendukung satu atau lainnya: cloud akan menyediakan dan menghemat biaya TI untuk server, konfigurasi, skalabilitas. Tetapi Anda sendiri, jika semuanya berhasil (tidak ada jaminan), itu akan menjadi jauh lebih murah. Bagaimanapun, Anda perlu membayar bulanan untuk layanan cloud.



Sekarang untuk argumen khusus untuk aplikasi yang dijelaskan di atas. Jika Anda memiliki audiens global yang sangat besar, di negara dan wilayah yang berbeda, akan sulit bagi Anda sendiri untuk menggabungkan semuanya. Misalnya, layanan cloud cocok untuk lelang Sotheby. Tetapi jika Anda memiliki 2-3 cabang perusahaan di kota yang berbeda, 200-500 pengguna, dan Anda perlu menyelenggarakan webinar / konferensi / pelatihan, dll. Untuk mereka, Anda dapat menyewa sendiri beberapa server di AWS atau platform hosting serupa, instal di sana perangkat lunak server WebRTC, dan semuanya akan berhasil. Server bahkan dapat berada di perusahaan Anda, jika kecepatan koneksi Internet memungkinkan. Nah, untuk semua solusi dengan skala yang lebih kecil, semuanya bisa dilakukan sendiri.



Saat ini, dua layanan WebRTC cloud terkenal dan diuji: Millicast dan Phenix... Keduanya memiliki cakupan global, konektivitas yang baik antar server di berbagai benua (apakah Anda membutuhkannya?) Dan memang latensi video (latensi) setengah detik atau kurang.



Sekarang mari kita bicara tentang "sendiri".



Anda akan membutuhkan perangkat lunak server WebRTC di sini. Ada 3 cara untuk mendapatkan server seperti itu.



  1. Buat sendiri menggunakan API terbuka. Yang paling terkenal di antaranya adalah Google c ++ WebRTC API . Anda juga dapat menggunakan GStreamer API . Implementasi yang menarik di Go: Pion WebRTC . Anda akan membutuhkan programmer c ++ yang terampil dan banyak kesabaran serta waktu untuk melakukan debug. Saya menulis tentang kesulitan pendekatan ini secara rinci di artikel saya sebelumnya .
  2. . Ant Media Server, Kurento, Janus, Jitsi. , , , . github , . , , , . , c++ . . , .
  3. . , , . Red5 Pro, Flashphoner Unreal Media Server.


WebRTC .



Ini adalah topik yang paling bermasalah. Misalkan perusahaan Anda merilis produk perangkat lunak di mana Anda perlu menerapkan server WebRTC. Biarkan itu menjadi sistem perekaman dan pengawasan video untuk terminal bandara, stasiun kereta api, pusat transportasi. Atau peralatan medis dengan perangkat lunak yang menyertai yang sudah ada untuk menyiarkan dan merekam video dari endoskopi, yang perlu diperluas sebelum menyiarkan video ini ke browser. Atau sistem simulasi penerbangan, di mana perlu untuk mengimplementasikan kemungkinan visualisasi di browser dan / atau interaksi dengan pengguna jarak jauh. Kami terus-menerus dihadapkan pada persyaratan serupa. Sistem Anda yang ada memiliki banyak batasan. Akses internet mungkin tidak tersedia. Tidak ada awan. Anda tidak dapat membuka port di server. Khusus Windows atau Linux saja. Kadang-kadang bahkan hanya versi Windows tertentu, karena produk yang ada diasah untuk itu. Server WebRTC,apa yang ditambahkan ke sistem seperti itu harus disesuaikan dengan semua batasan ini.



Di sini, Anda mungkin tidak punya pilihan selain menggunakan server open source seperti Ant Media Server atau Janus dan mengubahnya. Ini adalah situasi di Linux. Untuk Windows, Unreal Media Server cocok - ini adalah perangkat lunak yang ditulis dan dioptimalkan hanya untuk OS Windows.



Server WebRTC sangat intensif sumber daya



Ingatlah hal ini saat merencanakan sumber daya Anda. Alasan intensifnya sumber daya seperti itu dijelaskan oleh saya di artikel sebelumnya , tetapi kesimpulannya adalah bahwa skalabilitas dicapai dengan prosesor yang sangat kuat atau dengan menambahkan server fisik.



Berikut adalah diagram pengujian yang dilakukan dengan Unreal Media Server v13.0 pada instance AWS EC2 m4.2xlarge: Intel Xeon 8 core CPU E5-2686 v4 @ 2,30 GHz, RAM 32 Gb, Windows Server 2016.



gambar



Seperti yang Anda lihat dari diagram, dengan 1000 web player simultan untuk kamera IP ini , beban prosesor adalah 5% dengan protokol RTMP, dan 75% dengan protokol WebRTC, mis. WebRTC lebih dari 10 kali lebih intensif sumber daya daripada RTMP.