在C中的WAV文件自动重复#
问题描述:
我有一个10秒的音效波形文件。我想要做的是取出该文件并重复n次,然后将较长的WAV文件保存到磁盘。通过这种方式,我可以创建更长的背景效果,而不是在媒体播放器上自动重复播放,这在重复播放之间有点困扰。我正在尝试在C#中执行此操作。在C中的WAV文件自动重复#
答
考虑到WAV file format这是相当容易做到的 - 假设它是未压缩的音频(大多数WAV文件是 - 或者至少是他们最后一次与我们有任何关系)。
很可能有音频API可以用来做到这一点而不会陷入二进制格式,但我怀疑他们会花时间学习,只是自己做,因为你没有做任何特别复杂的事情。
答
如果您使用的是.Net 2.0或更高版本,那么您可以使用System.Media.SoundPlayer类,特别是其PlayLooping方法来实现您想要的没有任何口吃。这比创建一个新的wav文件更好 - 它意味着文件的磁盘空间更少,呈现声音所需的内存也更少。一般来说,如果声音会循环播放或长于几秒钟,则应始终使用此类缓冲技术进行音频播放。
答
您可以在C#中使用NAudio .NET音频库轻松完成此操作。您需要使用WaveFileReader
和WaveFileWriter
类。您也可以使用它来创建自定义WaveStream
,可以根据需要多次循环播放音频,而无需创建长WAV文件。