Автоматический повтор файла WAV в С#

У меня есть 10-секундный волновой файл звукового эффекта. Что я хотел бы сделать, так это взять этот файл и повторить его n раз, а затем сохранить более длинный файл WAV на диск. Таким образом, я могу создать гораздо более длинный фоновый эффект, а не автоповтор в медиаплеере, который немного заикается между повторами. Я пытаюсь сделать это на С#.


person Craig    schedule 16.10.2008    source источник


Ответы (4)


Если вам нужно сделать это только с небольшим количеством файлов, вы можете сделать это вручную с помощью Audacity.

person Mark Bessey    schedule 16.10.2008

Это довольно легко сделать, учитывая формат файла WAV — при условии, что он несжатый аудио (большинство файлов WAV - или, по крайней мере, они были в последний раз, когда я имел с ними какое-либо дело).

Вполне могут быть звуковые API, которые вы можете использовать для этого, не зацикливаясь на двоичном формате, но я подозреваю, что их изучение займет столько же времени, сколько просто делать это самостоятельно, поскольку вы не делаете ничего особенно сложного.

person Jon Skeet    schedule 16.10.2008

Если вы используете .Net 2.0 или выше, вы можете использовать System.Media.SoundPlayer и, в частности, его PlayLooping для достижения желаемого без заиканий. Это предпочтительнее создания нового wav-файла — это означает меньше места на диске для файла и меньше памяти, необходимой для рендеринга звука. В общем, вы всегда должны использовать методы буферизации, подобные этой, для воспроизведения звука, если звук будет зациклен или будет длиннее нескольких секунд.

person Stu Mackellar    schedule 17.10.2008

Вы можете легко сделать это на C#, используя аудиобиблиотеку NAudio .NET. Вам нужно будет использовать классы WaveFileReader и WaveFileWriter. Вы также можете использовать его для создания собственного WaveStream, который будет зацикливать звук столько раз, сколько вы хотите, без необходимости создавать длинный файл WAV.

person Mark Heath    schedule 19.10.2008