我想将波形文件(.wav)分成1秒的帧或固定的时间段。我怎么能用C#或Java做到这一点。 任何人都可以通过一些代码示例或相关链接帮助我解决这个问题。
答案 0 :(得分:0)
(这个评论太长了)
.wav 文件相对容易使用(其他人可能会指出API可以轻松地使用它们,但你也可以自己做...我想JMF可以用于什么你想做的,因为它是真正基本的“信号处理”)。
基本上你有几个标题确定文件,然后是原始数据:如果你有7秒的16位/ 44 kHz立体声,你将有16 * 44000 * 7/8字节原始数据或616 000字节的原始数据(601 KB)。
如果你想在7秒钟内将这7秒钟分开,你基本上将这616 000个字节拼接成7个88 000字节,每个字节对应一个44 kHz 16位立体声数据。< / p>
如果您想将这些存储在.wav文件中,则必须重新创建标题。
这就是理论,你可以自己完成这一切(我肯定在十年前用Java做过):它不是很复杂,你会学到很多东西。 .wav基本上是最容易使用的格式之一。
当然你可以使用一些API,但理解基础知识很重要:你每秒有x个样本(例如当你有一个44 kHz样本时有44 000个),每个样本通常用8或16位编码然后你通常有单声道或立体声(所以一个或两个声道)。
除此之外,.wav既无损又无压缩,这就是为什么它很容易使用(而不是说,FLAC,它是无损但压缩的)。