【发布时间】:2016-06-16 15:10:38
【问题描述】:
我想要一个能够直接针对 5.1 系统的扬声器的程序。也就是说,我想编写一个播放器,在我想要的确切扬声器上播放音频文件,并在整个文件中逐渐更改相应的扬声器。 这就是我想做的,但是我不知道该怎么做。是否可以使用任何高级编程语言,或者我是否需要直接与声卡/声音驱动程序交互[因为如果是这样,我需要立即放弃它]...这可能吗,有人知道吗?什么图书馆无论如何都会帮助我?
【问题讨论】:
我想要一个能够直接针对 5.1 系统的扬声器的程序。也就是说,我想编写一个播放器,在我想要的确切扬声器上播放音频文件,并在整个文件中逐渐更改相应的扬声器。 这就是我想做的,但是我不知道该怎么做。是否可以使用任何高级编程语言,或者我是否需要直接与声卡/声音驱动程序交互[因为如果是这样,我需要立即放弃它]...这可能吗,有人知道吗?什么图书馆无论如何都会帮助我?
【问题讨论】:
这绝对是可能的。如果您回答几个问题,可能会得到更具体的答案。
1) 您使用的是什么操作系统? 2)您的扬声器如何连接到计算机?通过 1 个 RCA 或 TOSLINK 连接器进行数字连接,还是通过 3 个耳机连接器使用模拟连接?
如果您使用 3x 模拟连接,则只需使用 OpenAL Soft。
如果您使用数字连接,则需要将音频编码为环绕声压缩格式,例如 AC-3 或 DTS。在这两个 AC-3 中,可能更容易找到合适的编码器库。您可能只使用 ffmpeg (libavcodec),但请仔细检查许可是否与您的项目兼容。
理想情况下,如果您使用数字连接,则应将 AC-3 支持添加到 OpenAL Soft,以便可以以任何一种方式使用通用 API 并使他人受益。
此外,根据您的操作系统,可能会有更简单的操作系统特定方法。例如,如果您在 linux 上使用数字连接,您可以配置 ALSA 插件为您进行 AC-3 编码,然后使用您选择的更高级别的多通道 API,例如 Jack 或 PortAudio。
编辑:HDMI 有点超出我的经验范围。如果您将 HDMI 视为 S/PDIF 或 TOSLINK,它应该可以正常工作,但 CPU 负载较高并且可能存在压缩伪影。但是,Google 搜索表明,在 Windows 下,正确配置 HDMI 音频驱动程序(这似乎给某些用户带来了麻烦),您应该能够将 HDMI 音频视为 6 通道音频输出。
【讨论】: