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>