我需要将wav文件编码为另一种文件格式(pcm)。此格式必须具有以下属性:8kHz,16位。
有人知道如何在c#或vb中执行此操作吗?
3 个答案:
答案 0 :(得分:4)
以下是主要功能。
- 记录器允许:
- 录制未压缩的音频数据(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,它可以简化重采样。