我相信过去常常这样做captureOutput.minFrameDuration.但是,这在iOS 5中已弃用.
相反,我显然需要使用AVCaptureConnection's video.minFrameDuration.所以我有我的输入,我的输出,我将它们添加到捕获会话 - 我在哪里可以访问捕获连接?我认为它是由会议创建的,但在哪里?
我可以尝试使用addInputWithNoConnections和添加I/O addOutputWithNoConnections,然后手动创建连接.但是,设置最大帧速率似乎有点麻烦.另外,Xcode抱怨这些方法不存在.
Jos*_*fer 28
克里斯,我想我已经解决了这个问题:
(编辑 - 请参阅下面的Tomas Camin的评论,检查是否支持videoMinFrameDuration videoMaxFrameDuration的正确方法,尽管下面的代码在发布时工作正常)
下面的行可以访问与AVCaptureConnection对象关联的AVCaptureVideoDataOutput对象:
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);
Run Code Online (Sandbox Code Playgroud)
如果您正在使用(就像我一样)didOutputSampleBuffer委托,您可以确认fromConnection传入代理的AVCaptureConnection*值中的视频帧速率已被上述代码正确设置和"记住".
请注意,您需要设置都 videoMinFrameDuration与videoMaxFrameDuration相同的值,成功钳制帧速率-设置自身分钟似乎并没有在iPhone 4S测试时工作.这似乎没有记录.
玩笑
AVCaptureConnection videoMinFrameDuration已弃用.使用 AVCaptureDevice activeVideoMinFrameDuration/ activeVideoMaxFrameDuration.AVCaptureDevice类引用中的第一个代码片段回答了这个问题.
| 归档时间: |
|
| 查看次数: |
17161 次 |
| 最近记录: |