在 WebRTC 中,我总是看到有关点对点的实现以及如何将视频流从一个客户端传输到另一个客户端。服务器到客户端呢?
WebRTC 是否可以从服务器到客户端流式传输视频文件?(我正在考虑使用 WebRTC Native C++ API 来创建我自己的服务器应用程序,以连接到 chrome 或 firefox 浏览器客户端应用程序上的当前实现。)
好的,如果可能的话,它会比当前许多视频流服务更快吗?
在 WebRTC 中,我总是看到有关点对点的实现以及如何将视频流从一个客户端传输到另一个客户端。服务器到客户端呢?
WebRTC 是否可以从服务器到客户端流式传输视频文件?(我正在考虑使用 WebRTC Native C++ API 来创建我自己的服务器应用程序,以连接到 chrome 或 firefox 浏览器客户端应用程序上的当前实现。)
好的,如果可能的话,它会比当前许多视频流服务更快吗?
是的,这是可能的,因为服务器可以是该点对点会话中的对等点之一。如果您尊重协议并使用 VP8 在 SRTP 数据包中发送视频,浏览器将播放它。为了帮助您在其他应用程序或服务器上构建这些组件,您可以查看此页面和此项目作为指南。
现在,将 WebRTC 与其他流媒体服务进行比较……这将取决于几个变量,例如编解码器或协议。但是,例如,将 WebRTC(SRTP over UDP 和 VP8 编解码器)与 Flash(RTMP over TCP 和 H264 编解码器)进行比较,我会说 WebRTC 胜出。
<video>
标签的 Flash Player。但是,当然,一切都取决于您发送给客户的内容。
我已经使用本机 WebRTC API 编写了一些应用程序和插件,目前还没有很多信息,但这里有一些有用的资源可以帮助您入门:
QT 示例:http:
//research.edm.uhasselt.be/jori/qtwebrtc 浏览器原生示例:http: //sourcey.com/webrtc-native-to-browser-video-streaming-example/
我从WebRTC Native C++ to Browser Video Streaming Example开始,但它不再使用实际的WebRTC Native Code构建。
然后我做了修改合并成一个独立的进程:
peerconnection_server
)peerconnection_client
)。 将流从浏览器删除到 WebRTC Native C++ 客户端提供了一个简单的解决方案,可以通过 WebRTC 浏览器访问 GitHub webrtc-streamer提供的 Video4Linux 设备。
我们正在尝试将 MJPEG 替换为 Webrtc 用于我们的服务器软件,并使用与 Openwebrtc 项目相关的少量组件来使用原型模块来执行此操作。这绝对是一件难事,而且我们经常遇到 ICE 协商错误(即使是在一个简单的 LAN 上),但它大部分都有效。
我们还使用 Google Webrtc 模块构建了一个原型,但它有很多依赖项。我发现使用 Openwebrtc 模块更容易,因为 Google 的东西与浏览器上的一般点对点场景紧密相关。
我从头开始编译以下内容:
libnice 0.1.14
gstreamer-sctp-1.0
usrsctp
然后我必须直接与 libnice 互动以收集候选人。还必须手动写出 SDP 文件。但是控制量——能够控制管道的来源——使得它值得。生成的管道(两个客户端关闭一个服务器源)如下:
是的。我们为 Ant Media Server 开发了一个负载测试工具来发布和播放。这个工具可以播放媒体文件。我们使用了Ant Media Server中使用的相同的本机 WebRTC 库。
当然。我正在使用本机 WebRTC api 编写一个程序,它可以作为对等方加入会议并录制视频和音频。
请参阅:如何将音频从浏览器流式传输到 WebRTC 本机 C++ 应用程序
而且您绝对可以从本机应用程序流式传输媒体。
我相信您可以使用dummy_audio_file
从本地文件流式传输音频,并且您可以找到一种自己访问视频流式传输进度的方法。
当然有可能,它允许隐蔽的实时流式传输到 WebRTC,例如:
OBS/FFmpeg ---RTMP---> Server ---WebRTC--> Chrome/Client
对于这种场景,它允许超低延迟的直播,大约 600~800 毫秒,通过 WebRTC 播放直播。请看一下这个演示。