Qt 使用QML将视频录制到文件

Qt 使用QML将视频录制到文件,qt,qml,gstreamer,qtmultimedia,Qt,Qml,Gstreamer,Qtmultimedia,我使用的是Qt多媒体框架,我可以使用QML和摄像头模块在我的窗口上显示视频,如下所示: ControlView { id: recorderWindow color: "#000000" border.width: 5 Camera { id: camera captureMode: Camera.CaptureVideo videoRecorder.mediaContainer: "mp4" }

我使用的是Qt多媒体框架,我可以使用QML和摄像头模块在我的窗口上显示视频,如下所示:

ControlView {
    id: recorderWindow
    color: "#000000"
    border.width: 5

    Camera {
        id: camera
        captureMode: Camera.CaptureVideo
        videoRecorder.mediaContainer: "mp4"
    }
    VideoOutput {
        source: camera
        focus: visible
        anchors.fill: parent
        MouseArea {
            anchors.fill: parent;
            onClicked: {
                camera.videoRecorder.record();
            }
        }
    }
}
我在运行Ubuntu14.04(NvidiaJetson)的基于ARM的处理器上运行这个

现在,我的问题是,当我录制视频时,UI中的预览会完全停止。此外,录制的视频会掉很多帧。我注意到,它总是使用
ogg
容器,而不是指定的
mp4
容器

使用gstreamer,我可以在显示和录制的同时运行以下操作,而不会出现任何问题:

gst-launch-1.0 -v autovideosrc ! tee name = t ! queue ! omxh264enc ! 
'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! qtmux 
! filesink location=test.mp4 t. ! queue ! videoscale ! video/x-raw, 
width=480,height=270 ! xvimagesink -e sync=false
是否有可能使用摄像头模块和QML(我认为它们基于gstreamer)实现类似的管道

编辑:


我尝试设置
videoRecorder.videoCodec:“video/x-h264”
,但似乎没有任何效果。编码仍然是用Theora完成的,你不能在你的qt应用程序中直接使用GStreamer制作记录管道吗(可能最大的问题是你不能访问相机,因为它将从QML使用)?