iOS AVPlayer M3U8 加密播放

作者: 梦的森林 | 来源:发表于2017-03-27 13:49 被阅读638次

这几天一直做M3U8的加密播放,刚开始在各种文章中学习,探索,但都失败了。下面就我个人的理解来说明下。

HLS(HTTP Live Streaming)是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。

(不加密的可以省略key文件)如果是不加密的m3u8文件,可以复制URL到Safari直接播放。如果用AVPlayer,可以用url获取AVPlayerItem的实例对象[AVPlayerItem playerItemWithURL:],然后就可以用AVPlayer播放了。(推荐一个封装好AVPlayer的github:https://github.com/zhengwenming/WMPlayer)

当然,我们现在关心的是加密的m3u8,以下内容为m3u8文件中的内容,省略了很多ts部分。

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-MEDIA-SEQUENCE:0

#EXT-X-ALLOW-CACHE:YES

#EXT-X-TARGETDURATION:20

#EXT-X-KEY:METHOD=AES-128,URI="http://www.2611dv.com/key/abbbb",IV=0xb8af47d08484ac1dff6d32a0a1b163ad

#EXTINF:10.080000,

teacher-0000.ts.enc

。。。。。。。。

具体的字段信息请查阅

其中,加密的m3u8文件中,一定会有#EXT-X-KEY:METHOD=AES-128,URI="http://www.2611dv.com/key/abbbb"这段内容。

我们关注的是URI所对应的地址。这个地址上存着key文件(文件内容为16位的字符)。

那么以我的理解方式来用时序图描述下(其中key文件的存储位置是可变的,也可以放在资源服务器上)。

其中,SVR为app对应的业务服务器,RES为app所访问的资源服务器,红线由AVPlayer发起。

现在,我们所用的验证方式,是在HTTP的Header中添加用户信息来完成的,但AVPlayer中并没有提供这样的方法。

通过google得知,可用未开放的key来设置扩展header(已上架)。代码如下:

NSString*strInfo =@"36asdf8e0-6a51-4e86-a855-603675fsdd19c7;";

NSMutableDictionary* headers = [NSMutableDictionarydictionary];

[headerssetObject:strInfoforKey:@"ADDInfo"];

NSString*strHeaderKey = [NSString stringWithFormat:@"AVURLAsset%@Header%@Key",@"HTTP",@"Fields"];

AVURLAsset* asset = [AVURLAssetURLAssetWithURL:[NSURLURLWithString:self.URLString]options:@{strHeaderKey : headers}];

self.currentItem= [AVPlayerItem playerItemWithAsset:asset];

或者使用ijkPlayer。

(猜想,或者在key文件所对应的uri中,使用get方式拼接参数,来完成验证功能)

相关文章

  • AVPlayer 播放加密m3u8(swift版)

    抽了点时间,把AVPlayer播放加密m3u8链接的demo写了出来,直接复制黏贴 M3u8ResourceLoa...

  • iOS AVPlayer播放加密m3u8

    先了解下m3u8,将m3u8文件下载在本地,以记事本打开是一串字符串,经过格式化后如下图所示: 如果包含#EXT-...

  • iOS AVPlayer M3U8 加密播放

    这几天一直做M3U8的加密播放,刚开始在各种文章中学习,探索,但都失败了。下面就我个人的理解来说明下。 HLS(H...

  • iOS音频篇-AVPlayer

    iOS音频篇:使用AVPlayer播放网络音乐 iOS音频篇:AVPlayer的缓存实现

  • [iOS]调和 pop 手势导致 AVPlayer 播放卡顿

    [iOS]调和 pop 手势导致 AVPlayer 播放卡顿 [iOS]调和 pop 手势导致 AVPlayer ...

  • ios AVPlayer播放加密M3u8(oc版)

    应某些人需求,把oc版写了下,n年没碰oc了,如果有哪里写的有问题,希望在留言里指出来,我会修改的: swift版...

  • WMPlayer - 网络视频播放

    WMPlayer视频播放器,AVPlayer的封装,继承UIView,想怎么玩就怎么玩。支持播放mp4、m3u8、...

  • avplayer

    参考1.iOS通过AVPlayer打造自己的视频播放器2.基于 AVPlayer 自定义播放器3.AVPlayer...

  • iOS 音频

    iOS 音频播放 本地音频文件 AVPlayer / AVAudioPlayer 在线音频流 AVPlayer i...

  • IOS m3u8 AVPlayer(一)

    一个超级简单的AVPlayer播放m3u8的例子,也是之前看其他前辈写的,后续会有更详细的内容,现在只是播放.因为...

网友评论

  • 踏遍青山:有demo可以看一下么 最后一步根据key解密播放是如何实现的 是直接用AES解密分段的ts文件播放么?
    单抽律化娜:看这里https://www.jianshu.com/p/43736f726082

本文标题:iOS AVPlayer M3U8 加密播放

本文链接:https://www.haomeiwen.com/subject/hxrbbttx.html