我一直在尝试通过 adb shell 在 Android 设备上运行的本机 linux 程序中捕获音频。
由于我似乎只得到(非常安静的)噪音,即没有实际信号(有趣的是,执行类似操作的 Android/Java 程序确实显示该输入上有信号),我执行了 alsa_amixer,它有一个看起来像正确的那一个:
Simple mixer control 'Capture',0
Capabilities: cvolume cswitch penum
Capture channels: Front Left - Front Right
Limits: Capture 0 - 63
Front Left: Capture 31 [49%] [0.00dB] [off]
Front Right: Capture 31 [49%] [0.00dB] [off]
“离开”。这可以解释噪音。所以我寻找了如何使用 alsa_amixer 取消静音通道的示例,我发现了不同的参数建议,如“49% on”或“49% unmute”,或者只是“unmute”,这些都不起作用。(如果省略音量百分比,则显示“无效命令!”,否则,设置音量,但忽略开启/取消静音)
我还搜索了如何以编程方式执行此操作(我最终需要这样做,尽管手动方法现在会有所帮助),但在那里并不太幸运。我发现的唯一一个听起来可以做类似事情的 ALSA lib 命令是“snd_mixer_selem_set_capture_switch_all”,但文档并没有说明参数的作用(1/0 不是开/关,我试过了;))