我正在使用AV Foundation从我的webcamera中捕获视频。网络摄像头只能以有限数量的像素格式生成视频流,因此我希望AV Foundation能够将摄像机捕获的任何像素格式转换为所需的像素格式,相机可能不支持这种格式(即AV基金会)框架将需要做的转换从像素格式相机可以自己记录到所需的像素格式)。我正在寻找YUV到RGB,RGB到YUV,YUv到YUV以及RGB到RGB的转换都很好,类似于Color Converter DSP provides in Windows's Media Foundation framework。
首先,我尝试在
中将我想要的类型设置为输出 -[AVCaptureVideoDataOutput setVideoSettings:@{(id)kCVPixelBufferPixelFormatTypeKey: @(constant)}]
以便框架转换为该类型。
我尝试使用AVCaptureVideoDataOutput availableVideoCVPixelFormatTypes
中的所有类型,但只有一半的工作正在运行而另一半错误处理控制台中的消息,这是令人惊讶的,因为你会想象如果说像素格式是可用 - 它会工作。
以下是适用于我的AVCaptureVideoDataOutput availableVideoCVPixelFormatTypes
格式:
以下是错误:
我得到的错误是
" AVCaptureSession警告:会话在解压缩视频时收到以下错误:错误域= NSOSStatusErrorDomain代码= -6680"操作无法完成。 (OSStatus错误-6680。)"。确保正确配置所有视频输出的格式。"
和
AVCaptureSession警告:会话在解压缩视频时收到以下错误:错误域= NSOSStatusErrorDomain代码= -12905"操作无法完成。 (OSStatus错误-12905。)"。确保正确配置所有视频输出的格式。"
所以我在这里有点无能为力。有没有办法知道哪些像素格式可以正常工作?它只是在没有实际返回任何错误值的情况下向控制台输出错误,因此很难推断出这种转换是否可行。我也不太确定这是否是请求AV Media框架进行像素格式转换的正确方法,也许我应该只使用网络摄像头支持的像素格式并使用其他一些AV基金会用于像素格式转换的类(我发现没有这样的类)?