繁体   English   中英

如何在不涉及中间服务器的情况下直接从 HTML 中输出 RTMP 视频

[英]How to directly stream out RTMP video from HTML without involving a middle server

我认为从浏览器直接到 RTMP 服务器建立 RTMP output stream 很简单。 It was looking possible to me when I saw some streaming video API providers offer ready-made iFrame urls that capture the PC camera and establish a stream with their servers when embedded in Html.

然而——我错了。

很容易掌握这些块。 但是如何将它们推送到 RTMP 服务器呢?

 navigator.getUserMedia({
       video: true,
       audio: true
 },

 function (stream) {

     var options = { mimeType: "video/webm; codecs=vp9" };
     mediaRecorder = new MediaRecorder(stream, options);

     mediaRecorder.ondataavailable = handleDataAvailable;
     mediaRecorder.start();

     function handleDataAvailable(event) {

       if (event.data.size > 0) {

         console.log(recordedChunks);

    } 
})

这是不可能的。

浏览器不支持 RTMP,也不允许添加支持所需的原始 sockets。

并且 RTMP 不支持 VP9,因为它的价值。

@szatmary 正确地指出浏览器无法生成 RTMP 流,而且很可能永远也无法生成。

如果您连接在ondataavailable事件处理程序中获得的缓冲区,您将获得 webm 格式的媒体文件。 您可以使用 web 套接字或 socket.io 将缓冲区一个一个推送到服务器。 服务器可以将它们组合成一个文件,然后您可以使用许多不同的媒体播放器播放该文件,包括大多数浏览器中内置的播放器。

但是webm数据必须用TCP或者其他无损网络协议传输。 它对 RTMP 或 RTSP 等数据报协议中固有的丢失数据包没有弹性。

您可能希望将 WebRTC 与所谓的选择性转发单元服务器一起使用。 浏览器绝对可以源自WebRTC。 并且 WebRTC 对丢包具有弹性。

一些商业供应商以每分钟的价格提供这些服务。 你可以在 intertoobz 上找到各种评论,比如这个。 https://www.callstats.io/blog/2017/10/17/sdk-comparison

您可以尝试其中的一两个,看看它们是否满足您的应用程序需求。 如果他们这样做,那么您可以做出明智的“制造与购买”决定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM