Статьи

Воспроизведение MP3 с Java

В свободное время я создаю шикарный веб-интерфейс для JJukebox , многопользовательского MP3-сервера с открытым исходным кодом. Мы очень серьезно относимся к нашей музыке здесь, в SitePoint HQ, и пришло время обновлять наше ржавое, старое, основанное на Perl программное обеспечение MP3-музыкальных автоматов .

Если в реализации сервера JJukebox есть одно слабое место, это воспроизведение аудио, а именно обработка файлов MP3. Несмотря на всю свою передовую жизнеспособность, поддержка Java мультимедиа действительно находится в печальном состоянии.

Продолжая книгу, Java Media Framework API (JMF) – это универсальный магазин для захвата и воспроизведения всех видов потокового мультимедиа. Хотя поддержка MP3 была удалена после JMF 2.1.1a из-за тех же проблем с патентами , которые влияют на другое программное обеспечение MP3 с открытым исходным кодом, версия JMF 2.1.1c для Windows восстановила воспроизведение MP3 с помощью поддержки MP3 в Windows, а с ноября JMF 2.1. 1e теперь имеет плагин MP3 для всех поддерживаемых платформ (Windows, Linux, Solaris и кроссплатформенная версия).

К сожалению, JMF, как сообщается, несовместим (или, по крайней мере, содержит ошибки ) с Java 5, и единственным признаком жизненного пути для API является комментарий, оставленный 12 апреля руководителем команды Swing группы Java Client Group, о том, что они вступили во владение. ответственность за JMF и будет что объявить в ближайшее время . Лично я даже не смог запустить установщик JMF 2.1.1e в моей системе Windows.

Некоторые недавние мудрые слова о том, что следует делать с JMF, можно найти в JMF, для чего ты? в блоге Мэйсона Глэйвса, и Java Media без посредственности в блоге Криса Адамсона. Краткое содержание: остановите фиктивный «Weekend at Bernie’s», позвольте JMF умереть и освободите место для более квалифицированных вариантов.

В любом случае, по указанным выше причинам JJukebox отказался от JMF для воспроизведения MP3 довольно давно (комментарий CVS после удаления класса JMFPlayer: «JMF мертв. Да здравствует JMF».) И вместо этого принял JavaLayer JavaZoom . Если вам нужно воспроизвести MP3 с помощью Java, JavaLayer – лучшая вещь на данный момент. Для большинства практических приложений вы на самом деле захотите использовать JavaPoom BasicPlayer API , который взаимодействует со встроенным Java Sound API , который может использовать JavaSPoom MP3SPI (оболочку для JavaLayer) для воспроизведения MP3 и JavaZoom VorbisSPI (оболочку для JOrbis ). для воспроизведения Ogg Vorbis (альтернатива MP3).

Смущены еще? Я тоже, но с последними версиями всех необходимых библиотек, это на самом деле работает довольно хорошо. Это не значит, что еще нет места для улучшений. По словам одного автора JJukebox :

Я являюсь частью проекта JJukeBox ( www.jjukebox.com ). Мы стремимся найти приличный ogg / mp3 плеер, который не основан на JMF или JavaLayer (JlGui). И то, и другое полностью мусор, и любые исправления, которые мы отправляем в JavaZoom (JavaLayer / JlGui), игнорируются, и нам пришлось сильно переписывать части JlGui, чтобы сделать его удаленно используемым. Я был очень удивлен тем, насколько плохими были части проекта, например, с точки зрения (несуществующей) системы событий.

Если вы знаете о проекте, который будет надежно выполнять ogg / mp3s (сломанные и измотанные mp3 / oggs, с надлежащей системой событий и возможностью многопоточности), пожалуйста, сообщите нам об этом!