从逻辑上讲,我应该假设最终用户没有安装额外的编解码器,只有操作系统提供的编解码器。
因此我的问题是,是否可以将OGG(最好)或AAC解码器捆绑到我的应用程序中,以便后端能够识别并播放音频文件?我应该采取哪些一般步骤,并在哪里寻找更多信息?
该应用程序本身不可安装,它直接从物理介质上运行。
关于获取正确的播放声音库,只需要找出您系统上 Phonon 所使用的库即可。我知道 Phonon 是一个相当大的项目,每个操作系统都有不同的媒体播放驱动程序和编解码器等。我建议查看 Audacity 和 VLC 并检查 Google。
关于让 Phonon 与 Qt 协同工作,我有经验...
我没有在每个主要操作系统上对 Phonon 进行大量测试,但我在几个不同版本的 Windows 上进行了测试。
Qt 应用程序的部署非常简单,即使涉及像 Phonon 这样的插件和库。但是第一次弄清楚可能会有点痛苦,因为术语有点奇怪。
我的回答是针对Windows桌面应用程序与Qt库的动态链接上下文,而不是静态链接。
以下是Windows的目录结构以及如何查找dll的简短说明。
对于Qt SDK中的Windows Mingw,有一个二进制文件夹,在该文件夹中有您的应用程序在运行时需要找到的dll(如果您正在进行动态链接)。 我通常将这些DLL放在我在Qt Creator中构建的应用程序EXE相同的文件夹中,然后保持“工作目录”或从中运行EXE的目录也是相同的目录。
对于特定媒体类型的附加插件/库,例如图像格式和phonon,您需要具有应用程序可以在其中找到它的特定结构。
您可以为您的应用程序创建一些非常具体的插件,并使用与此调用相关的函数添加它们。 QStringList QCoreApplication::libraryPaths()
通常,模仿您在MingW“插件”文件夹中找到的目录结构,以获取所需的其他dll。
例如,我想要能够正确显示系统托盘图标。 显然,您需要正确的图像格式引擎插件来显示图标。(qgif4.dll
,qico4.dll
和qjpeg4.dll
)
这是插件在我的开发机器上的位置:
"C:\QtSDK\Desktop\Qt\4.7.3\mingw\plugins\imageformats"
这是我放置它以便在运行时找到的位置:
"C:\path\to\my\EXE\imageformats"
或者
".\imageformats" (relative to my working directory of my EXE)
phonon-backend-vlc
。
port search phonon
只显示gstreamer。 - Jonathan