使用QML做为播放器的前端,还是有许多QT不能比的效果哦..
界面:
今天搞了一下文件路径的问题, 发现MediaPlay好多格式的视频播不了, 真心蛋疼...
难怪大家都选择QML+VLC做为视频播放的后台..通过这个小例子,了解一下视频播放的路径的切换方法.
点击open会打开一个文件选择框. 选择你想要播放的视频就OK了..
通过这种方式定义了一个属性. 我是当变量来用了..
property string path : "file:///c:/test1.avi"
文件对话框的定义:
FileDialog { id: fileDialog title: "Please choose a file" onAccepted: { path = fileDialog.fileUrls[0].toString(); console.log("You chose: ",path) mediaPlayer.source = path } onRejected: { console.log("Canceled") } }
全部代码如下:
import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Window 2.2 import QtQuick.Dialogs 1.2 import QtMultimedia 5.4 ApplicationWindow { title: qsTr("Hello World") width: 640 height: 480 visible: true property string path : "file:///c:/test1.avi" MediaPlayer { id: mediaPlayer source: path autoPlay: true } Rectangle { color: "black" anchors.fill: parent VideoOutput { id: video anchors.fill: parent source: mediaPlayer } } Rectangle { id: progressBar anchors.left: parent.left anchors.right: parent.right anchors.bottom: parent.bottom anchors.margins: 0 height: 10 color: "lightGray" Rectangle { anchors.left: parent.left anchors.top: parent.top anchors.bottom: parent.bottom width: mediaPlayer.duration>0?parent.width*mediaPlayer.position/mediaPlayer.duration:0 color: "darkGreen" } MouseArea { property int pos anchors.fill: parent onClicked: { if (mediaPlayer.seekable) pos = mediaPlayer.duration * mouse.x/width mediaPlayer.seek(pos) } } } FileDialog { id: fileDialog title: "Please choose a file" onAccepted: { path = fileDialog.fileUrls[0].toString(); console.log("You chose: ",path) mediaPlayer.source = path } onRejected: { console.log("Canceled") } } menuBar: MenuBar { Menu { title: qsTr("&File") MenuItem { text: qsTr("&Open") onTriggered: { fileDialog.open() } } MenuItem { text: qsTr("E&xit") onTriggered: Qt.quit(); } } } MainForm { anchors.fill: parent button1.visible: false button2.visible: false button3.visible: false button2.onClicked: messageDialog.show(qsTr("Button 2 pressed")) button3.onClicked: messageDialog.show(qsTr("Button 3 pressed")) button1.onClicked: { } } MessageDialog { id: messageDialog title: qsTr("May I have your attention, please?") function show(caption) { messageDialog.text = caption; messageDialog.open(); } } }