我相信这曾经是用captureOutput.minFrameDuration
。然而,这在 iOS 5 中已被弃用。
相反,我显然需要使用AVCaptureConnection
's video.minFrameDuration
。所以我有我的输入,我的输出,我将它们添加到捕获会话中 - 我在哪里可以访问捕获连接?我认为它是会话为我创建的,但是在哪里?
我可以尝试使用添加 I/OaddInputWithNoConnections
and addOutputWithNoConnections
然后可能手动创建连接。但这似乎只是设置最大帧速率有点麻烦。另外,Xcode 抱怨这些方法不存在。
克里斯,我想我已经解决了这个问题:
(编辑 - 请参阅下面 Tomas Camin 的评论,了解检查 videoMinFrameDuration videoMaxFrameDuration 是否受支持的正确方法,尽管下面的代码在发布时工作正常)
下面的行可以访问AVCaptureConnection
与关联的对象AVCaptureVideoDataOutput
object:
AVCaptureConnection *conn = [output connectionWithMediaType:AVMediaTypeVideo];
CMTimeShow(conn.videoMinFrameDuration);
CMTimeShow(conn.videoMaxFrameDuration);
if (conn.isVideoMinFrameDurationSupported)
conn.videoMinFrameDuration = CMTimeMake(1, CAPTURE_FRAMES_PER_SECOND);
if (conn.isVideoMaxFrameDurationSupported)
conn.videoMaxFrameDuration = CMTimeMake(1, CAPTURE_FRAMES_PER_SECOND);
CMTimeShow(conn.videoMinFrameDuration);
CMTimeShow(conn.videoMaxFrameDuration);
如果你正在使用(就像我一样),didOutputSampleBuffer
代表,您可以确认视频帧速率fromConnection
AVCaptureConnection * 传入委托的值已被上述代码正确设置并“记住”。
请注意,您需要设置both videoMinFrameDuration
and videoMaxFrameDuration
到相同的值才能成功限制帧速率——在 iPhone 4s 上测试时,单独设置 min 似乎不起作用。这似乎没有记录。
Josh
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)