Ios 用大量数据加载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 }

我使用下面的代码来解密VideoFile.mp4(CTR/NOP添加加密文件)并在Avplayer中播放它。 这段代码适用于小文件。但由于内存问题,它会导致大视频文件崩溃

如何解决这个问题。请帮忙

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个小时,但我在回答中提到的示例应该足以实现它