Videojs仅适用于移动设备,而不适用于PC

时间:2014-01-04 04:07:31

标签: google-chrome firefox html5-video video.js

我有一个特别的问题。

我创建了一个网站,来自各种来源,所有m3u8链接(Apple HLS)。我成功地使用了一个viewright播放器,但我想支持移动设备,所以我用videojs设置它 - 它完美无缺。使用当前设置,人们必须安装一个viewright插件,这很好,但我想通过使用html5避免这种情况,并使其更加用户友好。

我已尝试使用CDN和自托管,如下所述: https://github.com/videojs/video.js/blob/v4.3.0/docs/guides/setup.md 我的videojs相关代码如下:

头:

<link href="//vjs.zencdn.net/4.2/video-js.css" rel="stylesheet">
<script src="//vjs.zencdn.net/4.2/video.js"></script>

体:

<div class="row">
<div class="span7">
<video id="vid" class="video-js vjs-default-skin" 
controls preload="auto" width="640" height="640" 
poster="my_video_poster.png"
data-setup="{}">
</video>
</div>

    <script>
    var myPlayer = _V_('vid');
    function changeChannel(url, chanid)
    {
    myPlayer.src(url);
    myPlayer.play();
    }
    </script>

在体内还有一系列溪流,当然。当您单击链接时,它将更改为该流。

示例:

<a href="javascript:changeChannel('http://link.to.stream.m3u8', 0);">StreamName</a>

再次 - 代码在我的Android手机(Chrome)和iphone(safari)上完美运行,所以我对此完全感到困惑。

谢谢你,如果你知道的话!

编辑:

在控制台中,加载页面时会显示 ReferenceError:未定义 V 当我加载一个流时,它说: TypeError:myPlayer未定义

我尝试用videojs和VideoJS替换 V (在其他SO帖子上找到),但它只是说当时没有定义videojs / VideoJS。

2 个答案:

答案 0 :(得分:2)

video.js还有一些新功能可以让它在桌面浏览器上播放HLS内容。

查看github上的flashls项目,对于videojs,它使用github上video-js-swf项目下的修改后的swf文件。

另请查看此基于Javascript的版本:https://github.com/videojs/videojs-contrib-hls

答案 1 :(得分:1)

首先,Apple HLS不受主要桌面浏览器支持,即Chrome,Firefox和IE(我不了解Opera,但我对此表示怀疑)。 OSX上的Safari支持它,Windows上的Safari不支持:)

Chromium和Firefox团队都有通过HTML5视频标签实现对HLS支持的开放门票,但我认为这不会很快发生(Firefox自3年后开启此门票;))。请记住,Apple HLS绝不是HTML5标准的直接组成部分。唯一受到广泛支持的格式是WebM / MKV / Ogg,使用VP8 / Theora编解码器(因为FF和Chrome都支持它们)。

运行iOS的Safari移动设备因此支持HLS,iOS上的Chrome也支持HLS,因为它实际上是使用Safari WebKit窗格来呈现HTML。此外,Android附带的浏览器支持HLS(原生Android媒体框架也是如此),因为Android开发人员显然担心匹配与支持iOS的移动网站的兼容性。

然而,Chrome(和IE)也支持MPEG-4 / H.264编解码器。

IE仅支持MP4。

Videojs在Flash中有一个后备解决方案,当你想在Firefox上播放MPEG-4时,它正在取代视频标签。所以至少要小心。

欢迎使用视频流标准疯狂。

也就是说,如果您想要在OSX上使用Safari而不是其他桌面浏览器,您可能需要查看您的视频传送策略;)如果您仍在使用Videojs,我会推荐您使用MPEG-4,就像那时一样将具有完全的浏览器兼容性。

然而,知道Videojs,我会说当它遇到平台不支持的格式时应该抛出一个适当的错误。

因此,我认为您的问题(不仅仅是)格式相关吗?尝试将任何其他WebM示例文件加载到Chrome或FF桌面浏览器上的Videojs设置中,看看是否有效。如果确实如此,那么显然M3U8 / HLS格式会破坏桌面上的Videojs,那将是一张Videojs票。但是,无论如何,HLS现在不会以任何方式在桌面上工作。