#c# #wpf #audio #playback #winmm
#c# #wpf #Аудио #воспроизведение #winmm
Вопрос:
Я работаю над системой воспроизведения файлов wave, но у меня возникают проблемы с получением правильного вывода при воспроизведении с помощью winmm.dll
Проблемы, с которыми я сталкиваюсь, заключаются в следующем:
- Воспроизведение резко останавливается.
- Воспроизведение ускоряется или прерывается, или и то, и другое.
- Воспроизведение вообще отсутствует.
- Метод ‘Stop’ приводит к зависанию системы при
Thread.Join
вызове.
Я понимаю, что существуют альтернативы воспроизведению звуковых файлов в C #, WPF, но я пытаюсь достичь этого с помощью winmm.dll
файлов .wav
, потому что это позволит мне * (я надеюсь) создавать специфические функции, такие как: визуализация файлов Wave и фильтры звуковых эффектов.
Я просмотрел ссылку на этот проект кода:
Программирование звуковых эффектов на C#
Это очень проницательно, но я не могу достичь аналогичных результатов в WPF. Я не уверен, связаны ли проблемы со сборкой мусора, которая работает по-разному от Windows Forms до WPF.
Вот мой проект на GitHub:
Wave Player — Base — WPF и Windows Forms
Решение имеет 2 проекта: один — Windows Forms, а другой — WPF. Проект Windows Forms работает нормально, WPF — нет. Однако оба проекта используют одну и ту же winmm.dll
логику кода.
Я также нашел эту ссылку Microsoft на ‘Waveform Audio’ :
Microsoft — О форме сигнала аудио
Любая помощь или совет будут оценены.
Комментарии:
1. Я не думаю, что GC отличается, когда выполняется код Winforms или WPF. GC — это просто часть .NET. Однако может быть что-то еще, что имеет некоторый эффект.
2. Я думаю, вам следует создать как можно меньше примеров того, что происходит в WinForms amp; WPF, и опубликовать этот код непосредственно в вашем вопросе. В любом случае, это хорошее упражнение, чтобы попытаться сузить проблему.
3. @UuDdLrLrSs Я сократил его до минимума, насколько мог, но код по-прежнему составляет около 600 строк кода на проект. Итак, Windows Forms — это ~ 600 строк кода, а WPF — это очень похожие ~ 600 строк кода. Можно ли размещать столько кода в самом вопросе?
4. Это может быть много для людей, чтобы прочитать… Я бы подумал, что вы могли бы создать очень надуманный минимальный пример, в котором есть только самые важные части в меньшем количестве?