2017-04-07 2558 views
4

我正在使用OBS将直播流推送到本地rtmp服务器(node-rtsp-rtmp-server), ,它适用于VLC媒体播放器。 我只想把它放入网页,我发现videojs。 它没有工作,并返回不支持指定的“类型” - 属性“rtmp/mp4”。 它似乎我的rtmp服务器没有从这个网页的任何请求。 那么我错过了什么? 这是我的代码:如何使用videojs播放rtmp直播流?

<head> 
    <meta charset="utf-8"> 
    <link href="./video-js-6.0.0/video-js.css" rel="stylesheet"> 
    <script src="./video-js-6.0.0/video.js"></script> 
    <script src="./video-js-6.0.0/videojs-flash.min.js"></script> 
    <script> 
     videojs.options.flash.swf = "./video-js-6.0.0/video-js.swf" 
    </script> 
</head> 
<body> 
    <video id='vid' class='video-js' controls height=300 width=600> 
     <source src="rtmp://127.0.0.1:1935/live/pokemon" type="rtmp/mp4"/> 
    </video> 
    <script> 
     var player = videojs('vid'); 
    </script> 
</body> 
+0

我被困在同样的问题。显然videojs在6.0版本中没有flash播放器,这意味着它不能播放RTMP(因为没有套接字就没有办法打开RTMP,并且没有没有插件的套接字) – pqnet

回答

1

浏览器不支持RTMP。在浏览器中连接RTMP流的唯一方法是使用Flash。

考虑使用媒体源扩展支持的更兼容的分发协议,例如DASH。

1

要发布从RTMP服务器到Web页面流,你有两个选择:

  1. 在Flash播放器(频闪灯,JwPlayer,的Flowplayer)嵌入RTMP流
  2. 在HTML5提供流格式(HLS或MPEG DASH),使用支持Wowza Streaming Engine等流媒体服务器;这可能还需要转码,如果你的流尚未与H264和AAC
2

编码这是对我的作品

<html> 
<head> 
<title> Stream Player </title> 
    <link href="video-js.css" rel="stylesheet" type="text/css"> 
    <script src="video.js"></script> 
    <script> 
    videojs.options.flash.swf = "video-js.swf"; 
    </script> 
</head> 
<body> 
<center> 
    <video id="livestream" class="video-js vjs-default-skin vjs-big-play- 
centered" 
    controls autoplay preload="auto" width="600" height="300" 
    data-setup='{"techorder" : ["flash"] }'> 
     <source src="rtmp://10.0.0.35:1935/live/test" type="rtmp/mp4"> 
    </video> 
</center> 
</body> 
</html> 

看起来就像你可能在你的类型“/”错字。数据设置techorder参数似乎是videojs使用闪存所必需的。

如果这不起作用,那么确保你的JavaScript文件都很好。

我使用nginx作为我的服务器。

https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/

https://github.com/arut/nginx-rtmp-module

-1

如果使用VLC媒体播放器工作时,就意味着你的RTMP服务器正常工作。 你必须检查浏览器是否支持Flash。由于我们意识到最新版本的Chrome和Firefox会在默认情况下自动阻止Flash。我们通过简单地在网站上允许Flash来解决问题。 video.js和videojs-flash没有错。 Plz参考附件截图。 enter image description here

+0

虽然这个答案没有实际上帮助网站所有者(因为用户不希望知道他们应该授予您网站的特殊权限 - 并且要求这样的特别许可是偏激的),这是一个有点帮助的答案,因为这里面临的问题是现代浏览器根本不信任Flash内容(有充分的理由)。 – Ghedipunk