html5播放ts视频的实现,结合阿里云播放器Prismplayer

一、生成切片文件

使用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文件会很大,加载很慢,因此需要切片之后播放。
点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注