首先放上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位的解码器导致无法解码成功。
这篇博客详细介绍了在Qt环境中配置多媒体播放器的过程,包括导入必要的库、设置源文件以及处理播放错误。遇到的问题包括找不到解码器、媒体插件缺失以及32位与64位兼容性问题。解决方案涉及添加LAVFilters解码器,以及将媒体插件复制到正确目录。此外,还提到了URL路径拼写和系统环境差异可能导致的播放失败,并提供了相应的排查步骤。
1975

被折叠的 条评论
为什么被折叠?



