87 lines
2.1 KiB
QML
87 lines
2.1 KiB
QML
// file: poc-qt/poc002/qml/main.qml
|
|
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import QtMultimedia
|
|
|
|
ApplicationWindow {
|
|
visible: true
|
|
width: 960
|
|
height: 640
|
|
title: "POC002 - Video Player"
|
|
|
|
ColumnLayout {
|
|
anchors.fill: parent
|
|
anchors.margins: 12
|
|
spacing: 8
|
|
|
|
Rectangle {
|
|
Layout.fillWidth: true
|
|
Layout.fillHeight: true
|
|
color: "black"
|
|
border.width: 1
|
|
border.color: "#555"
|
|
|
|
VideoOutput {
|
|
id: videoOutput
|
|
anchors.fill: parent
|
|
fillMode: VideoOutput.PreserveAspectFit
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
spacing: 8
|
|
|
|
Button {
|
|
text: player.playbackState === MediaPlayer.PlayingState ? "Pause" : "Play"
|
|
onClicked: {
|
|
if (player.playbackState === MediaPlayer.PlayingState) {
|
|
player.pause()
|
|
} else {
|
|
player.play()
|
|
}
|
|
}
|
|
}
|
|
|
|
Button {
|
|
text: "Stop"
|
|
onClicked: player.stop()
|
|
}
|
|
|
|
Slider {
|
|
Layout.fillWidth: true
|
|
from: 0
|
|
to: player.duration > 0 ? player.duration : 1
|
|
value: player.position
|
|
onMoved: player.position = value
|
|
}
|
|
|
|
Label {
|
|
text: Math.floor(player.position / 1000) + " / " + Math.floor(player.duration / 1000) + " s"
|
|
}
|
|
}
|
|
|
|
Label {
|
|
Layout.fillWidth: true
|
|
text: player.errorString.length > 0
|
|
? ("Error: " + player.errorString)
|
|
: ("Source: " + player.source)
|
|
wrapMode: Text.WrapAnywhere
|
|
}
|
|
}
|
|
|
|
MediaPlayer {
|
|
id: player
|
|
source: "../../videos/001.webm"
|
|
audioOutput: AudioOutput {}
|
|
videoOutput: videoOutput
|
|
loops: MediaPlayer.Infinite
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
player.play()
|
|
}
|
|
}
|