0

很快,我们将开展一个使用开源软件的项目,该软件可以做很多事情,其中​​一个模块涉及从基于 USB 的摄像头捕获长达 48 小时的实时信息并在不间断循环中覆盖它。这将与应用程序中的其他操作并行进行。我们还必须将至少 48 小时的捕获提要作为菜单选项显示给用户。

我希望你们都建议一个合适的开源技术堆栈,考虑到模块的音频/视频部分,没有这个功能我绝对可以使用 Qt 来做我的工作,但是有了这个功能就变得很困难了。我已经在 Linux 平台上使用 Qt 开发了 GUI 应用程序,但还没有想出可以在应用程序中记录和显示视频的东西。Qt 有声子,但设置它是一场噩梦。早些时候你们中的一些人建议使用 v4linux。我试图在 RHEL 4 机器上编译示例程序capture.c,它给出了以下错误。

usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:436: warning: no semicolon at end of struct or union

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:436: error: syntax error before '*' token

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:438: error: syntax error before '*' token

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:438: warning: data definition has no type or storage class

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:439: error: syntax error before '}' token

/usr/src/kernels/2.6.9-5.EL-i686/include/linux/videodev2.h:810: error: field `win' has incomplete type

所以走到了死胡同,此外我还没有提出具体可行的例子。此外,该网站没有经常更新,这表明开发过程停滞不前。

由于应用程序将是基于菜单的用户交互的图形化应用程序,因此它需要使用 Qt 或类似的东西作为图形部分。令人头疼的是我无法弄清楚如何在虚拟应用程序中实现/集成视频捕获/显示功能(我的尝试是使用 Qt 可能你们中的一些人已经使用其他库或语言完成了它) .

编辑:能够通过导入 videodev2.h 的本地副本并添加定义语句以包含 __user 宏来编译程序。但现在它无法运行,因为它找不到 /dev/video 设备。所以再次陷入 video4linux 的死胡同

4

3 回答 3

0

如果它说“找不到 /dev/video”,那是因为 Linux 对设备进行了编号。如果您查看.c文件,您会看到有几个 arg_opts 作为 -d ...(其中 ... 将变为 /dev/video0),或者您可以进入.c文件并将 0 添加到 /dev/video ,你会在开头的第 590 行找到它int main

于 2011-04-10T14:52:24.507 回答
0

您可以尝试FFmpeg系列库。就在最近(我认为),它还附带了支持 V4L 和 V4L2 用于视频捕获的 libavdevice 库,并且构建 FFmpeg 管道以从 avdevice 源读取视频并使用 avcodec 编写它应该不是很困难和avformat成一个文件...

于 2010-01-07T09:00:37.490 回答
0

gstreamer是一个非常强大的用于捕获的多媒体堆栈,并且存在 pygst 和 PyQt4 绑定以在 Python 中使用。

于 2010-01-08T00:32:23.657 回答