为了保证视频文件的安全性,有时候需要对保存的视频文件加密,然后播放的时候解密出来再播放,只有加密解密的秘钥一致时才能正常播放,用ffmpeg做视频文件的加密保存和解密播放比较简单,基于ffmpeg强大的字典参数设计,在avformat_write_header写入头部数据的时候,可以通过万能的av_dict_set来给options设置encryption_scheme/encryption_key/encryption_kid三键值,这样保存后的文件是加密过的,第三方播放器都无法正常播放,需要用ffmpeg打开并设置一样的秘钥才能解密播放,打开这边也是通过av_dict_set来给options设置decryption_key键值,在调用avformat_open_input的时候传入options即可。这种加密解密的应用场景一般在对视频文件要求安全性很高的地方,相当于需要定制播放器才能正常播放,做的好一点的话,还可以自定义格式,文件格式关联到定制的播放器,如果默认的MP4文件格式,可能用户不自觉的还会去双击播放,打不开就会很纳闷,所以针对这种加密过的视频文件一般定义一个自定义的格式保存比较好,拓展名仅仅是个名字,和里面的内容无关,内容都是二进制数据。
查阅资料得知,加密和未加密的文件,就是在头部数据中stbl下新增加了3个box。