簡體   English   中英

iOS 10 下載加密的 HLS 流

[英]iOS 10 download encrypted HLS stream

我目前正在嘗試將加密的 HLS 流下載到 iOS 設備。 iOS 10 似乎支持開箱即用(請參閱https://developer.apple.com/videos/play/wwdc2016/504 ),但我無法讓它工作。 我基本上使用AssetPersistenceManager從蘋果的示例代碼( https://developer.apple.com/library/content/samplecode/HLSCatalog/Introduction/Intro.html ),其中要求makeAssetDownloadTaskAVAssetDownloadURLSession 它在在線模式下工作正常,但從存儲的文件播放資產時播放失敗。

現在 WWDC 視頻表明您應該使用AVAssetResourceLoaderDelegate來提供離線加密密鑰。 由於AVAssetResourceLoader似乎不支持 http 和 https(參見例如AVAssetResourceLoaderDelegate 方法在設備上不起作用),我嘗試對密鑰 URI 使用自定義方案,並在shouldWaitForLoadingOfRequestedResourceAVAssetResourceLoaderDelegate提供本地 aes 密鑰。 這里它也適用於在線流式傳輸,但無論我是使用遠程密鑰 URL 還是使用本地密鑰覆蓋它,AVPlayer 總是無法離線播放 AVAsset。

有沒有人有下載加密 HLS 的經驗,或者有關於如何提供加密密鑰以離線播放本地加密 AVURLAsset 的工作示例?

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

首先,您需要下載密鑰並保存。

其次,下載完 HLS 后,您將獲得一個文件夾名稱,如“XXXXXX.movpkg”。 在文件夾中,有兩個文件需要修改。

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

在兩個文件里面,有一行

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

將 URI 替換為您的本地密鑰位置 URL

就是這樣! 現在您可以從本地獲取密鑰並正常播放。

也許它會幫助某人,

要離線下載和播放 HLS 視頻,您需要按照以下步驟操作,

  1. 使用像 GCDServer 這樣的本地服務器來托管下載后的 m3u8 文件。
  2. 如果那里沒有提到下載的 .ts 段,請編輯 m3u8 文件。
  3. 使用 GCDServer 本地主機 url 來托管和播放 m3u8 文件。

我在一個工作應用程序中使用它,所以你可以使用這種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM