将两个立体声通道组合成单声道?

Posted

技术标签:

【中文标题】将两个立体声通道组合成单声道?【英文标题】:Combine both stereo channels into mono? 【发布时间】:2011-08-09 14:06:34 【问题描述】:

我梳理了AudioManager,找不到任何 API 或设置来从立体声切换到单声道(两个通道的信号是两个立体声通道的总和)。

android 中是否有可能实现这一点?

【问题讨论】:

您找到解决方案了吗? 【参考方案1】:

AudioManager 类中有一个名为setParameters 的方法可能 会这样做。不幸的是,API 并不清楚它的作用:

public void setParameters (String keyValuePairs)

为音频硬件设置可变数量的参数值。

参数

keyValuePairs 参数键值对列表,格式为:key1=value1;key2=value2;...

如果我们在 AudioManager.java 中查看该方法的源代码:

/**
 * Sets a variable number of parameter values to audio hardware.
 *
 * @param keyValuePairs list of parameters key value pairs in the form:
 *    key1=value1;key2=value2;...
 *
 */
public void setParameters(String keyValuePairs) 
    Audiosystem.setParameters(keyValuePairs);

然后查看 AudioSystem.java:

/*
 * Sets a group generic audio configuration parameters. The use of these parameters
 * are platform dependant, see libaudio
 *
 * param keyValuePairs  list of parameters key value pairs in the form:
 *    key1=value1;key2=value2;...
 */
public static native int setParameters(String keyValuePairs);

那里没有太多信息。看起来参数可能是特定于硬件的,我什至不确定这些参数是否能满足您的需求。

您是要在整个系统范围内设置此设置还是仅在一个应用中设置?我假设是系统范围的,但如果不是这样,我想它会更容易。

【讨论】:

+1 已用于您的研究。在接受之前,我必须对此进行测试。回答您的问题,是的,系统范围内的。【参考方案2】:

过去三年来,Android 一直存在一个未解决的问题,但 Google 尚未对此作出回应:

https://code.google.com/p/android/issues/detail?id=17337

如果您的设备已植根并安装了 BusyBox,则可以使用 Google Play 商店中的 Boeffla Sound Control 应用程序。

【讨论】:

以上是关于将两个立体声通道组合成单声道?的主要内容,如果未能解决你的问题,请参考以下文章

音响单声道及立体声系统知识

我是不是需要将立体声音频转换为单声道以进行 FFT?

如何在 iOS 中将 2 个单声道文件转换为一个立体声文件?

Python将立体声.flac转换为单声道

如何使用 QAudioInput 从两个通道捕获音频信号

如何在 java/xuggler 中混音多个音频通道?