QML播放器切换文件路径

使用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();
        }
    }
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值