JWPlayer和HLS流 - “加载播放器时出错:找不到可播放的来源”

时间:2016-05-11 09:00:54

标签: firefox jwplayer rtmp hls jwplayer7

问题

我有一台从IP摄像机流到HLS的服务器(nginx-rtmp-module)。 我想将直播流嵌入流行的浏览器:Chrome,Firefox和IE。

该流无法在某些桌面浏览器上运行。

我尝试了什么

经过测试的设备和浏览器:

  • PC上的Firefox - “加载播放器时出错:找不到可播放的来源”
  • IE 11 - 确定
  • PC上的Chrome - 确定
  • Android上的Chrome - 确定
  • iPhone - 确定

问题

如何解决这些问题?闪存是桌面浏览器上实时HLS流的必要条件吗?

4 个答案:

答案 0 :(得分:2)

在联系jwpplayer支持和一些源代码挖掘之后,我想出了一些事实。

Flash不一定是直播的必要条件,但它目前是Chrome和Firefox(除IE之外)HLS播放的要求。 Chrome有自己内置的Flash版本,因此除非故意禁用,否则它应该播放HLS流而无需下载和安装Flash Player。但是,Firefox和IE需要安装Flash Player。

在我的机器上IE 11正在运行,但是Firefox失败并显示消息"加载播放器时出错:找不到可播放的来源" (因为缺少Flash插件)。所以我添加了一些JavaScript来显示正确的消息。

需要使用swfobject.js库才能工作:http://github.com/swfobject/swfobject

jwplayer.key="<<-THE-KEY->>";
var player = jwplayer("video_container").setup({
    file: "http://domain.lt/live/stream.m3u8",
    androidhls: true,
    width: '100%',
    aspectratio: '16:9',
    autostart: 'true',
    stretching: 'fill'
});

player.onSetupError(function(error)
{
    if (swfobject.getFlashPlayerVersion().major == 0)
    {
        var message = 'Flash is missing. Download it from <a target="_blank" href="http://get.adobe.com/flashplayer/" class="underline">Adobe</a>. (uncheck "McAfee Security Scan Plus" and "True Key™ by Intel Security" )</p>';
        $("#video_container").hide();
        $("#video_callout").html(message);
    } else
    {
        var message = '<p>Your device is not supported. Please visit this page on another PC or Phone.</p>';
        $("#video_container").hide();
        $("#video_callout").html(message);
    }   
});

答案 1 :(得分:0)

由于混合内容,似乎失败了。您已经使用https访问了自己的网页,但jwplayer的网址位于http。

您可以将所有内容置于https下并重试吗?

答案 2 :(得分:0)

我在一段时间以来的一个项目中遇到了同样的问题。要解决不支持RTMP的浏览器问题我已经在MP4文件中添加了回退源:

sources: [{ 
    file: "rtmp://example.com/application/mp4:myVideo.mp4"
},{
    file: "https://example.com/assets/myVideo.mp4"
}] 

文档:https://support.jwplayer.com/customer/portal/articles/1430358-using-rtmp-streaming

答案 3 :(得分:0)

这可能取决于您使用的是哪个播放器。到目前为止,我已经使用Flowplayer获得了好运,并且能够在没有Chrome中的Flash Player插件的情况下播放实时流(相反,它使用MSE来呈现HLS流)。在Windows 10上使用IE11的结果相同,但在Windows 7计算机上,HLS流由Adobe Flash Player呈现(就像在早期版本的IE中一样)。 Firefox仍然是一个问题:v45具有MSE支持,但由于片段加载错误而未能正确处理HLS。看起来这个问题以前已被确定,希望很快就会得到解决。