用于视频捕获的Linux +语言&显示

时间:2010-01-07 08:45:06

标签: linux qt video-capture

很快,我们将开发一个开源软件项目,该项目可以执行许多操作,其中一个模块涉及从基于usb的摄像头捕获实时源,最多48小时,并在不间断循环中覆盖它。这将与应用程序中的其他操作并行进行。我们还必须向用户显示至少48小时的捕获的Feed作为菜单选项。

我希望大家建议一个合适的开源技术堆栈,考虑到模块的音频/视频部分,没有这个功能我绝对可以使用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

因此,我没有想出具体可行的例子。此外,website并未经常更新,这表明开发过程停滞不前。

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

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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