qml制作简单的播放器--MediaPlayer

MediaPlayer

 在QML应用程序中,最基本的媒体应用是播放媒体。使用MediaPlayer元素可以完成它,如果源是一个图片或者视频,可以选择结合VideoOutput元素。MediaPlayer元素有一个source属性指向需要播放的媒体。当媒体源被绑定后,简单的调用play函数就可以开始播放。
 如果你想播放一个可视化的媒体,例如图片或者视频等,你需要配置一个VideoOutput元素。MediaPlayer播放通过source属性与视频输出绑定。
 给MediaPlayer元素一个视频文件作为source。一个VideoOutput被创建和绑定到媒体播放器上。一旦主要部件完全初始化,例如在Component.onCompleted中,播放器的play函数被调用。

import QtQuick
import QtQuick.Window
import QtMultimedia
import QtQuick.Controls

Window {
    id: root
    width: 640
    height: 480
    visible: true

    MediaPlayer{
        id: player
        source: "../1.mp4"
        audioOutput:AudioOutput{
            volume: volumeSlider.value
        }
        videoOutput: videoOutput
    }

    VideoOutput{
        id:videoOutput
        width: root.width-80;
        anchors.centerIn: parent
    }

    Rectangle{
        color: 'black'
        width: col.width;height: col.height
        anchors.top:parent.top
        anchors.right:parent.right

        Column{
            id: col
            Text {
                color: 'white'
                text: qsTr("音量")
            }
            Slider{
                id: volumeSlider
                orientation: Qt.Vertical
                value: 0.5
                anchors.margins: 20
            }
        }
    }

    Row{
        height: 50;
        anchors.left: parent.left
        anchors.right:parent.right
        anchors.bottom: parent.bottom
        anchors.margins: 20
        spacing:20

        Button{
            width: 50
            anchors.verticalCenter: parent.verticalCenter
            text: player.playbackState===MediaPlayer.PlayingState?'Pause':'Play'
            onClicked: {
                switch(player.playbackState){
                case MediaPlayer.PlayingState:player.pause();break;
                case MediaPlayer.PausedState:player.play();break;
                case MediaPlayer.StoppedState:player.play();break;
                }
            }
        }

        Slider{
            id:progressSlider
            width: parent.width-80
            anchors.verticalCenter: parent.verticalCenter
            value: player.duration>0?player.position/player.duration:0

            background: Rectangle{
                implicitHeight: 8
                radius: 3
                color: 'lightgreen'

                Rectangle{
                    width: progressSlider.value*parent.width
                    height: parent.height
                    color:'blue'
                    radius: 3
                }
            }

            onMoved:function(){
                player.position=player.duration*progressSlider.value
            }
        }
    }
    Component.onCompleted: {
        player.play()
    }
}

代码地址

你可能感兴趣的:(qml,qt,qt,c++)