C 如何通过v4l2捕获/dev/video0的原始帧

C 如何通过v4l2捕获/dev/video0的原始帧,c,v4l2,C,V4l2,最近,我试图捕捉视频的原始数据。在我的桌面上,video0是网络摄像头 如果我键入: vlc v4l2:///dev/video0 我的网络摄像头将打开,我的脸将出现在vlc播放器中 我尝试使用示例代码,并假定它是正确的。当我运行此用户应用程序时,将显示错误,并告诉我设备或资源正忙,因为我查询正在写入的缓冲区。我的问题是如何正确捕获 完整的错误消息是: VIDIOC_REQBUFS error 16, Device or resource busy\n 你能把你看到的错误复制到这里吗?经过编

最近,我试图捕捉视频的原始数据。在我的桌面上,
video0
是网络摄像头

如果我键入:

vlc v4l2:///dev/video0
我的网络摄像头将打开,我的脸将出现在vlc播放器中

我尝试使用示例代码,并假定它是正确的。当我运行此用户应用程序时,将显示错误,并告诉我设备或资源正忙,因为我查询正在写入的缓冲区。我的问题是如何正确捕获

完整的错误消息是:

VIDIOC_REQBUFS error 16, Device or resource busy\n

你能把你看到的错误复制到这里吗?经过编辑,我认为不能请求繁忙的设备是合理的(网络摄像头正在写入)。互联网上有很多v4l2捕获示例代码,但它们没有显示如何执行这些代码。哦,你是在vlc捕获视频时尝试运行它吗?我认为那行不通。如果在没有vlc运行的情况下运行它会发生什么?如果没有,capture.c将生成大量的原始数据文件,这些文件都是空的。这也是合理的,因为video0现在没有任何图像。您运行了多长时间?在开始视频捕获后,网络摄像头可能需要几秒钟才能激活,导致前N帧变黑。您能在此处复制您看到的确切错误吗?编辑,我认为无法请求设备繁忙是合理的(网络摄像头正在写入)。互联网上有很多v4l2捕获示例代码,但它们没有显示如何执行这些代码。哦,你是在vlc捕获视频时尝试运行它吗?我认为那行不通。如果在没有vlc运行的情况下运行它会发生什么?如果没有,capture.c将生成大量的原始数据文件,这些文件都是空的。这也是合理的,因为video0现在没有任何图像。您运行了多长时间?开始视频捕获后,网络摄像头可能需要几秒钟才能激活,导致前N帧变黑。