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

时间:2014-08-01 15:16:57

标签: qt qml qt5 qtquick2

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

为此,我使用mediasource结合视频输出元素来显示视频。这在使用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。 Thx提前

编辑:我发现了我认为的问题:使用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

有关新旧gstreamer兼容设置的任何建议吗?

2 个答案:

答案 0 :(得分:0)

在* nix平台上,QtMultimedia uses GStreamer as its backend。在GStreamer的网站it appears that JPEG is a supported format上(人们会认为这包括动作jpeg。)

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

答案 1 :(得分:0)

所以我通过使用avi容器而不是matroska容器来修复它。不知道为什么它现在有效而不是matroska。老实说,我只能认为这必须是某个地方的错误。