Streaming video dan audio - server untuk klien saja

Apakah ada cara untuk melakukan streaming video dan audio di situs web hanya ke klien, menggunakan kamera yang terpasang di server - misalnya, seperti yang dilakukan youtube?

Saya sudah mulai membaca webrtc, tetapi jika saya menggunakan webrtc saya harus membuat server stun/turn dan hal-hal lain, yang untuk streaming satu arah menurut saya tidak perlu (ini hanya pemahaman saya tentang hal-hal tersebut..) karena saya tidak' Saya tidak memerlukan apa pun dari klien, secara harfiah, baik video maupun audio mereka..

Jadi apakah ada cara untuk mencapai hal ini menggunakan html5, streaming hanya dalam satu arah:

server (camera) -> clients

Apakah ada sesuatu tentang ini di luar sana, atau haruskah saya tetap menggunakan webrtc ?


person ToTa    schedule 08.10.2017    source sumber


Jawaban (1)


Saya akan menjelaskan solusi yang mungkin untuk skenario ini, mungkin ada solusi lain, tapi saya harap solusi saya memberi Anda gambaran kasar tentang bagaimana Anda bisa melakukannya dan titik awal untuk mengeksplorasi lebih lanjut tentang kemungkinan luar biasa dari WebRTC. Tolong beri tahu saya jika ada sesuatu yang tidak dipahami.

Jadi, WebRTC adalah proyek terbuka dan gratis yang menyediakan kemampuan Komunikasi Real-Time (RTC) pada browser dan aplikasi seluler melalui API sederhana. Menariknya: WebRTC memiliki dukungan browser yang cukup baik (meskipun tidak di semua browser, Safari baru mulai mendukungnya sebulan yang lalu dengan Safari 11). Namun dalam hal ini kami ingin menggunakan WebRTC di sisi server. Pada akhirnya kita masih bisa memikirkan komunikasi real-time peer-to-peer, dimana salah satu rekan kita adalah servernya.

Saya tidak tahu apakah Anda familiar dengan Node.js, namun saya menyarankan Anda untuk menulis aplikasi Server Anda dengannya (‹3 Javascript!):

Semua di atas adalah tugas terkait WebRTC, dalam hal ini: streaming video peer(server)-to-peer(browser).


Sekarang, mari kita bicara tentang proses sinyal, setrum dan putar.

  • Pemberian sinyal: bayangkan sekarang sebuah skenario peer-to-peer dengan 2 browser, mereka ingin membuat koneksi langsung dan melakukan streaming video dan audio antara satu sama lain. Tapi mereka tidak saling mengenal, seperti jika saya tidak tahu alamat rumah Anda, saya tidak bisa mengirimi Anda surat. Sehingga mereka membutuhkan sebuah layanan yang membantu mereka untuk saling mengenal satu sama lain, sehingga mereka dapat memiliki IP satu sama lain. Hal ini harus dilakukan oleh apa yang disebut "server sinyal". Jika Anda mengetahui IP rekan lainnya, Anda tidak memerlukan server sinyal.

  • STUN/TURN: skema di atas bekerja dengan sempurna di jaringan area lokal di mana setiap peer memiliki alamat IP sendiri dan tidak ada firewall dan router di antara keduanya. Namun sebaliknya, Anda dapat memiliki rekan di belakang NAT atau firewall, dan server sinyal Anda tidak akan dapat membuat kedua rekan tersebut menemukan dirinya sendiri. Jika Anda memiliki rekan di belakang NAT, Anda memerlukan server STUN, dan jika Anda memiliki rekan di belakang firewall, Anda memerlukan server TURN. Ini sedikit disederhanakan, tapi saya hanya ingin Anda memiliki gambaran umum kapan Anda mungkin memerlukan server STUN/TURN.

Untuk lebih memahami Signaling, STUN dan TURN, ada artikel yang sangat gamblang yang menjelaskannya dengan sempurna.


Sekarang, untuk skenario Anda:

  • Saya pikir Anda mungkin tidak memerlukan server STUN/TURN dan Anda juga mungkin tidak perlu menerapkan proses pensinyalan, karena browser yang seharusnya menerima aliran dari server akan mengetahui alamat server itu, bukan? Sehingga mereka dapat membuat koneksi WebRTC dengannya.
  • EDIT: kemungkinan besar Anda perlu menerapkan semacam jabat tangan antara server dan klien (browser), jadi ini akan menjadi proses pemberian sinyal. Ini bukan bagian dari WebRTC dan inilah alasannya Anda perlu menerapkannya sendiri. Seperti yang saya katakan, ini adalah cara 2 rekan dapat menemukan satu sama lain, tetapi mereka juga bertukar informasi sesuai kondisi media lokal mereka, seperti codec, resolusi yang dapat mereka tangani, dll. Untuk kasus Anda, server sinyal Anda dapat dihosting di server yang sama Anda gunakan untuk streaming: Anda dapat membuat aplikasi node.js kecil yang berjalan di sana dan mengelola semua proses pensinyalan dengan mudah, ini bukan masalah besar. Saya sarankan Anda membaca artikel ini, dan khususnya bagian "Bagaimana cara membangun layanan persinyalan?". Secara umum semua artikel WebRTC dari situs tersebut sangat membantu.

Apakah ini masuk akal bagi Anda? Saya pikir dengan itu Anda dapat mulai menggali lebih banyak dan melihat apakah ini sudah cukup atau Anda perlu menerapkan lebih banyak hal. Semoga bisa membantu!

person elbecita    schedule 17.10.2017