首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 10下载加密的HLS流

iOS 10下载加密的HLS流
EN

Stack Overflow用户
提问于 2017-06-07 15:09:48
回答 2查看 1.6K关注 0票数 8

我目前正在尝试实现将加密的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

EN

回答 2

Stack Overflow用户

发布于 2018-09-19 06:04:50

首先,您需要下载密钥并保存它。

其次,在下载完HLS之后,您将得到一个类似于"XXXXXX.movpkg“的文件夹名。在文件夹中,有两个文件需要修改。

  1. XXXXX.m3u8
  2. PlayListXXXXXXXXXX.data

在两个文件中,都有一行

代码语言:javascript
复制
#EXT-X-KEY:METHOD=AES-128,URI="XXXXXX",IV=XXXXXXXXX

用本地密钥位置URL替换URI

就这样!现在你可以从本地获得钥匙,并正常播放。

票数 1
EN

Stack Overflow用户

发布于 2020-01-11 21:47:57

可能会帮到某人,

要下载并脱机播放HLS视频,您需要遵循以下步骤,

  1. 使用像GCDServer这样的本地服务器托管m3u8文件的后下载。
  2. 如果没有提到下载的m3u8文件段,请编辑它。
  3. 使用GCDServer本地主机url托管和播放m3u8文件。

我在一个工作的应用程序中使用它,所以你可以使用这个方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44416489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档