0

我可以使用 ALSA 库将音频从一种格式转码为另一种格式吗?

即 S32 2 通道到 S16 1 通道音频从文件作为输入源到文件输出

在我看到的一个链接中, 插件:文件 此插件将 PCM 流的内容存储到文件或将流传输到命令,并可选择使用现有文件作为输入数据源(即“虚拟麦克风”)

如何设置这样的管道文件输入和文件输出,当它从文件输入时,它从哪里选择格式和通道等信息,因为 API“snd_pcm_file_open”不要求格式相关信息?我希望这来自配置文件 .asoundrc 但是,我没有看到任何关于如何做到这一点的文档?

4

1 回答 1

0

由于配置文件 (asoundrc) 作为将输入文件和格式设置为 raw 或 wav 的唯一选项,因此无法完成,如下所示

pcm.file {
        format raw
        infile "/home/root/raw.pcm"
}

由于您无法指定无法转码的输入格式,因此它以您从该文件请求的格式读取。即,如果您通过记录请求 S32,即使文件包含 S16,它也会读取 S32。

但是,替代方法是使用“sox”之类的工具进行转码。

如果只是检查 ALSA 在真实麦克风存在时如何进行转码,则转储“ snd_pcm_dump ”(arecord -v)将给出它使用的转换函数(方程)

于 2018-11-27T16:47:23.260 回答