HLSビデオをダウンロードしてオフラインモードで再生するコードを記述しました。 このコードは、エンコードされたビデオで正常に動作します。今私はAES暗号化されたビデオを持っており、それにカスタム暗号化キーを持っています。 AESで暗号化されたHLSビデオをダウンロードした後、以下のコードを使用して、ビデオの復号化のための鍵を提供しています。AVPlayer AESで暗号化されたオフラインHLSビデオのオンラインモードでの再生を停止します
- (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest {
NSString *scheme = loadingRequest.request.URL.scheme;
if ([scheme isEqualToString:@"ckey"]) {
NSString *request = loadingRequest.request.URL.host;
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:request];
if (data) {
[loadingRequest.dataRequest respondWithData:data];
[loadingRequest finishLoading];
} else {
// Data loading fail
}
}
return NO; }
私は、復号化のためにUserDefaultsに格納されている鍵の要求を傍受し、その鍵を渡しています。
このAESで暗号化されたカスタムキー付きHLSビデオは、デバイスの無線またはデータ接続がオフのときに再生されます。
私は自分のデバイスのWiFiまたはデータ接続が有効か 場合、ビデオを再生しながら、私は私のデバイスのWiFiまたはデータ接続を有効にしたとき、この動画の再生を開始すると、ビデオはエラーなしですぐに再生を停止し、再び再生されません。
私はplayerItemのaccessLogとerrorLogをチェックしましたが、役に立たないものは見つかりませんでした。私は
URI =を置き換えることによって、.m3u8ファイルの内容を更新していますHLSコンテンツのダウンロードした後に、カスタムURLのキーを提供するために、 "..."
と
文字列を
URI = "CKEY:// ..."
は番目ですAES暗号化ビデオの鍵を提供する正しい方法ですか?
この現象の原因とその原因は何か?
ありがとうございます。