2010-05-07 53 views
1

我想将波形文件(.wav)分成1秒的帧或固定的时间段。我如何使用C#或Java来做到这一点。 任何人都可以帮我解决这个问题一些代码示例或一些相关的链接。如何将音频文件分割成帧?在C#

+0

向我们展示您到目前为止的代码... – RedFilter 2010-05-07 13:41:36

回答

0

(这太长评论)

.WAV文件是比较容易与(他人合作可以指出API允许轻松地与他们的工作,但你可以自己做太...我假设JMF可以用于你想要做的事情,因为它真的是基本的“信号处理”)。基本上你有几个头文件来确定文件,那么它就是原始数据:如果你有7秒的16位/ 44千赫立体声,那么你将有16 * 44000 * 7/8原始数据字节或616 000字节的原始数据(601 KB)。

如果你想在7秒的一秒内分割这7秒,你基本上会将这616 000个字节拼接成7个88 000字节,每个对应一秒44 kHz 16位立体声数据。

如果要将这些文件保存回.wav文件中,则必须重新创建标题。这是理论,你可以自己做所有事情(十年前我确定用Java做它):它不是很复杂,你会学到很多东西。 .wav基本上是最简单的格式之一。

当然,您可以使用一些API,但了解基础知识很重要:每秒有x个采​​样点(例如,当您有44 kHz采样时为44 000个采样点),每个采样点通常编码为8或16位,然后你通常有单声道或立体声(所以一个或两个通道)。

除此之外,.wav既是无损的,也是未压缩的,这就是为什么它很容易处理(与FLAC相反,它是无损压缩的)。

+0

请注意使用mpeg-3编码的.WAV文件。 – 2010-05-07 14:43:58

+1

WAV文件*可能包含未压缩的PCM编码数据,但WAV可以用作其他几种压缩格式(不仅仅是MP3)的容器。 – jarnbjo 2010-05-07 15:37:11