2016-09-22 17 views
1

私はiOS 10最新の機能オフラインHLSに応じオフラインM3U8の動画をダウンロードし、それを再生することが可能であるiOSアプリを開発しています。HLS - iOSの

私はHTTP Live StreamフォーマットのビデオをCDNに保存しています。

HLSファイルはtsファイル(トランスポートストリーム)に転換点のどのいくつかのサブマニフェストファイルを指すマニフェストマスターM3U8から成るので、各ビデオは、複数のビットレートを有しています。

マスターm3u8、サブマニフェストm3u8および.tsファイルのURLにこのCDNトークンを追加する必要があります。トークンは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のは、M3U8ファイルにURLを変更するために何を提供していません。何も変更せずに検索します。だから私はあなたがクライアント側でこれを完全に解決できるとは思わない。

クライアントサイドコードに加えて、必要に応じてm3u8ファイルを生成し、CDNトークンを追加するWebアプリケーションをサーバー側で実装する必要があります。

たとえば、iOSクライアントはマスターファイルをhttps://cdn.com/master/fk29x8.m3u8?token=12345に要求し、ウェブアプリケーションはhttps://cdn.com/sub/fk29x8-1280x720-1823.m3u8?token=12345などのURLを含むファイルを動的に生成します。このURLは、ウェブアプリケーションによって再び配信され、https://cdn.com/stream/fk29x8-1280x720-1823/mp4-123.ts?token=12345などのURLが含まれています。

したがって、Webアプリケーションのタスクは、基本的にテンプレートファイルを読み込んで、トークン値を要求されたURLで指定されたonに置き換えることです。

+0

セキュリティ手段のためにトークンをリフレッシュする必要があります。では、これはどのように機能しますか? – Dev

+0

URLリクエストを追跡し、クライアント側でトークンを挿入することによって変更する方法はありますか? – Dev

+0

私は、アプリケーションがHTTPプロキシサーバーとして追加で動作するソリューションについて聞いたことがあります。プロキシサーバーは、応答を変更できます。私はこれがiOS上でまだ可能なのか、それがどうなるのかは分かりません。 – Codo

関連する問題