在 iOS 5 中使用 AVFoundation 设置最大帧速率

2024-04-04

我相信这曾经是用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代表,您可以确认视频帧速率fromConnectionAVCaptureConnection * 传入委托的值已被上述代码正确设置并“记住”。

请注意,您需要设置both videoMinFrameDuration and videoMaxFrameDuration到相同的值才能成功限制帧速率——在 iPhone 4s 上测试时,单独设置 min 似乎不起作用。这似乎没有记录。

Josh

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iOS 5 中使用 AVFoundation 设置最大帧速率 的相关文章

随机推荐