我有这个应用程序,我将内容与视频文件一起显示。视频文件是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兼容设置的任何建议吗?
答案 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。老实说,我只能认为这必须是某个地方的错误。