ПРИМЕЧАНИЕ: Я предполагаю, что вы используете Visual Studio 2008/2010, но ответ должен применяться, если вы также используете XNA Game Studio.
Вы можете использовать библиотеку FMOD для воспроизведения звука, она будет делать именно то, что вам нужно.
Начальная настройка
Вы бы загрузить Windows 32-битный API. Оттуда, после того, как вы его установили, вы должны перейти к « C: \ Program Files (x86) \ FMOD Sound System \ API для программистов FMOD Win32 \ API », скопировать fmodex.dll и fmodexL. dll в каталог вашего проекта вместе с содержимым папки Csharp.
Из вашего проекта добавьте 2 DLL-файла и 4 файла классов в ваш проект, щелкнув его правой кнопкой мыши в обозревателе решений и выбрав " Добавить> Существующий элемент ... "; как только они будут добавлены в ваш проект, выберите эти файлы в обозревателе решений и убедитесь, что их свойство «Копировать в выходной каталог» имеет значение «Копировать всегда». Теперь вы готовы использовать систему FMOD.
Использование FMOD
Внутри вашего основного класса добавьте следующий оператор using using FMOD;
и добавьте следующие переменные:
private FMOD.System sndSystem;<br>
private FMOD.Channel sndChannel = new FMOD.Channel();<br>
private FMOD.Sound sndSound = new FMOD.Sound();
Внутри вашего LoadContent ()
FMOD.Factory.Create_System(ref sndSystem);<br>
sndSystem.Init(1, INITFLAGS.NORMAL, (IntPtr)null);<br>
sndSystem.CreateSound("**<Path To Your Audio>**", MODE.HARDWARE, ref sndSound);
Теперь, где бы вы ни захотели начать играть свой звук, вы просто вставили:
sndSystem.PlaySound(CHANNELINDEX.FREE, sndSound, false, ref sndChannel);
и остановить его:
sndChannel.stop();
Для ваших целей, пока звук воспроизводился вместе с видео, вы определяете, насколько быстро видео идет в этот момент (1,0f для нормальной скорости, 2,0f для двойной скорости, .5f для половинной скорости и т. Д. ) и передайте это значение в sndSound.setMusicSpeed(<speedvalue>);
.