QML播放器切换文件路径

来源:互联网 发布:知豆电动汽车公司待遇 编辑:程序博客网 时间:2024/06/05 18:17

使用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.4import QtQuick.Controls 1.3import QtQuick.Window 2.2import QtQuick.Dialogs 1.2import QtMultimedia 5.4ApplicationWindow {    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();        }    }}


 

0 0