1、生成加密用的key
openssl rand -base64 20 > enc.key
2、生成一个iv
openssl rand -hex 16
3、组装一个加密信息文件 enc.keyinfo
内容如下:
http://dev.com/spread/m3u8_test/enc.key
/www/m3u8_test/enc.key
812280fa3d4b0a1fbdc8c6b4ba5d47bd #2步骤获取的iv
4、生成切片并加密
ffmpeg -y -i guoge.mp4 -hls_time 10 -hls_key_info_file enc.keyinfo -hls_playlist_type vod -hls_segment_filename index%3d.ts playlist.m3u8
5、生成的m3u8文件如下
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:18
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="http://dev.com/spread/m3u8_test/enc.key",IV=0x812280fa3d4b0a1fbdc8c6b4ba5d47bd
#EXTINF:11.440000,
index000.ts
#EXTINF:10.320000,
index001.ts
#EXTINF:9.280000,
index002.ts
#EXTINF:17.600000,
index003.ts
#EXTINF:0.360000,
index004.ts
#EXT-X-ENDLIST
其中带有EXT-X-KEY说明加密成功
6、测试代码,注意必须使用http/https访问
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
/>
<title>播放器测试</title>
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.3.5/skins/default/aliplayer-min.css" />
<script type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.3.5/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="J_prismPlayer" style="position: absolute"></div>
<script>
var player = new Aliplayer({
id: 'J_prismPlayer',
width: '100%',
autoplay: true,
//支持播放地址播放,此播放优先级最高
// source: 'http://hzhls01.ys7.com:7886/hcnp/624521095_1_1_2_0_cas.ys7.com_6500.m3u8?c7babeed1205439dad7fa8cd6c81d259', // 测试地址
// source: 'http://hdl.live1.k2o.me/kz-live/KZCM-000004-RNFPD.flv', // flv
source: '/spread/m3u8_test/playlist.m3u8', // m3u8
// source: 'rtmp://rtmp.live1.k2o.me/kz-live/KZCM-000004-RNFPD', // rtmp
//播放方式二:点播用户推荐
// vid: '1e067a2831b641db90d570b6480fbc40',
// playauth: '',
// cover: 'http://liveroom-img.oss-cn-qingdao.aliyuncs.com/logo.png',
//播放方式三:仅MTS用户使用
// vid: '1e067a2831b641db90d570b6480fbc40',
// accId: '',
// accSecret: '',
// stsToken: '',
// domainRegion: '',
// authInfo: '',
// useFlashPrism: true, // flash播放
}, function (player) {
console.log('播放器创建好了。')
});
</script>
</body>
</html>