【问题标题】:Videojs only working on mobile, not on PCVideojs仅适用于移动设备,不适用于PC
【发布时间】:2014-01-21 21:28:05
【问题描述】:

我有一个相当奇怪的问题。

我创建了一个网站,该网站从各种来源传输所有 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 未定义

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

【问题讨论】:

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


    【解决方案1】:

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

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

    还可以查看这个基于 Javascript 的版本:https://github.com/videojs/videojs-contrib-hls

    【讨论】:

      【解决方案2】:

      首先,主要桌面浏览器不支持 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 都支持它们)。

      运行带有 Safari 的 iOS 的移动设备因此支持 HLS,iOS 上的 Chrome 也是如此,因为它实际上是使用 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 暂时无法在桌面上运行。

      【讨论】:

        猜你喜欢
        • 2023-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-04
        • 2022-07-06
        • 2017-06-02
        • 2015-11-15
        • 2016-11-02
        相关资源
        最近更新 更多