iOS AVCaptureVideoDataOutput 消耗过多内存

6

我正在使用AVFoundation框架来通过iPhone相机捕获视频,我的代码如下:

 self.session = [[AVCaptureSession alloc] init];
 ...
 self.output = [[AVCaptureVideoDataOutput alloc] init];
 [self.session addOutput:self.output];

在调用[session addOutput]之前,一切都很顺利,内存限制为3M,但在调用[session addOutput]之后,内存使用率每秒增加0.06M,过了一些时间,应用程序将因内存警告而崩溃。AVCaptureVideoDataOutput似乎消耗太多内存,可能存在内存泄漏问题。

那么如何减少内存使用?

iOS版本:7.1.1


2
你启用了僵尸吗? - Abhi Beckert
我遇到了同样的问题,你解决了吗?如果是,请分享你的解决方案。 - Asif Bilal
在主队列中执行 [self.session addOutput:self.output]; - Onur Tuna
你找到解决这个问题的方法了吗?我目前也遇到了同样的问题:https://dev59.com/c8Dqa4cB1Zd3GeqPf4oi - mrousavy
有相同的问题。 有人找到原因了吗? - Jenny Tran
正如@Gajendra在下面提到的,我尝试了一下AVCaptureSession会话预设。使用.high仍然消耗了太多内存。我尝试使用.medium并显着减少了内存消耗和CPU使用率,但视频质量也大大降低了。最终我尝试使用.hd1280x720预设,它不会使用太多RAM和CPU使用率,但仍具有相当不错的质量。 - cleanrun
1个回答

1
AVCaptureSession *mSession; ;

使用会话预设高度而不是会话预设照片。
mSession.sessionPreset = AVCaptureSessionPresetHigh; //yes

mSession.sessionPreset = AVCaptureSessionPresetPhoto; //no

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接