Как воспроизводить файлы с помощью winmm.dll в C#?

233
20 августа 2017, 03:04

Всем привет. Пытаюсь воспроизвести файл .mp3 по прямой ссылке из интернета. Вот метод, который использую:

public void Play(bool url = false)
{
    string command = String.Format(@"open ""{0}"" type mpegvideo alias MediaFile",
        (!url ? (directory + "\\" + filename) : (this.url)));
    mciSendString(command, null, 0, IntPtr.Zero);
    command = "play MediaFile";
    mciSendString(command, null, 0, IntPtr.Zero);
}

Дело в том, что воспроизводятся не все файлы. Например трек по ссылке: https://cs9-2v4.userapi.com/p8/890573dd1e9341.mp3 работает нормально.

А по ссылке: https://cs9-6v4.userapi.com/p8/728cc80e9ff446.mp3 не воспроизводится.

Программа просто продолжает работу, но звука нет. Почему такая избирательность? Как воспроизводить файлы по всем ссылкам? P.S. пробовал воспроизводить эти файлы с компьютера (url == false), опять же файл скачанный с первой ссылки имеет звук, а с второй звука нет. Значит дело в самом файле. Хотя в Aimp этот файл отлично запускается.

Answer 1

В итоге посоветовали вот такую либу: https://msdn.microsoft.com/ru-ru/library/system.windows.media.mediaplayer(v=vs.110).aspx В ней все воспроизводится как надо.

Пример простого кода:

private WindowsMediaPlayer WMP;
public void Play(string filename)
{
    WMP = new WindowsMediaPlayer();
    WMP.URL = filename;//Указываем путь
    WMP.controls.play();//Запускаем
    WMP.settings.volume = 100;//Можем изменить громкость
}
public void Stop()
{
    WMP.controls.stop();//Останавливаем воспроизведение
    WMP.close();
}
READ ALSO
Как удалить первую найденную цифру в строке с помощью JavaScript?

Как удалить первую найденную цифру в строке с помощью JavaScript?

Есть строка var text = " Привет мир9! Сегодня 17 августа";

313
Angular 4 gitlab ci

Angular 4 gitlab ci

Cannot read property 'length' of undefined

389
Не работает плагин uploadify

Не работает плагин uploadify

Дорогие знатоки, не встречалась ли кому такая проблема, плагин ajax загрузки uploadify не работает на мобильных устройствах, и ведёт себя не корректно,...

307