gpt4 book ai didi

c++ - Qt、声子和多媒体编解码器 : how to bundle them?

转载 作者:太空狗 更新时间:2023-10-29 23:08:10 29 4
gpt4 key购买 nike

我正在开发一个基于 Qt 的多平台(Windows、Linux 和 Mac)Phonon C++ 应用程序,我知道 Phonon 本身只是 API,它依赖后端与已安装的编解码器进行交互。

从逻辑上讲,我应该假设最终用户没有安装额外的编解码器,只有操作系统提供的编解码器。

所以我的问题是,是否可以将 OGG(最好)或 AAC 解码器与我的应用程序捆绑在一起,以便后端能够识别它并能够播放音频文件?我通常应该采取哪些步骤以及在哪里寻找更多相关信息?

应用程序本身不可安装,它直接从物理媒体运行。

最佳答案

C++ 声音库

就获取播放声音的正确库而言,只需找出 Phonon 在您的系统上使用了哪些库即可。我知道 Phonon 是一个相当大的项目,每个操作系统都有一套不同的驱动程序来播放媒体和使用编解码器等。我建议查看 AudacityVLC并检查 Google .

插件/库和 Qt

就让 Phonon 与 Qt 一起工作而言,我有这方面的经验......

我没有在每个主要操作系统上使用 Phonon 进行大量测试,但我在几个不同版本的 Windows 上进行了测试。

Qt 应用程序的部署非常简单,即使使用像 Phonon 这样的插件和库也是如此。但是第一次弄明白有点痛苦,只是因为行话有点奇怪。

我的答案是在具有到 Qt 库的动态链接的 Windows 桌面应用程序的上下文中,而不是静态的。

这是 Windows 的目录结构以及如何找到 dll 的简短说明。

Deploying a Qt Application

Dynamic-Link Library Search Order in Windows

对于 Windows 上的 Mingw,在 Qt SDK 中有一个用于其二进制文件的文件夹,在该文件夹中有您的应用程序需要能够在运行时找到的 dll(如果您正在执行动态链接)。我通常将这些 DLL 放在与我在 Qt Creator 中构建的应用程序 EXE 相同的文件夹中,然后将“工作目录”或运行 EXE 的目录也保留在同一目录中。

对于特定媒体类型(如图像格式和声子)的附加插件/库,您需要有一个特定的结构,您的应用程序可以在其中找到它。

您可以为您的应用程序制作一些非常具体的,并使用与此调用相关的函数添加它们。 QStringList QCoreApplication::libraryPaths()

通常模仿您在 MingW“插件”文件夹中找到的目录结构,用于您需要的其他 dll。

例如,我希望能够正确显示系统托盘图标。显然你需要正确的图像格式引擎插件来显示图标。 (qgif4.dllqico4.dllqjpeg4.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)

发现这些信息时最烦人的事情之一是,插件不会像主要的 Qt 库那样以同样的方式失败,所以在你到达你的部分之前你不会看到它坏了实际尝试使用它们的程序。

关于c++ - Qt、声子和多媒体编解码器 : how to bundle them?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10428202/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com