使用 NAudio 将 PCM S16 LE (s16l) 转换为 GSM610

Posted

技术标签:

【中文标题】使用 NAudio 将 PCM S16 LE (s16l) 转换为 GSM610【英文标题】:PCM S16 LE (s16l) to GSM610 Conversion using NAudio 【发布时间】:2019-07-10 12:33:36 【问题描述】:

我正在尝试使用 NAudio 将音频从 PCM 转换为 GSM。在那,我收到了这个错误:

AcmNotPossible 调用 acmStreamOpen

谁能帮我解决这个问题。

获取音频详细信息。编解码器:PCM S16 LE (s16l)通道:单声道采样率 :22050 Hz每个样本的位数:16操作系统:Windows 10

string inFile = @"E:\temp\in.wav";
string outFile = @"E:\temp\out.wav";

var reader = new WaveFileReader(inFile);
var writer = new WaveFormatConversionStream(new Gsm610WaveFormat(), reader);
WaveFileWriter.CreateWaveFile(outFile, writer);

【问题讨论】:

【参考方案1】:

WaveFormatConversionStream 使用系统上安装的 ACM 驱动程序。 AcmNotPossible 错误意味着不存在可以进行该转换的驱动程序。因此,最可能的解释是您的 Windows 版本没有 GSM 编解码器(或至少没有支持该特定转换的编解码器)。 NAudio 演示项目(一个 WinForms 应用程序)有一个页面,该页面将枚举已安装的编解码器并显示支持的转换。

【讨论】:

谢谢!马克,明白你的意思,我会尝试在 Windows 10 中安装 GSM 编解码器并检查。

以上是关于使用 NAudio 将 PCM S16 LE (s16l) 转换为 GSM610的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio 将 WAV 文件转换为 2 个单独的 PCM 文件

如何使用 naudio 将立体声 pcm 样本转换为单声道样本

从 python 读取 wav 文件并将帧转换为 RAW s16le 字符串

使用 NAudio 在 C# 中播放 ohLibSpotify pcm 数据流

如何使用 PCM 8kHZ 和每个样本 16 位的 Naudio loopbackcapture 独占模式

使用 NAudio 标准化 32 位 PCM Wav 中的音量