【问题标题】:iOS 10 download encrypted HLS streamiOS 10 下载加密 HLS 流
【发布时间】:2017-11-09 00:48:22
【问题描述】:

我目前正在尝试将加密的 HLS 流下载到 iOS 设备。 iOS 10 似乎支持开箱即用(请参阅https://developer.apple.com/videos/play/wwdc2016/504),但我无法让它工作。 我基本上使用 Apple 示例代码 (https://developer.apple.com/library/content/samplecode/HLSCatalog/Introduction/Intro.html) 中的 AssetPersistenceManager,它调用 AVAssetDownloadURLSessionmakeAssetDownloadTask。它在在线模式下工作正常,但从存储的文件播放资产时播放失败。

现在 WWDC 视频表明您应该使用 AVAssetResourceLoaderDelegate 来提供离线加密密钥。由于AVAssetResourceLoader 似乎不支持http 和https(参见例如AVAssetResourceLoaderDelegate methods not working on device),我尝试为密钥URI 使用自定义方案并在AVAssetResourceLoaderDelegateshouldWaitForLoadingOfRequestedResource 中提供本地aes 密钥。在这里它在在线流式传输时也可以工作,但无论我是使用远程密钥 URL 还是用本地密钥覆盖它,AVPlayer 总是无法离线播放 AVAsset。

有没有人有下载加密 HLS 的经验,或者有关于如何提供加密密钥以离线播放本地加密 AVURLAsset 的工作示例?

我正在使用的示例 HSL 文件在这里:http://demo.unified-streaming.com/video/tears-of-steel/tears-of-steel-aes.ism/.m3u8

【问题讨论】:

  • 感谢您的反馈,我编辑了问题以包含所有新信息。
  • 我也有同样的问题,但在我的情况下,HLS 视频在离线模式下可以正常播放。如果我尝试在在线模式下播放它,它只会加载并停止而不会出现任何错误。
  • 你找到解决方案了吗,离线下载加密视频并播放。如果您有示例代码,请提供。
  • @AnjaneyuluBattula 不,抱歉,我们没有使用 hls 进行本地存储。

标签: ios iphone encryption avplayer offline


【解决方案1】:

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

其次,在你完成 HLS 下载后,你会得到一个类似“XXXXXX.movpkg”的文件夹名称。在文件夹中,有两个文件需要修改。

  1. XXXXX.m3u8
  2. 播放列表XXXXXXXXXX.data

在两个文件中,都有一行

#EXT-X-KEY:METHOD=AES-128,URI="XXXXXX",IV=XXXXXXXXX

将 URI 替换为您的本地密钥位置 URL

就是这样!现在您可以从本地获取密钥并正常播放了。

【讨论】:

    【解决方案2】:

    也许它会对某人有所帮助,

    要离线下载和播放 HLS 视频,您需要按照以下步骤操作,

    1. 使用像 GCDServer 这样的本地服务器来托管 m3u8 文件下载后。
    2. 如果此处未提及,请编辑下载的 .ts 段的 m3u8 文件。
    3. 使用 GCDServer 本地主机 url 来托管和播放 m3u8 文件。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      相关资源
      最近更新 更多