首先放上demo
import QtQuick 2.6
import QtQuick.Window 2.2
import QtMultimedia 5.8
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Item {
anchors.fill: parent
MediaPlayer {
id: mediaplayer
// audioRole: MediaPlayer.VideoRole
source: "file:/examplevideo123.mp4"
}
VideoOutput {
anchors.fill: parent
source: mediaplayer
}
MouseArea {
id: playArea
anchors.fill: parent
onPressed: mediaplayer.play();
}
}
}
请注意在pro文件中添加
QT += multimedia
修改下地址为你视频所在的地址,此时直接运行若遇到
defaultServiceProvider::requestService(): no service found for - "org.qt-project.qt.mediaplayer"
如上报错,说明没有找到解码器或是没有找到mediaplayer,我使用的是LAV Filters解码器,默认在X86文件夹,将该文件夹复制到QT同级目录的文件夹。
此时运行若仍然报错,将QT目录中的你所选择的kit工具对应的media插件复制到QT的运行目录,原位置:
(请注意不是工作目录,是你编译后生成的目录,如下)
此时运行依然报错,将LAV Filters解码器文件夹复制到QT的运行目录,位置同上
若使用的编译kit工具是32位的,可能会遇到无报错但解不出视频的情况
此时运行若出现类似于DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 ()的错误,请检查url拼写,QML与QT的url拼写有区别,且linux和windows的拼写斜杠也有区别,具体可度娘。
若此时运行没有报错但是未解析出视频,检查下kits工具链,看是否为32位的,我下载的LAV Filters解码器是64位的,工具链的32位无法使用64位的解码器导致无法解码成功。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)