一、生成切片文件
使用ffmpeg工具将视频转成m3u8的形式,与此同时会生成若干ts切片文件,具体实现方式可参考https://www.jianshu.com/p/e1395a896f36。
二、播放m3u8视频文件
在此可以使用阿里云播放器Prismplayer,用法可参考https://iao.su/2124/,该播放器直接会将视频路径以blob的形式展现,可以达到很好的保护视频的作用。
例如:将生成好的output.m3u8及ts文件放在m文件夹中,将m文件夹放在根路径下,则具体实现播放代码如下:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.7.1/skins/default/aliplayer-min.css" /> <script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.7.1/aliplayer-h5-min.js"></script> </head> <body> <h2>测试视频文件以blob的形式播放</h2> <div class="prism-player" id="J_prismPlayer"></div> <script> var player = new Aliplayer({ id: 'J_prismPlayer', width: '100%', autoplay: false, //支持播放地址播放,此播放优先级最高 source: 'http://127.0.0.1/xxx/m/output.m3u8', }) </script> </body> </html>
用js加密视频路径的方式实现如下:
<video id="video" width="500" height="300" controls="controls"></video> <script type="text/javascript"> //创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); //配置请求方式、请求地址以及是否同步 xhr.open('POST', "/play", true); //设置请求结果类型为blob xhr.responseType = 'blob'; //请求成功回调函数 xhr.onload = function (e) { if (this.status == 200) { //获取blob对象 var blob = this.response; console.log(blob); //获取blob对象地址,并把值赋给容器 document.getElementById('video').src=URL.createObjectURL(blob); } }; xhr.send(); </script> 但如果视频文件很大,那么生成的blob文件会很大,加载很慢,因此需要切片之后播放。
更多精彩内容:各种AI课程、技能课程、黑科技软件、网站小程序源码、副业小项目、PPT模板等精品素材、电商课程、推广引流课程等,尽在 天边资源网 。