Videojs HLS 不工作

Posted

技术标签:

【中文标题】Videojs HLS 不工作【英文标题】:Videojs HLS not working 【发布时间】:2014-10-03 15:34:19 【问题描述】:

我正在尝试通过 videojs 流式传输 HLS 媒体,但它不起作用。

我知道桌面浏览器不支持 HLS,但它也不适用于 android/ios 设备...

我收到一个错误:找不到此视频的兼容来源

任何人都可以查看我的代码并发现任何错误吗?

Streams 正在我的本地服务器上运行,并使用 VLC 进行了测试,因此问题一定出在我的 videojs 配置中。

 <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Test</title>
    <link href="http://belelros.github.io/videojs-playLists/css/main.css" rel="stylesheet">
    <link href="http://belelros.github.io/videojs-playLists/css/normalize.css" rel="stylesheet">
    <link href='http://fonts.googleapis.com/css?family=Rokkitt' rel='stylesheet' type='text/css'>
    <link href="//vjs.zencdn.net/4.9/video-js.css" rel="stylesheet">
    <script src="//vjs.zencdn.net/4.9/video.js"></script>
    <script src="https://rawgithub.com/Belelros/videojs-playLists/master/lib/videojs-playlists.js" data-cover></script>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
     <script src="main.js"></script>

</head>
    <div class="video-holder centered">

        <video id="video" class="video-js vjs-default-skin"
               controls preload="auto"  
               data-setup=''
               poster="">
        </video>

        <div class="playlist-components">
<script>
     var videos = [
        
          src : [
            'http://192.168.1.165/streamtest1.m3u8'
          ],
          poster : 'images/bbc_news.png',
          title : 'BBC WORLD NEWS'
        ,
        
          src : [
            'http://192.168.1.165/streamtest2.m3u8'
          ],
          poster : 'images/al_jazeera_english.png',
          title : 'AL JAZEERA'
        ,
        
          src : [
            'http://192.168.1.165/streamtest3.m3u8'
          ],
          poster : 'images/viasat_explore.png',
          title : 'Viasat Explore'
        
      ];
</script>

            <div class="playlist">
                <ul></ul>
            </div>
        </div>
    </div>


</body>
</html>

我正在使用 videojs 的播放列表插件 https://github.com/jgallen23/videojs-playLists

也许我应该在某处定义视频类型?

【问题讨论】:

当我删除播放列表并仅使用一个来源时,它可以正常工作。 如果我想使用播放列表,如何定义内容类型。 【参考方案1】:

我修复了它,在 videojs-playlist.js 中添加了 m3u8 扩展

  player.pl._guessVideoType = function(video)
var videoTypes = 
  'webm' : 'video/webm',
  'mp4' : 'video/mp4',
  'm3u8' : 'application/x-mpegURL',
  'ogv' : 'video/ogg'
;

【讨论】:

【参考方案2】:

请使用以下添加 hls 支持

npm install --save videojs-contrib-hls.js

或 包含来自 CDN 的 videojs-contrib-hls.js。

https://unpkg.com/videojs-contrib-hls.js@3.2.0/dist/videojs-contrib-hlsjs.min.js

【讨论】:

【参考方案3】:

使用 video.js 播放 HLS、DASH 和未来的 HTTP 流协议,即使它们本身不受支持。

默认包含在 video.js 7 中!

have a look here

【讨论】:

您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到更多关于如何写出好的答案的信息。 ——

以上是关于Videojs HLS 不工作的主要内容,如果未能解决你的问题,请参考以下文章

videojs踩过的坑

解决问题video.js 播放m3u8格式的文件,根据官方的文档添加videojs-contrib-hls也不行的原因解决了

使用videojs播放m3u8视频

使用videojs进行实时流式传输的CORS和请求标头错误[重复]

vue.js+video.js+videojs-contrib-hls支持PC端播放m3u8格式的视频

使用 videojs 播放视频,视频获取失败