将wav文件编码为pcm

时间:2009-05-11 09:27:42

标签: c# file encoding wav

我需要将wav文件编码为另一种文件格式(pcm)。此格式必须具有以下属性:8kHz,16位。

有人知道如何在c#或vb中执行此操作吗?

3 个答案:

答案 0 :(得分:4)

Alvas audio library.

以下是主要功能。

  • 记录器允许:
    • 录制未压缩的音频数据(PCM)
    • 记录压缩音频数据:IMA ADPCM,Microsoft ADPCM,CCITT A-Law,CCITT u-Law,GSM 6.10,MPEG Layer-3(mp3)等;
    • 将数据记录到流中(文件流,内存流);
    • 暂停并恢复录制;
    • 获取当前的声音位置;
    • 将数据记录到系统中安装的任何录音机(多个声卡)
  • 玩家允许:
    • 播放未压缩的音频数据(PCM);
    • 播放压缩音频数据:IMA ADPCM,Microsoft ADPCM,CCITT A-Law,CCITT u-Law,GSM 6.10,MPEG Layer-3(mp3)等;
    • 播放来自流的数据(文件流,内存流);
    • 播放混合音频数据;
    • 暂停并继续比赛;
    • 获取当前的声音位置;
    • 播放系统中安装的任何播放器的数据(多个声卡)
  • 设置调音台控件:
    • 选择录制源行;
    • 更改录制的源行音量;
    • 额外的控件调整。例如,“Mic Boost”;
    • 更改主音量以进行播放;
    • 播放静音
  • 编辑
    • 改变音频数据的速度;
    • 更改音频数据量;
    • 将多个音频连接在一起;
    • 剪掉一段音频流;
    • 在音频流中插入一段;
    • 删除一段音频流;
    • 从字节数组创建音频格式;
    • 将音频数据插入并混合到指定偏移量的主音频数据中多次;
    • 反向音频波流;
    • 将立体声音频流分割为两个单声道流;
    • 将两个单声道音频流合并为一个立体声。
    • 多个音频文件串联。

  • 转换
    • 将音频数据从一种音频格式转换为另一种音频格式。
    • 将音频流转换为mp3流。
    • 将Dialogic .vox(adpcm)流转换为Mp3流。
    • 将Wave stream更改为MP3流。如果Wave流包含MPEG Layer 3数据。
    • 播放,录制和转换RAW无头格式(SLINEAR等)(用于Asterisk PBX)。
    • 从Avi流播放和提取音频数据。
    • 对Dialogic .vox(adpcm)格式数据进行编码和解码(在Asterisk PBX中使用)。
    • 将音频流转换为mp3流
    • 将Dialogic .vox(adpcm)流转换为Mp3流

  • 其它
    • 查看输入声音信号的电平。
    • 使用强名称签名库。音频库可以添加到GAC

答案 1 :(得分:2)

未压缩的Wave文件包含纯PCM数据和一些元数据 - 您可以在Wotsit.org上找到描述here

如果采样率,分辨率和通道数匹配,您只需剥离元数据即可。

如果它们不匹配,则必须对Wave文件进行重新采样,但如果您希望它正确完成,这不是一项简单的任务(下采样需要对数据进行低通滤波,以避免由于{而导致的混叠{3}}和 - 上采样和下采样 - 需要良好的插值 - 理想情况下Nyquist–Shannon sampling theorem

答案 2 :(得分:-1)

我不确定你想要做什么。 WAV文件(通常)只是未压缩的pcm数据的包装器。

但是,无论您是要访问数据还是写出RAW无标题PCM文件,都可以使用libsndfile。我在ArsTechnica论坛上找到了一些c#sample code

RE:DanielBrückner的答案
libsndfile的作者也写了libsamplerate,它可以简化重采样。

相关问题