qml LAVFSplitter播放器

来源:互联网 发布:软件项目立项申请报告 编辑:程序博客网 时间:2024/05/16 10:14
写好qml播放代码后运行时一直报DirectShowPlayerService::doRender: Unresolved error code 80040218 
找到原因是QtMultimedia 使用的系统默认的音视频编/解码器,如果系统没有安装与qt对应的音视频编解码器的话,就会报以上错误。
解决方案:

安装LAVFSplitter-0.3,用管理员权限运行CMD,切换到LAVFSplitter-0.3目录后运行安装安装脚本即可(注意32和64版本问题)。


qml代码:

import QtQuick 2.4import QtQuick.Controls 1.3import QtQuick.Window 2.2import QtQuick.Dialogs 1.2import QtMultimedia 5.4ApplicationWindow {    title: qsTr("LAVPlayer")    width: 640    height: 480    visible: true    Rectangle {        color: "black"        anchors.fill: parent        MediaPlayer {            id: mediaPlayer            source: "file:///e:/dome.mp4"            autoPlay: true        }        VideoOutput {            id: video            anchors.fill: parent            source: mediaPlayer        }    }//使用Video播放//    Video {//        id: mediaPlayer//        anchors.fill: parent//        source: "file:///e:/dome.mp4"//        MouseArea {//            anchors.fill: parent//            onClicked: {//                mediaPlayer.play()//            }//        }//        focus: true//        Keys.onSpacePressed: mediaPlayer.playbackState == MediaPlayer.PlayingState ? mediaPlayer.pause() : mediaPlayer.play()//        Keys.onLeftPressed: mediaPlayer.seek(mediaPlayer.position - 5000)//        Keys.onRightPressed: mediaPlayer.seek(mediaPlayer.position + 5000)//    }//播放进度条    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();            }        }    }    MessageDialog {        id: messageDialog        title: qsTr("May I have your attention, please?")        function show(caption) {            messageDialog.text = caption;            messageDialog.open();        }    }//测试代码//    Item {//        anchors.fill: parent//        MediaPlayer {//            id: mediaplayer//            source: "file:///e:/dome.mp4"//            autoPlay: true//        }//        VideoOutput {//            anchors.fill: parent//            source: mediaplayer//        }//        MouseArea {//            id: playArea//            anchors.fill: parent//            onPressed: mediaplayer.play();//        }//    }}
0 0
原创粉丝点击