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