LINUX.ORG.RU

[mono] Воспроизведение музыки

 


0

1

Под виндой начинал писать один проект на C#. Одной из основных его задач является, как ни странно это звучит, проигрывание файлов mp3. Поскольку я так и не нагуглил как проиграть музыку этим ихним .NET, был заюзан рецепт с использованием Windows Media Player'а, а точнее его библиотеки wmp.dll. Все это использование сводилось к тому, что в настройках проекта ставилась одна галочка «Юзать такую-то либу» и все, музыка проигрывалась одной простой строчкой кода.

В линуксе, понятное дело, либы этой нет. Сейчас решил дописать проект, и, что логично, выбрал под это дело mono. Открыл в MonoDevelop решение, попытался собрать - оно ругается на эту либу, что вполне логично.

Посему возник вопрос к спецам по mono - как кошерно проигрывать музыкальные файлы на mono? Возможно ли сделать так, чтоб этот мой код потом без особых плясок с бубном взлетел в винде и дотнете?

★★★★★

> Возможно ли сделать так, чтоб этот мой код потом без особых плясок с бубном взлетел в винде и дотнете?

Именно так, грозные ситхи с лайтсаберами, на поверку оказываются астматиками с кетайскими фонариками.

В принципе gstreamer уже посоветовали, но имхо это мегаблотварьная затея. Лучше 2билд-конфигурации, а чтоб с линухом сильно не морочится - в кутях кажется есть и дотнетовские биндинги и абстракция для аудио.

iBliss
()

практика показала, что самый простой, удобный и надежный способ проиграть mp3-файл в linux — аналог system(«mpg123 file.mp3») в вашем любимом языке программирования.

у него и библиотечка есть (libmpg123), но мне она ни разу не понадобилась, т.к. плеером можно управлять с stdin (mpg123 -R).

под винду он, кажется, тоже есть.

ей-богу, если нужно именно проиграть mp3 (в т.ч. по http, в т.ч. shoutcast/icecast поток), дальше mpg123 ходить не надо.

anonymous
()
Ответ на: комментарий от anonymous

Хм, спасибо. Что-то я сам не подумал о таком варианте.

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от tensai_cirno

> P/Invoke запрещает религия

вы меня заинтриговали! продолжайте. напишите вызов p/invoke целиком, пожалуйста. или хотя бы назовите библиотеку и функцию в ней, которую вы предлагаете вызывать с помощью p/invoke.

порция свежего карри в тарелке

не люблю острое.

anonymous
()

Можно написать отдельую маленькую нативную библиотеку, которая будет заранее собрана под все нужные платформы, а из моно определять текущую платформу, грузить нужную библиотеку и использовать.

note173 ★★★★★
()
Ответ на: комментарий от tensai_cirno

> Читайте

прочел. давно. вчера даже перечитал, прежде чем писать.

я повторю свою просьбу. приведите мне вызов p/invoke с фунциональностью, аналогичной предложенному мной способу воспроизведения.

а заодно потрудитесь объяснить, чем вам способ концептуально лучше, надежнее, гибче и правильнее.

(например, очень легко сделать путь к программе проигрывания опцией времени исполнения, а учитывая универсальность интерфейса — «$progname $file» — пользователь может использовать любой удобный ему способ воспроизведения — в худшем случае написав однострочник на шелле, который наше приложение и будет запускать).

покажите, как того же и такими же (нулевыми) усилиями добиться при помощи предложенного вами подхода.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.