Воспроизведение звукового файла без импорта winmm.dll или microsoft.visualbasic.dll

Я пишу программу с использованием призмы Delphi. Цель состоит в том, чтобы иметь возможность запускать в Windows и Linux (моно) из одного и того же проекта. Итак, на данный момент мне нужно иметь способ воспроизводить звуковой файл для Windows и Linux (моно) без необходимости импортировать winmm.dll или microsoft.visualbasic.dll.

Поскольку мне это нужно также для работы с моно, я не хочу использовать visualbasic.dll. В прошлом это доставляло мне множество проблем.

Есть ли способы воспроизвести звуковой файл без использования этих файлов DLL?

ОБНОВЛЕНИЕ

Независимо от того, как создается и используется звуковой проигрыватель, он всегда отлично работает в ОС Windows, тогда как в Linux в режиме моно он иногда воспроизводится, а в других случаях просто не воспроизводится вообще.

Первая версия:

  var thesound := new SoundPlayer;

  if Environment.OSVersion.Platform = Environment.OSVersion.Platform.Unix then
    thesound.SoundLocation := '/sounds/Alarms.wav'
  else
    thesound.SoundLocation:='\sounds\Alarms.wav';

  thesound.Load;
  thesound.PlayLooping;

Вторая версия

var sp := new SoundPlayer(new FileStream("/sounds/Alarms.wav", FileMode.Open, FileAccess.Read, FileShare.Read));
sp.PlayLooping;

person ThN    schedule 30.09.2011    source источник
comment
Большая часть информации, которую они имеют в Интернете о воспроизведении звукового файла, относится к файлам microsoft dll.   -  person ThN    schedule 01.10.2011


Ответы (1)


Вы можете использовать System.Media.SoundPlayer. Это реализовано Mono.

person David Heffernan    schedule 30.09.2011
comment
Привет, я реализовал SoundPlayer в своей программе, но еще не тестировал его, потому что в моей программе есть другие ошибки компилятора, над которыми я работаю. Может быть, мне стоит написать образец программы и протестировать ее. Тогда я приму твой ответ. Спасибо еще раз. - person ThN; 04.10.2011
comment
@ Дэвид, Одна вещь, которую я заметил с тех пор, как я начал писать программу для Linux или Mono, - это то, что среда Linux или Mono не похожа на Windows, и поэтому она очень безопасна. Таким образом, все, что вы пишете для них, вы должны убедиться, что вы делаете все шаги и выполняете все, что необходимо для выполнения того, что вам нужно сделать. Причина, по которой звуковые файлы воспроизводились, а иногда и нет, заключалась не в том, что что-то не так с кодом. Когда вы запускаете что-то в Linux, это тоже должно закончиться, иначе оно застрянет в этом режиме и не позволит вам запустить его снова, то есть через последовательный порт. - person ThN; 04.10.2011
comment
@digitalanalog Windows и Linux очень разные, это правда. Mono и .net - нет. Linux по своей сути не более безопасен, чем современная Windows. - person David Heffernan; 04.10.2011
comment
Linux по своей сути не более безопасен, чем современная Windows. Я сильно сомневаюсь в этом, и это уже отдельная тема. Я могу рассказать, как и почему, но в комментариях не хватает места. :) - person ThN; 05.10.2011
comment
Исследователи безопасности находят в Linux столько же уязвимостей, сколько и в Windows. - person David Heffernan; 05.10.2011
comment
@ Дэвид, это зависит от того, кого вы спросите. Вам действительно нужно посмотреть, кто финансирует исследование или исследование. Если Microsoft финансирует это, то исследование или результаты исследования, конечно, будут в пользу Microsoft, а если это сообщество Linux, то оно будет в пользу сообщества Linux. - person ThN; 07.10.2011
comment
У US-CERT неплохая статистика. Прочтите печальную историю об ошибке Debian SSH, и тогда вы не будете так очарованы Linux. - person David Heffernan; 07.10.2011