4

我正在使用 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

是否有可能使用 Camera 模块和 QML 建立类似的管道(我认为这些是基于 gstreamer 的)。

编辑:

我尝试设置videoRecorder.videoCodec: "video/x-h264",但这似乎没有任何效果。编码仍然使用Theora.

4

0 回答 0