【发布时间】:2021-03-31 11:23:36
【问题描述】:
我正在使用以下代码解密 VideoFile.mp4(CTR/Nopadding 加密文件)并在 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?
【问题讨论】: