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