使用qml对象(ubuntu)播放MJPG视频



我有这个应用程序,我在这里显示内容与视频文件在一起。视频文件可以是image/jpeg(根据vlc的MJPG格式)或video/x-h264格式。

为了做到这一点,我使用了一个结合了视频输出元素的mediassource来显示视频。当使用h264时,这是完美的。但是,对于mjpg视频文件,这根本不起作用。

但是我不知道该怎么做。我已经阅读了使用ffmpeg或vlc的库,但我似乎找不到与QML元素结合使用的库,只能使用常规的QWidgets。

这里是一些相关的代码,它真的很简单,我宁愿保持简单。所以理想情况下,我只是在寻找一种方法来获得一个编解码器到项目或类似的东西。

property string videoLocation
FileDialog {
    id: videoFileDialog
    onAccepted: {
        videoLocation = fileUrl
    }
}
MediaPlayer {
    id: mediaplayer
    source: videoLocation
    autoPlay: false
}
 VideoOutput {
     id: videoOutput
     source: mediaplayer
}

可能有关:我的系统是ubuntu 13.04,我用的是qt 5.3。提前谢谢

编辑:我已经找到了我认为的问题:流是使用gstreamer> 1.0记录的。由于某些原因,它不会在0.10中重新播放。如果我使用相同的设置进行记录,但是使用gstreamer 0.10,那么一切都很好,我的应用程序也可以工作(尽管这个选项是不可行的,我真的需要使用> 1进行捕获)

下面是我用来捕获流到文件的代码:

gst-launch-0.10 v4l2src device=/dev/cam1 ! image/jpeg,width=320,height=240,framerate=30/1 ! matroskamux ! filesink location=videotest.mkv

关于新旧streamer之间兼容的设置有什么建议吗?

在*nix平台上,QtMultimedia使用GStreamer作为其后端。在GStreamer的网站上,JPEG似乎是一种支持的格式(人们会假设它包括motion JPEG)。

检查你的包管理器,确保你已经安装了所有的GStreamer插件。Ubuntu上至少有三个不同的GStreamer插件包

所以我通过使用avi容器而不是matroska容器来修复它。不知道为什么现在管用,而对matroska没用。我只能诚实地认为这一定是一个bug。

相关内容

  • 没有找到相关文章

最新更新