前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTML5点播m3u8(hls)格式视频

HTML5点播m3u8(hls)格式视频

作者头像
kirin
发布2020-05-11 17:42:41
11.1K0
发布2020-05-11 17:42:41
举报
文章被收录于专栏:Kirin博客

这两年来我们发现越来越多的视频应用使用了m3u8格式的视频,因为可以兼容PC、移动端。相比mp4等视频源,m3u8可以减轻服务器压力(按需加载)。HLS是由苹果公司率先提出的一种协议标准,可用于直播。

查看演示 下载源码

m3u8是一种基于HLS(HTTP Live Streaming) 文件视频格式,它主要是存放整个视频的基本信息和分片(Segment)组成。不同于mp4大文件,m3u8是由一系列的ts文件组成,一般一个ts文件大概5-10秒,这些ts文件通过一个.m3u8文件做索引。用户播放视频时,可随意拖动视频进度,会读取相应进度的ts文件继续观看视频,不必等到下载完整的视频。因此在播放m3u8的时候很少有卡顿的现象。

关于HLS直播的技术示例以及m3u8切片技术我们会在后面有文章介绍。本文只做HLS点播讲解,与直播不同,点播是指视频文件已经在编辑好,随时可播放。

由于HLS是由Apple公司提出的,所以在iOS电脑或手机上,你可以直接使用Safari浏览器的<video>播放m3u8格式视频文件。而其他浏览器则需要借助hls.js来兼容m3u8。

使用hls.js,不需要任何定制的播放器,只需要<video>元素就能播放m3u8。

加载js和播放元素

在需要放置视频的页面位置上加入video元素和hls.js文件。

代码语言:javascript
复制
<video id="video" controls width="100%"></video>
<script src="hls.js"></script>
调用hls.js

首先判断浏览器是否支持hls,如果支持就实例化new Hls(),加载m3u8源,然后播放。如果不支持hls,而支持苹果原生应用,则播放另一个m3u8源。

代码语言:javascript
复制
var video = document.getElementById('video');
  if(Hls.isSupported()) {
    var hls = new Hls();
    hls.loadSource('https://yunqivedio.alicdn.com/2017yq/v2/0x0/96d79d3f5400514a6883869399708e11/96d79d3f5400514a6883869399708e11.m3u8');
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED,function() {
      video.play();
  });
 } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
    video.src = 'https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8';
    video.addEventListener('loadedmetadata',function() {
      video.play();
    });
  }

运行,试着用PC浏览器和手机访问,你会发现m3u8的播放很流畅。

在Vue中使用hls.js

使用Vue框架的同学可以用npm先安装hls。

代码语言:javascript
复制
npm install --save hls.js

然后添加组件。

代码语言:javascript
复制
<video ref="videoRef" width="400" controls></video>

最后挂载代码:

代码语言:javascript
复制
<script>
import Hls from 'hls.js'; 

export default {
    data () {
        return {
            //
        }
    },
    mounted: function() {
      var hls = new Hls();
      hls.loadSource('https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8');
      hls.attachMedia(this.$refs.videoRef);
      hls.on(Hls.Events.MANIFEST_PARSED,function() {
        this.$refs.videoRef.play();
      });
    }
}
</script>
其他

基于hls.js开发了很多用于html5播放器的插件,让这些播放器也支持m3u8格式播放。

Video.js使用videojs-contrib-hls.js

Flowplayer使用 flowplayer-hlsjs

更多信息请参考hls.js项目地址:https://github.com/video-dev/hls.js

文章出自https://www.helloweba.net/javascript/571.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 加载js和播放元素
  • 调用hls.js
  • 在Vue中使用hls.js
  • 其他
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档