Можно ли сделать снимок видео в Qt Multimedia? как?Сделайте снимок видео в Qt Multimedia
0
A
ответ
2
Это зависит от платформы, но то, что вы, вероятно, можете сделать, это использовать QMediaPlayer
, установить видео поверхность подкласса через setVideoOutput
, и получить кадр данных из QVideoFrame
прошел в методе present
. Затем вам придется иметь дело с форматом фрейма и отображать его, если они не находятся в памяти ЦП.
Однако, в зависимости от вашей потребности, я бы использовал ffmpeg/libav для получения кадра из определенной позиции.
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
});
}
}
}
}
}