Как воспроизвести несколько файлов WAV одновременно без задержки - PullRequest
1 голос
/ 28 марта 2011

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

SoundPlayer не позволяет этого.Я пробовал WindowsMediaPlayer объект, но при воспроизведении его следующим образом:

WindowsMediaPlayer wmp = new WindowsMediaPlayer();
wmp.URL = sounds_folder;

Он начинается с задержкой.

Кто-нибудь знает способ сделать это?Или, может быть, способ загрузки буферов с медиаплеером при инициализации, чтобы воспроизведение было быстрее?

Ответы [ 2 ]

0 голосов
/ 22 января 2018

Попробуйте wmp.controls.play();.

Это избавит от лага, но, к сожалению, с помощью WindowsMediaPlayer вы не сможете воспроизводить звуки чаще, чем каждые 200 мс, без пропуска некоторых из них.

0 голосов
/ 28 марта 2011

Я бы сказал, что вы используете неправильный API.Медиаплеер предназначен для воспроизведения медиафайлов (потребительских носителей), а не коротких прямых сэмплов / клипов

Google показал мне

http://msdn.microsoft.com/en-us/library/ms229685.aspx http://www.eggheadcafe.com/articles/20030302.asp

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

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

ThreadPool.QueueUserWorkItem Delegate.BeginInvoke (...)

или создайте вручную новый поток () ... и Start () это.Остерегайтесь подводных ловушек (не выполняйте никакой работы и, конечно, не делитесь данными без блокировки между потоками), но для простого фонового звука «запускай и забывай» все будет просто (при условии, что вы сохраните буферы со звукомданные вокруг достаточно длинные - т.е. делают их статичными)

...