Qt 使用QML将视频录制到文件
我使用的是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" }
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使用)?