是否可以在Qt Multimedia中拍摄视频快照?如何?
问问题
1295 次
2 回答
2
这取决于平台,但您可能做的是使用 a QMediaPlayer
,通过 设置子类视频表面,并从传入的方法中setVideoOutput
获取帧数据。然后,您必须处理帧格式并映射它们是否不在 CPU 内存中。QVideoFrame
present
但是,根据您的需要,我会使用 ffmpeg/libav 从特定位置获取帧。
于 2015-10-15T19:27:35.063 回答
1
试试这个(这里的文档:http: //doc.qt.io/qt-5/qml-qtquick-item.html#grabToImage-method)
import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
import QtQuick.Layouts 1.1
import QtMultimedia 5.0
Window {
id: mainWindow
visible: true
width: 480
height: 800
MediaPlayer {
id: player
source: "file:///location/of/some/video.mp4"
autoPlay: false
}
ColumnLayout {
anchors.fill: parent
VideoOutput {
id: output
source: player
Layout.fillHeight: true
Layout.fillWidth: true
}
Row {
id: buttonsRow
height: 100
spacing: 20
anchors.horizontalCenter: parent.horizontalCenter
Layout.margins: 10
Button {
id: playPauseButton
text: player.playbackState === MediaPlayer.PlayingState ? "Pause" : "Play"
onClicked: {
var playing = player.playbackState === MediaPlayer.PlayingState;
playing ? player.pause() : player.play();
}
}
Button {
text: "Snapshot"
onClicked: {
output.grabToImage(function(image) {
console.log("Called...", arguments)
image.saveToFile("screen.png"); // save happens here
});
}
}
}
}
}
于 2015-10-16T13:25:09.653 回答