我正在尝试从Bodelin Proscope HR USB显微镜抓取帧并预览视频。我有一个简单的Cocoa应用程序,使用一个带有Proscope HR的AVCaptureDeviceInput的AVCaptureSession和一个显示输出的AVCaptureVideoPreviewLayer。
所有这些在内置iSight摄像头上都工作得很好,但Proscope HR的输出却乱七八糟,面目全非。
使用捆绑的Proscope软件时,我有时会在尝试使用更高分辨率时看到同样的乱码。我的怀疑是,所使用的硬件相当不规范,而这一点得到了以下事实的支持:在最低的320x200分辨率下,捆绑软件的分辨率为30fps,但当你提高分辨率时,帧速率会急剧下降,在640x480时降至15fps,在1600x1200的最大分辨率下一直降至3.75fps。
编辑:我最初认为可能是AVCaptureSession尝试的帧速率太高,但后来我确认(至少在理论上)捕获会话正在请求AVCaptureDevice通告的帧速率。
我应该指出的是,我已经尝试了在标题中定义的所有标准AVCaptureSessionPreset*常量预设,但它们都没有改善Proscope HR的结果。(但是,它们似乎以大致预期的方式影响了内置的iSight。)
以下是显示ProScope HR乱码输出的屏幕截图:

为了便于比较,通用WebCam的输出如下:

发布于 2012-01-20 04:50:38
根据documentation,您应该配置AVCaptureDevice,而不是AVCaptureSession。
编辑: AV框架是在IOKit之上开发的,它完全依赖于您没有硬件问题这一事实。在您的情况下,看起来问题的根源是与硬件相关的,所以您应该考虑直接使用IOKit。
https://stackoverflow.com/questions/8889476
复制相似问题