2017-08-03 30 views
2

在播放解密的HLS視頻時,我使用GCDServer來主持m3u8文件,當我在m3u8文件中使用一組解密的塊時,它演奏的很好,但是當我使用解密的塊並嘗試解密密鑰大塊它不是在那裏玩。由於未使用http方案調用AVAssetResourceLoaderDelegate方法,並且如果使用自定義方案,則GCDServer完成加載。任何建議?AVAssetResourceLoaderDelegate方法覆蓋loadingRequest

  1. 我們可以重載加載請求回http嗎?如果是,那麼如何。
  2. 如何從保存的部分獲取m3u8文件和.key文件的內容,在這裏我想通知您,NSBundle.mainBundle不適用於.key,m3u8,m3u和其他播放列表文件。

嘗試但沒有成功。

let urlComponents = NSURLComponents(url: loadingRequest.request.url!, resolvingAgainstBaseURL: false) 
    urlComponents?.scheme = "http" 
    var mutableLoadingRequest = loadingRequest.request 
    mutableLoadingRequest.url = urlComponents?.url 
    loadingRequest.request = mutableLoadingRequest 

這是什麼m進入服務器日誌。

[DEBUG] Did open IPv4 listening socket 5 

[DEBUG]難道開放的IPv6監聽套接字7 [INFO] GCDWebServer端口8080,到達開始在http://192.168.1.183:8080/ 獲取主機url可選(http://192.168.1.183:8080/) {網址:tapow://192.168.1.183: 8080 /},請求ID = 1,內容信息請求=,數據請求=>

回答

0

只是要共享的情況下,任何人是有此需要的答案,

  1. 我們可以覆蓋加載請求回http嗎?如果是,那麼如何。

是的,我們可以。由於m3u8正在他自己的文件夾中搜索文件,所以只需解密AVAssetResourceLoaderDelegate中的m3u8數據並返回到方法,然後它將自動執行下一個任務。 P.S - 你可以用其他服務器代替它,我只是用它來在線流媒體。

  1. 如何從保存的部分獲取m3u8文件和.key文件的內容,在這裏我想通知您NSBundle.mainBundle不適用於.key,m3u8,m3u和其他播放列表文件。

的確,您無法在iOS中獲取m3u8變量的引用,但可以直接將對象傳遞給所需的位置。我已經使用GCDserver來託管m3u8文件,並且我只是在參數中發送了m3u8文件的本地路徑url,然後GCDserver完成了它的工作並將文件託管在本地服務器上。後來我用avplayer的gcdserver url。