我目前正在尝试实现将加密的HLS流下载到iOS设备。iOS 10似乎支持开箱即用(请参阅https://developer.apple.com/videos/play/wwdc2016/504),但我无法让它工作。我基本上使用的是苹果示例代码(https://developer.apple.com/library/content/samplecode/HLSCatalog/Introduction/Intro.html)中的https://developer.apple.com/library/content/samplecode/HLSCatalog/Introduction/Intro.html,该代码称为makeAssetDownloadTask of AVAssetDownloadURLSession。它在联机模式下运行良好,但是当从存储文件中播放资产时,播放失败。
现在,WWDC视频表明您应该使用AVAssetResourceLoaderDelegate提供脱机加密密钥。由于AVAssetResourceLoader似乎不支持http和https (参见例如AVAssetResourceLoaderDelegate methods not working on device),所以我尝试为密钥URI使用自定义方案,并在shouldWaitForLoadingOfRequestedResource of AVAssetResourceLoaderDelegate中提供本地aes密钥。在这里,它也适用于在线流,但是无论我是使用远程密钥URL还是用本地键覆盖它,AVPlayer总是无法脱机播放AVAsset。
是否有人有下载加密AVURLAsset的经验,或者有关于如何提供用于脱机播放本地加密的HLS的加密密钥的工作示例?
我使用的示例HSL文件如下:http://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-aes.ism/.m3u8
发布于 2018-09-19 06:04:50
首先,您需要下载密钥并保存它。
其次,在下载完HLS之后,您将得到一个类似于"XXXXXX.movpkg“的文件夹名。在文件夹中,有两个文件需要修改。
在两个文件中,都有一行
#EXT-X-KEY:METHOD=AES-128,URI="XXXXXX",IV=XXXXXXXXX用本地密钥位置URL替换URI
就这样!现在你可以从本地获得钥匙,并正常播放。
发布于 2020-01-11 21:47:57
可能会帮到某人,
要下载并脱机播放HLS视频,您需要遵循以下步骤,
我在一个工作的应用程序中使用它,所以你可以使用这个方法。
https://stackoverflow.com/questions/44416489
复制相似问题