У меня есть 10-секундный волновой файл звукового эффекта. Что я хотел бы сделать, так это взять этот файл и повторить его n раз, а затем сохранить более длинный файл WAV на диск. Таким образом, я могу создать гораздо более длинный фоновый эффект, а не автоповтор в медиаплеере, который немного заикается между повторами. Я пытаюсь сделать это на С#.
Автоматический повтор файла WAV в С#
Ответы (4)
Если вам нужно сделать это только с небольшим количеством файлов, вы можете сделать это вручную с помощью Audacity.
Это довольно легко сделать, учитывая формат файла WAV — при условии, что он несжатый аудио (большинство файлов WAV - или, по крайней мере, они были в последний раз, когда я имел с ними какое-либо дело).
Вполне могут быть звуковые API, которые вы можете использовать для этого, не зацикливаясь на двоичном формате, но я подозреваю, что их изучение займет столько же времени, сколько просто делать это самостоятельно, поскольку вы не делаете ничего особенно сложного.
Если вы используете .Net 2.0 или выше, вы можете использовать System.Media.SoundPlayer и, в частности, его PlayLooping для достижения желаемого без заиканий. Это предпочтительнее создания нового wav-файла — это означает меньше места на диске для файла и меньше памяти, необходимой для рендеринга звука. В общем, вы всегда должны использовать методы буферизации, подобные этой, для воспроизведения звука, если звук будет зациклен или будет длиннее нескольких секунд.
Вы можете легко сделать это на C#, используя аудиобиблиотеку NAudio .NET. Вам нужно будет использовать классы WaveFileReader
и WaveFileWriter
. Вы также можете использовать его для создания собственного WaveStream
, который будет зацикливать звук столько раз, сколько вы хотите, без необходимости создавать длинный файл WAV.