2016-09-22 83 views
1

我開發一個iOS應用,它能夠下載M3U8視頻並根據iOS 10最新的功能離線HLS離線HLS與CDN令牌 - iOS設備

我想盡我所能保護HTTP Live Stream格式視頻在我們的CDN

每個視頻都有多個比特率,因此HLS文件由一個主m3u8清單組成,該清單指向幾個子清單文件,後者又指向ts文件(傳輸流)。

因此,我需要將此CDN令牌附加到主m3u8,子清單m3u8和.ts文件的URL。該標記將有效60秒,因此需要刷新並且當前標記應該附加URL。

我該怎麼做?

我試過這個,但它只追加到m3u8。

我的代碼:

var components = URLComponents(string: playUrl) 
    let token = URLQueryItem(name: "token", value: CDNTokenManager.getCDNToken()) 
    components?.queryItems = [token] 
    let url = components?.url 
    let asset = AVURLAsset(url: url!) 
    let downloadTask = downloadURLSession.makeAssetDownloadTask(asset: asset, 
                  assetTitle: "title", 
                  assetArtworkData: nil, 
                  options: nil) 
    downloadTask?.resume() 

回答

0

據我所知,iOS不提供任何修改URL的M3U8文件。它會在沒有任何改變的情況下檢索它所以我認爲你完全可以在客戶端解決這個問題。

除了您的客戶端代碼,您還需要在服務器端實現一個按需生成m3u8文件的Web應用程序,並添加CDN令牌。

例如,iOS客戶端請求https://cdn.com/master/fk29x8.m3u8?token=12345的主文件,web應用動態生成包含URL的文件,如https://cdn.com/sub/fk29x8-1280x720-1823.m3u8?token=12345。該網址再次由網絡應用提供,幷包含類似https://cdn.com/stream/fk29x8-1280x720-1823/mp4-123.ts?token=12345的網址。

因此,Web應用程序的任務基本上是讀取模板文件,並使用請求的URL中的給定值替換標記值。

+0

令牌需要刷新的安全手段。那麼這將如何工作? – Dev

+0

有什麼方法可以跟蹤URL請求,並通過在客戶端插入令牌來修改它們? – Dev

+0

我聽說過應用程序額外用作HTTP代理服務器的解決方案。代理服務器可以修改響應。我不知道這是否仍然可以在iOS上,以及它將如何完成。 – Codo