我希望做几个小项目试验从客户端到服务器和客户端 - 服务器 - 多点的视频和音频流,我有几个问题:
1)我知道并不是从点到点避免服务器中间使用webrtc的硬流,但是可以使用webrtc将客户端流到服务器(在websocket上存在一些好处,或者webrtc中的好处是避免中间通信)...如何流式传输视频和音频?
使用websocket流式传输视频或音频非常简单,但我找不到任何使用webrtc流式传输客户端服务器的经验 .
2)如何将视频流式传输到倍数点,我知道最近有一些关于webrtc的实验,因为最初这是不可能的,现在:当用于1到多点时,webrtc性能会降低吗?...将是一个更好的想法流式传输到服务器(可能使用webrtc),然后使用websockets流式传输到几个点?
非常感谢,请不要粗鲁,我的问题不是主观或比较两种技术,更多的是知道哪些是限制,我在哪里可以使用每一个...谢谢!
5 回答
Peer2Peer?
可以使用WebRTC完成,而不是使用WebSockets . 见Do websockets allow for p2p (browser to browser) communication?
浏览器支持?
WebRTC:Chrome Firefox(Opera)
WebSockets:Chrome Firefox IE Safari(Opera等)
运输?
WebRTC:UDP(SRTP),(也可能:带有TURN服务器的TCP模式)希望总是端到端加密,但I'm not sure in case of TURN servers
WebSockets:TCP,可以通过HTTPS / WSS保护,但不能在对等体之间端到端保护!
是的,它可能......
尝试使用KURENTO与WEBRTC .
您可以在其文档中找到“一对多”呼叫应用程序,从客户端到服务器和服务器再到许多客户端 .
我不同意MarijnS95,因为我认为WebRTC不是专为浏览器而设计的 . 您可以在任何平台以及浏览器之外的任何服务器或客户端应用程序中使用它 . 那是好事 .
WebRTC只是一组已经存在的协议,捆绑在一起提供实时通信 . 它被称为网络,因为谷歌希望使用浏览器使其广泛使用(这是传播这个词的重要一步)......
所以,回答你的问题:WebRTC比WebSockets更好地传输媒体内容,原因很明显 .
创建WebSockets以 Build 与服务器的TCP连接,以便您可以进行双向连接 .
WebRTC Build 与任何其他对等体(不仅是服务器)的连接,最重要的是,它使用SRTP(安全实时协议)来传输媒体内容 . 顾名思义,该协议是为了传输实时信息而创建的,最好是通过UDP传输 . 另外,网络上的许多点将RTP视为特权协议 .
因此,优势显而易见,但是,您也可以使用WebSockets来传输数据 .
嗯,WebRTC使用标准协议,您可以使用标准服务器来支持它 . 做一些关于Asterisk WebRTC的搜索 .
关于多点问题,答案是一样的 . 使用WebRTC可以获得更好的结果(无论是否转到服务器) . 正如您所说,对等 Session 的问题是已知的,并且解决方案确实是使用服务器将每个客户端的流数量减少到一个 . 在理想的世界中,您将使用MCU来完成这项工作 . 这就是它的完成方式 .
WebRTC适用于浏览器 . 你说的没错:
它特别适用于浏览器 . 您可以 Build 与服务器的连接,但它必须具有UI(带GUI的ubuntu服务器),并安装浏览器(但这不是我想要的) . 除此之外,没有其他方法可以流式传输到服务器而不是websockets .
根据另一个答案,可以与启用RTC的服务器进行流式传输
关于多个流,这是一个但很难 . 我answered a question关于使用webrtc作为多个点对点 . 也许这就是你能做的,但是需要一个好的代码来管理谁应该连接到谁,并且只是链接你的用户 . 在这种情况下,服务器是最好的(如果你想使用浏览器兼容性,websockets比webRTC,even IE supports them now(?!?!)更受支持 .
你可能想要一个结论:
减少服务器负载,点对点:webRTC
多人连接等:带有中间服务器的WebSockets .
请注意,webRTC需要进行一些数据交换才能启动 . 您可以使用node.js中的websocket服务器轻松完成此操作 .
希望这会对您的开发过程有所帮助,我希望您能听到您将使用哪种解决方案!
我不知道这个问题是否仍然需要一个明确的答案,但我想这样做类似的事情 .
我个人使用Node.js和Node.js的以下插件来在服务器端启用WebRTC:node-webrtc . 它目前仅支持Linux和Mac OSX,但它允许我快速设置WebRTC服务器 . 然后,您可以使用服务器将流分发给其他对等方,这些对等方使用WebSockets,WebRTC或其他方式进行连接 .
源代码也可以从WebRTC网页免费获得 . 因此,您可以自己构建一个本机应用程序,如果您愿意,它可以充当服务器 .