gpt4 book ai didi

ios - 在 iOS 7 中运行捕获 session 时无法设置 session 预设

转载 作者:行者123 更新时间:2023-11-29 13:01:54 24 4
gpt4 key购买 nike

我有以下代码不再适用于 iOS 7,用于在捕获 session 仍在运行(但不捕获视频)时更改它的 sessionPreset。这适用于 iOS 6.x,但在 7 上视频预览卡住。

我试过删除开始/提交配置,以及锁定输入设备并在之后解锁。我还尝试在 commitConfiguration 之后再次调用 beginSession,但这会导致设备开始捕获视频。

这是错误还是我做错了什么?

- (void)setVideoCaptureSessionPreset:(NSString *)videoCaptureSessionPreset
{
if (_captureSession.sessionPreset == videoCaptureSessionPreset) return;

if (![_captureSession canSetSessionPreset:videoCaptureSessionPreset])
{
TFLog(@"%s Device cannot set preset to: %@", __PRETTY_FUNCTION__, videoCaptureSessionPreset);
return;
}

[_captureSession beginConfiguration];
_captureSession.sessionPreset = videoCaptureSessionPreset;
[_captureSession commitConfiguration];
}

编辑:这不仅会导致视频预览卡顿,还会导致整个手机卡死(背景不再显示在主屏幕上,应用程序无法重启,最终整个手机都必须硬重置)。

最佳答案

在 iOS 7 及更高版本中,解决方案是使用新的 AVCaptureDevice activeFormat API 并将 session 预设设置为 AVCaptureSessionPresetInputPriority。当您更改事件格式时,您必须将 startRunning 包装在 lockForConfiguration 中,如下所示:

if ([_videoCaptureDevice lockForConfiguration:nil])
{
_videoCaptureDevice.activeFormat = format
[_captureSession startRunning];
[_videoCaptureDevice unlockForConfiguration];
}

关于ios - 在 iOS 7 中运行捕获 session 时无法设置 session 预设,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19579962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com