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에 저장된 키 요청을 가로 채고 있습니다.
내 장치의 Wi-Fi 또는 데이터 연결이 꺼져있을 때 맞춤 키가있는이 AES 암호화 HLS 비디오가 잘 재생됩니다.
내 장치의 와이파이 또는 데이터 연결이 활성화 된 상태에서이 비디오를 재생을 시작하거나 만약 내가 재생중인 비디오 동안 내 장치의 와이파이 또는 데이터 연결을 사용하는 경우; 비디오는 오류없이 즉시 재생을 멈추고 다시 재생되지 않습니다.
playerLog의 accessLog 및 errorLog를 확인했지만 도움이되는 정보가 없습니다.
는URI = 대체하여 내가 .m3u8 파일의 내용을 업데이트하고 HLS의 컨텐츠의 다운로드 후 사용자 정의 URL 키를 제공하기 위해 "..."
문자열
로URI = "ckey는 : // ..."
는 일이다 AES 암호화 된 비디오의 키를 제공하는 올바른 방법입니까?
이 문제의 원인 및이 문제를 해결하는 방법은 무엇일까요?
미리 감사드립니다.