我需要将 wav 文件编码为另一种文件格式(pcm)。此格式具有以下属性:8kHz,16 位。
有人知道如何在 c# 或 vb 中执行此操作吗?
以下是主要功能。
未压缩的 Wave 文件包含纯 PCM 数据和一些元数据 - 您可以在 Wotsit.org 上找到描述。
如果采样率、分辨率和通道数匹配,您可以去掉元数据。
如果它们不匹配,您将不得不重新采样 Wave 文件,但这不是一项简单的任务,如果您希望它正确完成(下采样需要对数据进行低通滤波以避免由于Nyquist-Shannon 采样而产生的混叠定理和两者 - 上采样和下采样 - 需要良好的插值 - 理想情况下是sinc 插值。
我不确定你到底想做什么。WAV 文件(通常)只是未压缩 pcm 数据的包装器。
但是,无论您是想访问数据,还是写出 RAW 无头 PCM 文件,都可以使用libsndfile。我在 ArsTechnica 论坛上找到了一些 c#示例代码。
RE: Daniel Brückner 的回答
libsndfile 的作者还写了libsamplerate,它可以简化重采样。