使用QML录制视频到文件

时间:2016-06-13 22:36:01

标签: qt qml gstreamer qtmultimedia

我正在使用Qt Multimedia框架,我可以使用QML和Camera模块在我的窗口上显示视频,如下所示:

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();
            }
        }
    }
}

我在运行Ubuntu 14.04(nvidia Jetson)的基于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完成。

0 个答案:

没有答案