RTMP流媒体播放

时间:2013-03-22 14:50:18

标签: video-streaming mediaelement.js rtmp

我正在努力让rtmp流式传输工作。我的代码几乎与here

相同
<html>
  <head>
    <script src="me/build/jquery.js"></script>
    <script src="me/build/mediaelement-and-player.js"></script>
    <link rel="stylesheet" href="me/build/mediaelementplayer.min.css" /></code>
  </head>
  <body>

<video>
     <source src="000109f6004b00a6004af03676235daa" type="video/rtmp">
</video>
<script>
$('video').mediaelementplayer({flashStreamer:"rtmp://thinkbuntu:1935/flvplayback/000109f6004b00a6004af03676235daa"});
</script>

  </body>
</html>

rtmp://thinkbuntu:1935/flvplayback是本地rtmpserver的URL,'000109f6004b00a6004af03676235daa'是mp4视频。我知道本地服务器正在运行,因为我可以通过rtmpdump转储它并使用jwplayer我可以正常播放视频。 使用flv的medialement,webm,ogv也不起作用。

我在Firefox中遇到此错误(Chrome中完全没有错误):

Specified "type" attribute of "video/rtmp" is not supported. Load of media resource 000109f6004b00a6004af03676235daa failed.

通过json属性配置它会以同样的方式失败。

我也试过这种方法Replacing media source (http with rtmp) in MediaElementsJS based on browser capabilities但它也失败了。

我做错了吗?

4 个答案:

答案 0 :(得分:1)

我有几乎相同的设置,我的工作。不确定是否需要任何属性,但我在视频标签上有一些属性。

(仅供参考,我猜这个额外的</code>标签只是从你贴到SO中?)

    <video width="300" height="240" controls="controls" preload="none" id="stream">
         <source src="7901e75800f700d700437a45351f0214" type="video/rtmp">
    </video>

    <script type="text/javascript">
        $('#stream').mediaelementplayer({
            flashStreamer: "rtmp://170.93.143.150/rtplive/000109f6004b00a6004af03676235daa",
            plugins: ['flash', 'silverlight'],
            alwaysShowControls: false,
            success: function (mediaElement, domObject) {
                if (mediaElement.pluginType == 'flash') {
                    mediaElement.play();
                }
            },
        });
     </script>

答案 1 :(得分:1)

在您的情况下,您必须在视频标记

中添加前缀“mp4:”
<video width="360" height="203" id="player1" src="mp4:sample" type="video/rtmp" controls="controls"></video>

<script>$('video').mediaelementplayer({flashStreamer:"rtmp://localhost/vod"});</script>

答案 2 :(得分:0)

我们必须移植嗅探RTMP流量以确定浏览器正在协商什么,因为RTMP URL被唯一解释:URL的一部分标识流服务端点,其余部分标识流资源,中间的某个位置是文件格式后跟冒号。如果您不知道RTMP服务器的配置,则无法确定服务端点结束的URL中的哪个位置以及流开始。由于我们不知道服务器配置,这使我们感到沮丧。

在源标记中,我们将完整的RTMP URL作为'src'属性(协议,服务端点,流和文件格式 - 一切,整个shebang),并在flashStreamer属性中我们确定了服务端-point only(一切尽可能但不包括文件格式)。经过大量的实验,这是唯一成功的属性组合。

答案 3 :(得分:0)

确保您的Firefox已安装Flash。查看Firefox插件中是否有 Shockwave flash 。如果没有,

  1. 打开 flash 官方网站
  2. 选择需要另一台计算机上的Flash Player吗?
  3. 选择合适的版本
  4. 下载并安装并重新启动FF
  5. 确保已激活冲击波闪光