Ios 用大量数据加载Avplayer(本地文件的解密输出)
我使用下面的代码来解密VideoFile.mp4(CTR/NOP添加加密文件)并在Avplayer中播放它。 这段代码适用于小文件。但由于内存问题,它会导致大视频文件崩溃 如何解决这个问题。请帮忙Ios 用大量数据加载Avplayer(本地文件的解密输出),ios,aes,avplayer,nsstream,Ios,Aes,Avplayer,Nsstream,我使用下面的代码来解密VideoFile.mp4(CTR/NOP添加加密文件)并在Avplayer中播放它。 这段代码适用于小文件。但由于内存问题,它会导致大视频文件崩溃 如何解决这个问题。请帮忙 guard let content = Bundle.main.url(forResource: "videoFile", withExtension: "mp4") else{ return }
guard let content = Bundle.main.url(forResource: "videoFile", withExtension: "mp4") else{
return
}
let vidoeData = NSData(contentsOf: content)!
let vidoeDatadencrypted = vidoeData.decryptData(vidoeData as Data, withKey: aeskey.data(using: .utf8))
let tmpFileURL1 = URL(fileURLWithPath:NSTemporaryDirectory()).appendingPathComponent("video").appendingPathExtension("mp4")
let wasFileWritten1 = (try? vidoeDatadencrypted!.write(to: tmpFileURL1, options: [.atomic])) != nil
if wasFileWritten1{
let player = AVPlayer(url: tmpFileURL1)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.bounds
self.view.layer.addSublayer(playerLayer)
player.play()
}
更新:
能够使用上述共享代码为较小的文件实现这一点
如何使用NSStream加载avplayer?您需要使用InputStream打开文件,将数据块传递到
CommonCrypto
lib,将输出块写入OutputStream并重复,直到文件结束
我没有看到任何这样做的指南,但作为参考,我为您找到了几个例子:
相关问题供您查阅:,能否请您共享代码示例-在不破坏内存的情况下解密一个非常大的文件。这不能在几行内完成。我没有这样的代码,编写它至少需要3-4个小时,但我在回答中提到的示例应该足以实现它