我有一个特别的问题。
我创建了一个网站,来自各种来源,所有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。
答案 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现在不会以任何方式在桌面上工作。