CN110446074A - 基于AVPlayer播放加密音视频的方法、存储介质 - Google Patents

基于AVPlayer播放加密音视频的方法、存储介质 Download PDF

Info

Publication number
CN110446074A
CN110446074A CN201910645769.1A CN201910645769A CN110446074A CN 110446074 A CN110446074 A CN 110446074A CN 201910645769 A CN201910645769 A CN 201910645769A CN 110446074 A CN110446074 A CN 110446074A
Authority
CN
China
Prior art keywords
video
audio
avplayer
encryption
flow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910645769.1A
Other languages
English (en)
Other versions
CN110446074B (zh
Inventor
刘德建
罗林
王杰光
郭玉湖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujian Tianquan Educational Technology Ltd
Original Assignee
Fujian Tianquan Educational Technology Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian Tianquan Educational Technology Ltd filed Critical Fujian Tianquan Educational Technology Ltd
Priority to CN201910645769.1A priority Critical patent/CN110446074B/zh
Publication of CN110446074A publication Critical patent/CN110446074A/zh
Application granted granted Critical
Publication of CN110446074B publication Critical patent/CN110446074B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
    • H04N21/2347Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving video stream encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
    • H04N21/4405Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving video stream decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47217End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for controlling playback functions for recorded or on-demand content, e.g. using progress bars, mode or play-point indicators or bookmarks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments

Abstract

本发明基于AVPlayer播放加密音视频的方法、存储介质,方法包括:AVPlayer向应用发起通过其自定义音视频流加载器加载加密音视频的请求;接收到所述请求的应用构造对应所述加密音视频的头部,并将其写入AVPlayer,所述头部包括加密音视频类型;应用依据自定义音视频流加载器定义的单次加载数据流长度每次获取对应长度的加密音视频流;应用依据预设分段长度对每次获取的加密音视频流进行分段获取,并逐段解密;应用使用自定义音视频流加载器将解密后得到的明文音视频加载至AVPlayer。能够实现苹果APP使用iOS系统自带的播放器同时支持在线和离线播放AES加密的音视频文件。

Description

基于AVPlayer播放加密音视频的方法、存储介质
技术领域
本发明涉及音视频数据处理领域,具体涉及基于AVPlayer播放加密音视频的方法、存储介质。
背景技术
目前客户对音视频内容有私密性需求,要求在线边下边播的音视频数据流需要加密,以防被抓包捕获视频流;对可下载的音视频也需要加密,防止被下载完成后盗用,且要能在苹果APP端播放“在线”(网络地址视频,放在远程服务器)加密视频和已下载的“离线”(放在手机存储介质中的)视频。
苹果APP端开发iOS系统的播放器可使用第三方或者苹果公司提供的原生SDK播放器,苹果原生播放器AVPlayer具有高效、稳定、画质清晰等够且占用体积小等优点,但AVPlayer只支持播放“在线”或“离线”的明文音视频,却无法播放加密音视频。
现有技术提供的支持播放“在线”和“离线”的加密音视频的方案,仅支持苹果系统HLS协议切片的m3u8音视频封装格式加密文件播放;且远程服务器必须要先用HLS技术对音视频切成现成的片段并加密且必须生成切片的ts文件的索引文件,苹果iOS播放器必须要加载索引文件后根据索引文件再加载固定视频片段。
因此,有必要提供一种方案,能够让苹果原生的AVPlayer支持播放“在线”和“离线”的加密音视频;且对加密的视频格式播放不限制,可以同时支持加密后的MP4、MP3、MOV、M4V、M4A、WAV等常见的音视频封装格式播放;进一步地,支持远程服务器对原始视频直接加密,苹果iOS播放器直接加载原始视频并解密而无需索引文件,音视频切片片段内容由APP端自定义(如每次下载1MB),以此实现不依赖于苹果切片技术,且音视频片段长度更策略灵活,增强播放流畅性体验。
发明内容
本发明所要解决的技术问题是:提供基于AVPlayer播放加密音视频的方法、存储介质,能够使苹果原生的AVPlayer支持播放加密音视频,且不限制音视频格式,更无需依赖苹果IOS系统的切片技术。
为了解决上述技术问题,本发明采用的技术方案为:
基于AVPlayer播放加密音视频的方法,包括:
AVPlayer向应用发起通过其自定义音视频流加载器加载加密音视频的请求;
接收到所述请求的应用构造对应所述加密音视频的头部,并将其写入AVPlayer,所述头部包括加密音视频类型;
应用依据自定义音视频流加载器定义的单次加载数据流长度每次获取对应长度的加密音视频流;
应用依据预设分段长度对每次获取的加密音视频流进行分段下载,并逐段解密;
应用使用自定义音视频流加载器将解密后得到的明文音视频加载至AVPlayer。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述基于AVPlayer播放加密音视频的方法所包含的步骤。
本发明的有益效果在于:本发明取代AVPlayer原本的资源加载流程,利用AVPlayer可自定义资源加载的能力,外挂一个分片获取任务和分片解密任务,然后让获取任务和解密任务取得的明文数据返回给AVPlayer进行播放。以此实现苹果APP使用iOS系统自带的播放器在线和离线播放AES加密的音视频文件,为用户的音视频内容安全传输和被下载后安全使用提供了技术前提。另外,由于使用外挂任务来进行分片和解密,因此可以通过远程服务器对原始视频直接加密,而无需配合应用原本的切片技术进行预先切片;解密过程也无需索引文件,总而言之,即无需再依赖苹果的切片技术,且支持应用端自定义切片参数,使得切片策略更灵活,能够更好地结合网络环境增强播放流畅性体验。再进一步地,由于在加载起始,交由应用构建音视频头部,实现了对所有音视频格式的兼容播放。
附图说明
图1为本发明实施例一种基于AVPlayer播放加密音视频的方法的流程示意图;
图2为本发明实施例二的AVPlayer在线播放加密音视频方法的流程示意图;
图3为本发明实施例三的AVPlayer离线播放加密音视频方法的流程示意图。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
本发明最关键的构思在于:利用AVPlayer可自定义资源加载的能力,外挂一个分片获取任务和分片解密任务,然后让获取任务和解密任务取得的明文数据返回给AVPlayer进行播放
本发明涉及的技术术语解释:
请参照图1,本发明提供基于AVPlayer播放加密音视频的方法,包括:
AVPlayer向应用发起通过其自定义音视频流加载器加载加密音视频的请求;
接收到所述请求的应用构造对应所述加密音视频的头部,并将其写入AVPlayer,所述头部包括加密音视频类型;
应用依据自定义音视频流加载器定义的单次加载数据流长度每次获取对应长度的加密音视频流;
应用依据预设分段长度对每次获取的加密音视频流进行分段获取,并逐段解密;
应用使用自定义音视频流加载器将解密后得到的明文音视频加载至AVPlayer。
从上述描述可知,本发明的有益效果在于:可以实现苹果APP使用iOS系统自带的播放器在线和离线播放AES加密的音视频文件,为用户的音视频内容安全传输和被下载后安全使用提供了技术前提;更重要的是,不限制视频格式,更无需依赖苹果IOS系统的切片技术。
进一步地,所述AVPlayer向应用发起通过其自定义音视频流加载器加载加密音视频的请求,具体为:
修改加密音视频的地址的协议为AVPlayer无法识别的协议;
使用修改后的加密音视频地址初始化AVPlayer,并设置播放;
AVPlayer初始化时无法识别所述修改后的加密音视频地址,向应用发起通过其自定义音视频流加载器加载加密音视频的请求。
由上述描述可知,通过修改原始音视频的地址协议,使AVPlayer初始化时无法识别而自动地发起自定义资源加载的能力。
进一步地,所述接收到所述请求的应用构造对应所述加密音视频的头部,并将其写入AVPlayer,所述头部包括加密音视频类型,具体为:
应用接收到所述请求后,判断自定义音视频流加载器中的当前加载类型是否为0;
若是,则调用应用的音视频头部构造器,对应所述加密音视频构造一个包括其音视频类型和其总长度的头部,并将所述头部通过自定义音视频流加载器反向设置给AVPlayer。
由上述描述可知,在遇到默认不支持的加载类型时,能够通过自定义音视频头部,以支持MP4、MP3、MOV、M4V、M4A、WAV等常见的音视频封装格式播放,实现对加密的视频格式播放不限制。
进一步地,所述应用依据自定义音视频流加载器定义的单次加载数据流长度每次获取对应长度的加密音视频流,具体为:
应用启动AVPlayer播放;
应用接收自定义音视频流加载器发起的加载请求,所述加载请求包括本次加载起始位置和自定义的本次加载数据流长度;
应用依据所述加载请求获取对应的加密音视频流;
所述方法还包括:
当AVPlayer播放所述对应的加密音视频流解密后得到的明文音视频时,再次通过自定义音视频流加载器触发加载请求。
由上述描述可知,在视频播放后,应用将分次依据分段获取任务通过自定义音视频流加载器发起的包含了自定义片段长度的加载请求来不断获取片段,实现实时性地获取自定义长度的音视频片段。
进一步地,还包括:
当AVPlayer接收到拖动进度条指令后,应用终止进行中的加载请求处理,并释放内存;
自定义音视频流加载器依据当前进度条对应加密音视频的位置,向应用发起加载请求。
由上述描述可知,支持选取任意播放点进行播放,更具灵活性,同时提升用户体验。
进一步地,所述应用依据预设分段长度对每次获取的加密音视频流进行分段获取,具体为:
当处于在线播放模式时,应用依据每次获取的加密音视频流的起始位置和结束位置,以及预设的分段长度计算得到每次的下载次数和剩余长度,并依据缺位补齐机制获取每次分段下载时各段的起始位置和结束位置;对每次获取的加密音视频流进行分段下载;
当处于离线播放模式时,应用依据每次获取的加密音视频流的起始位置和结束位置,以及预设的分段长度计算得到每次的获取次数和剩余长度,并依据缺位补齐机制获取每次分段获取时各段的起始位置和结束位置;每次从本地分段读取加密音视频流。
由上述描述可知,分片获取任务对应在线播放模式时,能实现分段下载;而对应离线播放模式时,能实现分段本地读取;另外,分片获取任务将结合加密方式使用补齐机制进行分片获取,确保每次获取的数据流片段都能被正确地解密,避免数据丢失,提高解密正确性。
进一步地,所述应用使用自定义音视频流加载器将解密后得到的明文音视频加载至AVPlayer,具体为:
使用自定义音视频流加载器将顺序解密各段加密音视频流得到的各段明文音视频流依序加载至AVPlayer。
由上述描述可知,对应顺序获取的数据流片段,将实时进行解密并播放,确保音视频播放的流畅性和实时性。
进一步地,所述应用使用自定义音视频流加载器将解密后得到的明文音视频加载至AVPlayer,之后,还包括:
当加载至所述加密音视频对应的明文音视频的最后一个分段时,依据所述加密音视频的总长度和加密方式,计算得到加密音视频的补位个数;
依据所述补位个数将所述最后一个分段的补位数据丢弃后再将其写入AVPlayer。
由上述描述可知,对应加密音视频所采用的加密方式,结合音视频明文的总长度,计算获取最后一段加密内容解密后所要截取的实际长度,保证播放时音视频解密前后的一致性。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述基于AVPlayer播放加密音视频的方法所包含的步骤。
从上述描述可知,对应本领域普通技术人员可以理解实现上述技术方案中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来实现的,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时,可包括如上述各方法的流程。所述程序在被执行后,同样能够获取各流程对应的各个方法的有益效果。
其中,所述的存储介质可以是磁盘、光碟、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
实施例一
本实施例提供基于AVPlayer播放加密音视频的方法,能够实现苹果原生的AVPlayer支持播放加密后的音视频,且不限制格式,更无需依赖苹果IOS系统的切片技术。
本实施例的方法包括:
S1:修改加密音视频的地址的协议为AVPlayer无法直接识别的协议;例如,将“http://”的协议修改为“PalyAES://”。
S2:将修改后的加密音视频地址作为参数来初始化AVPlayer,并设置播放;
S3:AVPlayer初始化时将无法直接识别修改后的加密音视频地址中的协议,因此会通过应用提供的自定义音视频流加载器resourceLoader来加载加密音视频。此时,处于初始化阶段的AVPlayer通过向应用发起第一条resourceLoader资源请求来触发对不支持播放的音视频的播放。
S4:接收到上述请求的应用构造对应所述加密音视频的头部,并将其写入AVPlayer,所述头部包括加密音视频类型;
具体而言,应用接收到所述请求后,先判断自定义音视频流加载器中当前要加载的音视频类型是否为0;若为默认的音视频格式则不为0,若为0,则调用应用的音视频头部构造器,为所述加密音视频构造一个包括其音视频类型和其总长度的头部,并将所述头部通过自定义音视频流加载器反向设置给AVPlayer。
S5:应用依据自定义音视频流加载器定义的单次加载数据流长度每次获取对应长度的加密音视频;
S6:应用依据预设分段长度对每次获取的加密音视频流进行分段获取,并逐段解密;
上述步骤S5和S6对应外挂一个分段获取任务来实现自定义分段获取的音视频流的长度,以及外挂一个分段解密任务对每个分段进行解密。
本实施例同时支持在线播放模式和离线播放模式来播放加密音视频,具体而言,当处于在线播放模式时,所述分段获取任务为分段下载任务,即负责对远程服务器中待下载的加密音视频数据流进行分段,也要负责从远程服务器中下载各个分段数据流;
当处于离线播放模式时,所述分段获取任务为分段获取任务,直接在本地对加密音视频数据流进行分段,从本地获取各个分段数据流。
S7:应用使用自定义音视频流加载器将解密后得到的明文音视频加载至AVPlayer,具体为:
使用自定义音视频流加载器将顺序解密各段加密音视频流得到的各段明文音视频流依序加载至AVPlayer。
上述步骤S5-S7概括了AVPlayer通过自定义音视频流加载器加载加密音视频进行播放的全过程,下面,将针对每一次分片获取和分片解密的过程展开进行详细的说明,以便于更好的理解。
在一具体实例中,上述S5-S7步骤包括:
S51:应用启动AVPlayer播放;
S52:应用启动播放后,将同时接收自定义音视频流加载器发起的加载请求,该加载请求包括本次加载起始位置和自定义的本次加载数据流长度。
需要说明的是,自定义音视频流加载器是分段加载的工作模式,一个加载请求对应自定义音视频流加载器一次需要加载的视频流的内容。
S61:应用依据当前接收到的加载请求获取对应的加密音视频流;
S62:当处于在线播放模式时,应用依据本次获取的加密音视频流的起始位置和结束位置,以及预设的分段长度计算得到下载次数和剩余长度,并依据缺位补齐机制获取分段下载时各段的起始位置和结束位置;然后对本次获取的加密音视频流进行分段下载;
当处于离线播放模式时,应用依据本次获取的加密音视频流的起始位置和结束位置,以及预设的分段长度计算得到获取次数和剩余长度,并依据缺位补齐机制获取分段获取时各段的起始位置和结束位置;然后从本地分段读取本次获取的加密音视频流。
S63:依据确定好的各个分段的始末位置,从本地逐段获取或者从远程服务端逐段下载S61确定的加密音视频流。
S71:使用自定义音视频流加载器将解密本次获取的加密音视频流得到的各段明文音视频流一个个按照顺序地加载至AVPlayer;
S72:当AVPlayer播放本次获取的加密音视频流解密后得到的第一个明文音视频时,再次通过自定义音视频流加载器触发加载请求,此时,加载请求包括的加载起始位置对应上一次加载请求的结束位置,即返回继续执行S52,完成剩余音视频数据流的加载。
本实施例的方法还包括:
S8:当加载至所述加密音视频对应的明文音视频的最后一个分段时,依据所述加密音视频的总长度和加密方式,计算得到加密音视频的补位个数;
S82:依据所述补位个数将所述最后一个分段的补位数据丢弃后再将其写入AVPlayer。
S83:当AVPlayer接收到拖动进度条指令后,应用终止进行中的加载请求处理,并释放内存;
S84:自定义音视频流加载器依据当前进度条对应加密音视频的位置,向应用发起加载请求,此时的加载请求中的加载起始位置对应进度条指向加密音视频的位置。
实施例二
本实施例对应实施例一,针对在线播放模式做进一步的细化。
本实施例的前提条件为:
1、采用AES进行加密,音视频流明文和音视频流加密后的密文长度一致;
2、由于音视频文件AES加密后总长度除以16必须是整数倍,不够的会用0补齐,所以密文和明文差异1-15个字节,APP iOS端,需要从加密端取到音视频明文总长度,用来计算最后一段加密内容解密后截取的实际长度;
3、可获取到音视频明文类型;
4、在线音视频服务端支持分段下载。
具体而言,请参照图2,本实施例的AVPlayer在线播放加密视频的方法包括:
步骤1:原始在线视频地址“A”,假设为:http://abcd/test.mp4,将其修改为自定义scheme的地址“B”,假设为PalyAES://abcd/test.mp4。
步骤2:用自定义scheme的地址B作为参数去初始化AVPlayer,并设置播放。
步骤3:AVPlayer初始化时会无法识别地址“B”的协议,会通过AVPlayerSDK提供的“自定义音视频流加载器”:resourceLoader进行资源加载;而在AVPlayer开始播放后会不间断发起通知回调告诉APP需要加载的音视频流内容长度、类型等,且是以resourceLoader的方式告诉APP。
步骤4:APP收到resourceLoader的资源加载请求后,即图中的第一次resourceLoader资源请求,判断resourceLoader中需要加载类型是否0,如果为0,则调用AVPlayer的音视频头部构造器,构造一个音/视频头,主要包括类型(如video/mp4)和总长度,并把该头部构造对象通过AVPlayer加载器反向设置给AVPlayer。
步骤5:APP在启动播放视频后,会不间断地收到resourceLoader发起的资源加载请求,对应每一次需要继续加载的后续视频流内容;APP获取resourceLoader实时需要加载的音视频流加载长度(如某次为10MB),根据获取的音视频流长度,按照1024KB进行分段(AES加密需要16位的整数倍,1024KB是综合网络以及写入播放器时机后试验效果较好的值),再根据分段的长度循环下载、解密,而后用resourceLoader写回播放器。
下面,针对每一次接收到资源加载请求后分段下载加密音视频内容的过程进行详细说明:
1、计算每次要下载的加密音视频内容的起始位置和结束位置,假设resourceLoader需要的音视频流数据的起始位置是1KB(头部header占用了1KB),结束位置是10MB;则用10MB减去1KB后再除以1024KB,等于9余1023KB,此时启动向前补齐机制,将下载0-10MB,且分10次下载,刚好每次都是16的整数倍。
2、对每次下载完成的1024KB,即每个分段数据流密文进行AES解密,如第一次解密完成后,截取1KB-1023KB明文数据(注意,并不是0-1023,因为前面resourceLoader请求加载的是1KB开始),并用resourceLoader设置明文数据给AVPlayer;第二次1024-2047,第三次2048-3071,依次类推,直到最后完成所有加密音视频的下载,且整个过程是同步顺序执行。
步骤6:当resourceLoader通过资源加载请求不断向APP索取数据时,APP通过自定义下载,自定义解密后,分片向AVPlayer写入数据,直到最后一段时使用明文的音视频长度除以16,得到余数,再用16减去余数得到最后一段密文数据解密后需要丢弃多余的补位数据0的个数,然后再向AVPlayer写入,完成整个AVplayer加载和播放在线密文音视频过程。
步骤7:当有拖动播放器进度条时,resourceLoader会回调取消设置数据通知,APP终止还在进行的在线加载和解密并释放内存;以此同时,resourceLoader会发起新的音视频数据加载通知,回到步骤5。
本实施例对应在线播放模式:通过取代AVPlayer对资源加载的流程,利用AVPlayer可自定义资源加载的能力外挂一个分片下载任务和分片解密任务,然后让下载任务和解密任务取得的明文数据返回给AVPlayer而实现在线播放加密音视频。
实施例三
本实施例对应实施例一,针对离线播放模式做进一步的细化。
本实施例的前提条件为:
1、采用AES进行加密,音视频流明文和音视频流加密后的密文长度一致;
2、由于音视频文件AES加密后总长度除以16必须是整数倍,不够的会用0补齐,所以密文和明文差异1-15个字节,APP iOS端,需要从加密端取到音视频明文总长度,用来计算最后一段加密内容解密后截取的实际长度;
3、APP记录了音视频明文类型。
具体而言,请参照图3,本实施例的AVPlayer离线播放加密视频的方法包括:
步骤1:原始在线视频地址“A”,如:file://localhost/myapp/test.mp4修改为自定义scheme的地址“B”:PalyAES://abcd/test.mp4。
步骤2:用自定义scheme的地址B作为参数去初始化AVPlayer,并设置播放;
步骤3:AVPlayer初始化时会无法识别地址“B”的协议,会通过AVPlayer SDK提供的“自定义音视频流加载器”:resourceLoader进行资源加载;AVPlayer开始播放后会不间断发起通知回调告诉APP,需要加载的视频流信息内容长度、类型等,并以resourceLoader的方式告诉APP;
步骤4:APP在启动播放视频之后,会多次收到resourceLoader资源加载请求,先判断resourceLoader中需要加载类型是否0,如果为0,调用AVPlayer的音视频头部构造器,构造一个音/视频头,主要包括,类型(如video/mp4)和总长度,并把该头部构造对象通过resourceLoader加载器反向设置给AVPlayer;
步骤5:APP再次收到resourceLoader资源加载请求后,判断resourceLoader中需要加载类型如果不为0,则获取resourceLoader实时需要加载的音视频流长度(如某次为10MB),根据获取的视频流长度,按照1024KB进行分段,再根据分段的长度循环读取保存在APP中的音视频的密文数据,解密,用resourceLoader写回播放器。
下面针对每一次接收到资源加载请求后分段从本地读取加密音视频内容的过程进行详细说明:
1、计算每次要读取视频密文文件的起始位置和结束位置,假设resourceLoader需要的视频流数据起始位置是1KB(header占用了1KB),结束位置是10MB,用10MB减去1KB除以1024KB,等于9余1023KB,启动向前补齐机制,将读取0-10MB数据到内存,且分10次顺序读取,刚好每次都是1024KB,为16的整数倍。
2、对每次读取完成的1024KB进行密文进行AES解密,如第一次解密完成后,截取1KB-1023KB明文数据(注意,并不是0-1023,因为前面resourceLoader请求的是1KB开始),并用resourceLoader设置明文数据给AVPlayer,第二次1024-2047,第三次2048-3071,依次类推,直到最后完成,且整个过程是同步顺序执行。
步骤6:当resourceLoader不断向APP索取数据时,APP通过自定义去读本地密文文件,自定义解密后,分片向AVPlayer写入数据,直到最后一段时使用明文的音视频长度除以16,得到余数,再用16减去余数得到最后一段密文数据解密后需要丢弃多余的补位数据0的个数,然后再向AVPlayer写入,完成整个AVplayer加载和播放离线密文音视频过程。
步骤7:当有拖动播放器进度条时,resourceLoader会回调取消设置数据通知,APP终止还在进行的离线加载和解密并释放内存。resourceLoader同时会发起新的音视频数据加载通知,回到步骤5。
本实施例对应离线播放模式:通过取代AVPlayer对资源加载的流程,利用AVPlayer可自定义资源加载的能力外挂一个本地密文文件分片读取任务和分片解密任务,然后让分片读取文件任务和解密任务取得的明文数据返回给AVPlayer,从而实现离线播放加密音视频。
实施例四
本实施例分别对应实施例二和实施例三,提供两个具体运用场景:
场景一:
方案为苹果iOS APP播放在线多类格式的视频(MP4、MOV、MP3等)提供了一种安全的方法,可实时播放在线视频,而不会被APP用户通过如wireshark等抓包工具抓取数据包等方式盗取视频数据流,如教育类应用中,教师录制并提供了“C语言学习”视频给教育APP提供商让学生可在苹果iOS APP中直接在线学习和播放并需求得到私密和版权保护,提供商在服务端直接对“C语言学习”视频进行AES加密保护然后发布视频,并让学生可在苹果iOS APP中进行播放学习,APP在播放时实时自定义分片下载加密的视频流,并用密钥解密,解密后缓存在内存中并设置给播放器播放,播放完后释放内存,数据全是解密二进制,无法通过网络数据抓包等盗取视频流信息。
场景二:
方案为苹果iOS APP播放离线的多类格式的视频(MP4、MOV、MP3等)提供了一种安全的方法,APP用户导出手机中该下载的加密视频无法自主播放和使用。如教育类应用中,教师录制并提供了“C语言学习”视频给教育APP提供商让学生可在苹果iOS APP中下载后学习和播放并需求得到私密和版权保护,给教育APP提供商,提供商在服务端直接对“数学高考备战”视频进行AES加密保护然后发布视频,让学生可在苹果iOS APP中先下载了“数学高考备战”的视频,并在APP中点击观看,APP在播放时实时自定义分片加载本地的视频文件,并用密钥解密,解密后缓存在内存中并设置给播放器播放,播放完后释放内存,数据全是解密二进制。该学习通过iTools导出了已下载的视频文件,在windows系统、Linux系统、Android手机、iOS起手APP中通过各种播放器都无法播放刚刚下载的视频,并且该视频为加密二进制无法解析,达到了安全的需求。
实施例五
本实施例对应实施例一至实施例四,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能够实现上述实施例一至实施例四任意一个实施例所述的基于AVPlayer播放加密音视频的方法所包含的步骤。具体的步骤内容在此不进行复述,详细请参阅实施例一至实施例四的记载。
综上所述,本发明提供的基于AVPlayer播放加密音视频的方法、存储介质,不仅能够实现苹果APP使用iOS系统自带的播放器同时支持在线和离线播放AES加密的音视频文件;而且不限制待播放音视频的格式,提升了兼容性;进一步地,无需依赖苹果的切片技术,支持应用端自定义切片参数,使得切片策略更灵活,能够更好地结合网络环境增强播放流畅性体验。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (9)

1.基于AVPlayer播放加密音视频的方法,其特征在于,包括:
AVPlayer向应用发起通过其自定义音视频流加载器加载加密音视频的请求;
接收到所述请求的应用构造对应所述加密音视频的头部,并将其写入AVPlayer,所述头部包括加密音视频类型;
应用依据自定义音视频流加载器定义的单次加载数据流长度每次获取对应长度的加密音视频流;
应用依据预设分段长度对每次获取的加密音视频流进行分段获取,并逐段解密;
应用使用自定义音视频流加载器将解密后得到的明文音视频加载至AVPlayer。
2.如权利要求1所述的基于AVPlayer播放加密音视频的方法,其特征在于,所述AVPlayer向应用发起通过其自定义音视频流加载器加载加密音视频的请求,具体为:
修改加密音视频的地址的协议为AVPlayer无法识别的协议;
使用修改后的加密音视频地址初始化AVPlayer,并设置播放;
AVPlayer初始化时无法识别所述修改后的加密音视频地址,向应用发起通过其自定义音视频流加载器加载加密音视频的请求。
3.如权利要求1所述的基于AVPlayer播放加密音视频的方法,其特征在于,所述接收到所述请求的应用构造对应所述加密音视频的头部,并将其写入AVPlayer,所述头部包括加密音视频类型,具体为:
应用接收到所述请求后,判断自定义音视频流加载器中的当前加载类型是否为0;
若是,则调用应用的音视频头部构造器,对应所述加密音视频构造一个包括其音视频类型和其总长度的头部,并将所述头部通过自定义音视频流加载器反向设置给AVPlayer。
4.如权利要求1所述的基于AVPlayer播放加密音视频的方法,其特征在于,所述应用依据自定义音视频流加载器定义的单次加载数据流长度每次获取对应长度的加密音视频流,具体为:
应用启动AVPlayer播放;
应用接收自定义音视频流加载器发起的加载请求,所述加载请求包括本次加载起始位置和自定义的本次加载数据流长度;
应用依据所述加载请求获取对应的加密音视频流;
所述方法还包括:
当AVPlayer播放所述对应的加密音视频流解密后得到的明文音视频时,再次通过自定义音视频流加载器触发加载请求。
5.如权利要求4所述的基于AVPlayer播放加密音视频的方法,其特征在于,还包括:
当AVPlayer接收到拖动进度条指令后,应用终止进行中的加载请求处理,并释放内存;
自定义音视频流加载器依据当前进度条对应加密音视频的位置,向应用发起加载请求。
6.如权利要求1所述的基于AVPlayer播放加密音视频的方法,其特征在于,所述应用依据预设分段长度对每次获取的加密音视频流进行分段获取,具体为:
当处于在线播放模式时,应用依据每次获取的加密音视频流的起始位置和结束位置,以及预设的分段长度计算得到每次的下载次数和剩余长度,并依据缺位补齐机制获取每次分段下载时各段的起始位置和结束位置;对每次获取的加密音视频流进行分段下载;
当处于离线播放模式时,应用依据每次获取的加密音视频流的起始位置和结束位置,以及预设的分段长度计算得到每次的获取次数和剩余长度,并依据缺位补齐机制获取每次分段获取时各段的起始位置和结束位置;每次从本地分段读取加密音视频流。
7.如权利要求1所述的基于AVPlayer播放加密音视频的方法,其特征在于,所述应用使用自定义音视频流加载器将解密后得到的明文音视频加载至AVPlayer,具体为:
使用自定义音视频流加载器将顺序解密各段加密音视频流得到的各段明文音视频流依序加载至AVPlayer。
8.如权利要求1所述的基于AVPlayer播放加密音视频的方法,其特征在于,所述应用使用自定义音视频流加载器将解密后得到的明文音视频加载至AVPlayer,之后,还包括:
当加载至所述加密音视频对应的明文音视频的最后一个分段时,依据所述加密音视频的总长度和加密方式,计算得到加密音视频的补位个数;
依据所述补位个数将所述最后一个分段的补位数据丢弃后再将其写入AVPlayer。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序在被处理器执行时,能够实现上述权利要求1-8任意一项所述的基于AVPlayer播放加密音视频的方法所包含的步骤。
CN201910645769.1A 2019-07-17 2019-07-17 基于AVPlayer播放加密音视频的方法、存储介质 Active CN110446074B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910645769.1A CN110446074B (zh) 2019-07-17 2019-07-17 基于AVPlayer播放加密音视频的方法、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910645769.1A CN110446074B (zh) 2019-07-17 2019-07-17 基于AVPlayer播放加密音视频的方法、存储介质

Publications (2)

Publication Number Publication Date
CN110446074A true CN110446074A (zh) 2019-11-12
CN110446074B CN110446074B (zh) 2021-06-08

Family

ID=68430605

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910645769.1A Active CN110446074B (zh) 2019-07-17 2019-07-17 基于AVPlayer播放加密音视频的方法、存储介质

Country Status (1)

Country Link
CN (1) CN110446074B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120284370A1 (en) * 2011-05-02 2012-11-08 Authentec, Inc. Method, system, or user device for adaptive bandwidth control of proxy multimedia server
CN104683825A (zh) * 2015-02-12 2015-06-03 央广视讯传媒股份有限公司 一种ts流加密传输及其解码处理的方法
CN106331751A (zh) * 2016-08-31 2017-01-11 广州易方信息科技有限公司 一种基于iOS操作系统的在线加密切片视频播放方法
CN106375834A (zh) * 2016-08-31 2017-02-01 广州易方信息科技有限公司 一种基于iOS操作系统的在线加密切片视频离线播放方法及装置
CN106507181A (zh) * 2016-11-30 2017-03-15 北京酷我科技有限公司 一种获取并存储在线视频数据的方法
CN108989886A (zh) * 2018-08-07 2018-12-11 福建天泉教育科技有限公司 一种播放加密视频的方法及系统
CN109874028A (zh) * 2017-12-01 2019-06-11 深圳市雷鸟信息科技有限公司 一种hls流媒体的播放方法、系统及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120284370A1 (en) * 2011-05-02 2012-11-08 Authentec, Inc. Method, system, or user device for adaptive bandwidth control of proxy multimedia server
CN104683825A (zh) * 2015-02-12 2015-06-03 央广视讯传媒股份有限公司 一种ts流加密传输及其解码处理的方法
CN106331751A (zh) * 2016-08-31 2017-01-11 广州易方信息科技有限公司 一种基于iOS操作系统的在线加密切片视频播放方法
CN106375834A (zh) * 2016-08-31 2017-02-01 广州易方信息科技有限公司 一种基于iOS操作系统的在线加密切片视频离线播放方法及装置
CN106507181A (zh) * 2016-11-30 2017-03-15 北京酷我科技有限公司 一种获取并存储在线视频数据的方法
CN109874028A (zh) * 2017-12-01 2019-06-11 深圳市雷鸟信息科技有限公司 一种hls流媒体的播放方法、系统及存储介质
CN108989886A (zh) * 2018-08-07 2018-12-11 福建天泉教育科技有限公司 一种播放加密视频的方法及系统

Also Published As

Publication number Publication date
CN110446074B (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
JP6592583B1 (ja) 情報交換用の方法及び装置
CN106331751B (zh) 一种基于iOS操作系统的在线加密切片视频播放方法
US7685071B2 (en) Mobile communication terminal
US20180212775A1 (en) Secure Analytics Using Homomorphic and Injective Format-Preserving Encryption
JP5861220B2 (ja) テンプレートモードにおける短期暗号期間用の効果的な支援のためのシステム及び方法
CN108449563B (zh) 对音视频加解密的方法及系统
CN106375834B (zh) 一种基于iOS操作系统的在线加密切片视频离线播放方法及装置
CA2829957C (en) Http layer countermeasures against blockwise chosen boundary attack
US20220263810A1 (en) System and method for transferring data
US10341305B2 (en) Encrypted communications method and communications terminal, and computer storage medium
CN103873243A (zh) 实现数据安全传输的方法、系统、服务器和终端
US20110066843A1 (en) Mobile media play system and method
CN112788012B (zh) 日志文件加密方法、装置、存储介质及电子设备
US11012722B2 (en) System and method for securely transferring data
CN112135086B (zh) 一种会议录制加密方法、系统和可读存储介质
CN104393994B (zh) 一种音频数据安全传递方法、系统及终端
CN110025955B (zh) 信息处理方法、终端、计算机可读存储介质和计算机设备
CN108710500A (zh) 资源发布方法、更新方法和装置
CN105119891B (zh) 一种数据交互方法、机顶盒和服务器
CN108989886A (zh) 一种播放加密视频的方法及系统
CN107592315B (zh) 用于加密传输数据的客户端、服务器、网络系统及方法
CN110380856A (zh) 终端设备及其语音信息处理方法、装置以及存储介质
JP2016005268A (ja) 情報伝送システム、情報伝送方法、及びプログラム
CN104104676B (zh) 一种音视频播放方法和装置
CN108256343A (zh) Shader文件的加密方法、装置及解密方法、装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant