说明
在web应用开发时遇到在线播放m3u8格式视频,由于m3u8是多分片视频,原生video标签无法直接播放,所以需要js对m3u8处理才能播放,网上有很多插件,这里我选择最近简单方法hls.js播放,引入一个js文件即可。
实现代码
- Gin后端
后端用c.File返回数据,c是gin请求信息
Go
//fileName 是文件名称,如:demo.m3u8
c.Header("Content-Type", "application/octet-stream")
c.Header("Content-Disposition", "attachment; filename="+fname)
c.Header("Content-Disposition", "inline;filename="+fname)
c.Header("Content-Transfer-Encoding", "binary")
//返回视频内容
c.File(filepath.Join(path, fileName))
- 前端
这里用h5给大家演示,使用vue的开发发展自己根据请求引入。
html代码:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>演示:web点播m3u8(hls)格式视频</title>
<style>
</style>
</head>
<body>
<div class="container">
<div class="container" style="width: 96%; margin: 30px auto">
<video id="video" controls loop="false" width="100%"></video>
</div>
</div>
<script src="hls.js"></script>
<script>
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();
});
}
</script>
</body>
</html>
hls.js代码:
hls.js内容太多无法插入,绑定在本文资源中。