首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Websockets上的视频流

问Websockets上的视频流
EN

Stack Overflow用户
提问于 2014-06-07 14:23:25
回答 2查看 3.1K关注 0票数 3

我试图建立移动应用程序,可以从双方流视频(即像视频通话)。

我研究了webrtc,但这还没有为移动本机应用程序做好准备,而且webrtc所做的是允许浏览器直接捕获摄像头和音频,而不需要插件等。但是在本机移动应用程序中捕获摄像头和音频不是问题,基本上需要一个非常低的延迟和双重传输层。在许多文章和地方,我读到了关于在websockets上使用webrtc的文章。

所以我想我可以用websockets来传输视频。它是正确的还是我遗漏了什么?

我知道webrtc与client...whereas有一个不同之处,websocket直接是客户端-服务器-客户端,有没有办法避免它。就延迟而言,这意味着什么?

EN

回答 2

Stack Overflow用户

发布于 2014-06-07 23:59:42

你一定漏掉了什么。

  • webRTC在移动设备上运行得非常好。在webrtc.org的参考代码(appRTCDEMO)中有针对iOS和安卓的示例/白色客户端,并且有多个应用程序。最后宣布的是appear.in
  • getting流中的视频流和音频流是media API的一部分,而不是每个人说的(getusermedia).
  • webRTC是真正的p2p连接(RTCPeerConnection:传输和防火墙穿越)和媒体引擎(编码,打包,加密)的等式,而你所看到的for.
  • webSockets只是一个传输机制。它不处理防火墙/nat穿越、媒体处理和打包/分块,而这些都必须在应用程序级别实现。
  • 就信令而言,webRTC不指定/强制执行任何协议,而通常的做法是设置信令服务器。应用程序通常使用web套接字或XHR或其他方式连接到服务器,以进行原始握手/呼叫设置。许多应用程序通过使用socket.io等库来抽象这一点。
票数 1
EN

Stack Overflow用户

发布于 2021-11-10 08:02:41

注意:此解决方案可以并且确实适用于移动浏览器。但是,我不知道是否存在Android/IOS环境中所需的所有软件(即使是像React Native这样的软件)。

但是,这个解决方案是可行的。事实上,我已经在树莓派上做过了。

我基本上只是从一个USB摄像头上直播一个FFMPEG流水线,通过管道将它传输到UDP源,有一个“中继”服务,基本上转换UDP包并使用Javascript中的engine.io将其传输到客户端,然后在事物的web端使用这个真正甜蜜的mpeg1编码器将web套接字包解码成mpeg1视频。

所以我通过管道传输ffmpeg流,如下所示:https://github.com/freefarmdata/auto_farm_recorder/blob/master/recorder/src/controllers/streams.py#L13

然后读取UDP流并将其转发到Node应用程序,如:https://github.com/freefarmdata/auto_farm_recorder/blob/master/relay/src/socket.js#L97

然后,我使用如下命令对流进行解码:https://github.com/freefarmdata/auto_farm_recorder/blob/master/web/src/app/widgets/LiveStream.js

请记住,这是使用TCP而不是UDP作为数据传输协议。这意味着为了保持流继续运行,我必须确保我的客户端有足够的带宽用于实时流。如果他们不这样做,我就不能使用RTP或其他东西在我的流上做QOS来降低质量水平。我基本上只需要丢弃数据包,这反过来又会丢弃帧,并在mpeg1解码器中导致奇怪的损坏问题。

从理论上讲,您可以使用engine.io服务这样做,并来回发送有关连接质量的数据包,这将告诉“中继”服务器开始从不同的UDP源(比特率较低的源)拉取数据。

但我离题了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24094410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档