nixp.ru v3.0

24 ноября 2024,
воскресенье,
16:51:49 MSK

20 июня 2011, 15:17

Появился MP3-декодер с открытым кодом на JavaScript — jsmad

9
Логотип jsmad
Логотип jsmad
Иллюстрация с сайта Jsmad.Org

Энтузиасты, известные под никами nddrylliog, jensnockert и mgeorgi, представили MP3-плеер с открытым кодом, написанный на языке JavaScript и не использующий возможности Adobe Flash, — jsmad.

Как сообщается в описании проекта, jsmad — это MP3-декодер, написанный на чистом JavaScript и основанный на алгоритмах из библиотеки libmad (распространяется под GPL); поддержка ID3-тегов в нем была реализована с нуля. Раньше для возможности воспроизведения MP3-файлов на веб-странице приходилось использовать Adobe Flash (как правило, с обвязками на JavaScript), но эти времена скоро останутся в прошлом.

Правда, на данный момент jsmad поддерживает только последние версии Firefox (начиная с релиза 4.0), Aurora и Chrome (12 Dev в Linux, 13 в Mac OS X, Canary в Windows; требуется включить Web Audio API в «about:flags», частота дискретизации звука изменится на 48000 Гц). Поддержка таких браузеров, как Opera и Safari, отсутствует, поскольку в них нет реализации Audio Data API или Web Audio API, а про Internet Explorer разработчики на своём сайте даже не упоминают.

Основная часть проекта была реализована в рамках MusicHackDay, который проходил в Берлине (Германия) в конце мая. Авторы считают, что «jsmad открывает двери целому миру аудиоприложений реального времени, реализованных на JavaScript».

Исходный код jsmad распространяется под свободной лицензией GNU GPLv2 и доступен на GitHub. Сайт проекта с живой презентацией плеера в действии — jsmad.org.

Постоянная ссылка к новости: http://www.nixp.ru/news/11254.html. Дмитрий Шурупов по материалам CrazyEngineers.

fb twitter vk
Илья Смирнов

Классный логотип. Напоминает персонажа из фильма «Добро пожаловать, или Посторонним вход воспрещён»: «А чё это вы здесь делаете, а?»

dfghm

Браузеры превращаются, превращаются…

Для полного превращения еще нужно драйвера для работы с периферийными устройствами :)

yesint

«MP3-декодер, написанный на чистом JavaScript и основанный на библиотеке libmad» — ерунда какая-то получается. Если на чистом JavaScript, то какая нафиг внешняя библиотека? А если  основанный на библиотеке libmad то какой нафиг чистый JavaScript?

Как я понял это просто binding к libmad для JavaScript. Так и надо писать, а то чушь выходит полная.

defender

Нет — черти-злокодеры на JavaScript посмотрели как декодится MPEG поток на С в библиотеке libmad и написали так-же на JavaScript.

yesint

Мать-мать-мать привычно отозвалось эхо…

У меня конечно закрадывалась такая мысль, но это же идиотизм -  тормозить будет так, что просто обнять и плакать.

Дмитрий Шурупов

С одной стороны — идиотизм, но с другой — консерватизм. Не так уж и тормозит, к слову говоря. Во всяком случае у меня в Firefox 4… Понятно, что это подойдет далеко не для всех (людей, браузеров, устройств, железок), но тенденции налицо.

yesint

Дайте мне другой глобус (С) :)

Эти тенденции основательно пугают

rgo

Не надо пугаться. Это естественное развитие событий. Мощность процессоров растёт, а сложность декодирования mp3 остаётся всё той же. И поэтому теперь можно декодировать mp3 интерпретируемым языком. Почему бы не сделать это, тем более что это востребовано.

Собственно, я даже не вижу зачем пугаться? Это хорошо. Если jsmad приживётся и завоюет популярность, то есть шансы, что в будущем его api забьют в стандарт на жабаскриптовые библиотеки (не знаю как этот стандарт называется), а тогда всё, что прячется под API браузер будет волен реализовывать хоть на ассемблере.

На самом деле, такой подход сильно напоминает подход к внедрению новых фичей в lisp. Скажем объектная система lisp’а, изначально была реализована на лиспе внутри лиспа. И их было много разных, несовместимых объектных систем. Тогда это было круто, но тормозно. Потом поддержку классов начали реализовывать на С, как неотъемлимую часть лисп-системы. А потом стандартизовали CLOS, и сегодня любой уважающий себя lisp имеет поддержку CLOS. Написанную, естественно на C и быструю настолько, насколько это возможно. Такой подход позволяет легко внедрить API; проверить его жизнеспособность, удобство, полезность; допилить до идеала и лишь после всего этого, заниматься уже более сложной деятельностью, типа пропихивания API на уровень стандарта и внедрения этого стандарта во все браузеры.

defender

Кстати говоря, не так оно и тормозить должно как ожидается. Выбрана libmad как основа знаете почему? Потому как там весь процесс построен на операциях с целыми. В JavaScript не все так уж все и плохо с целыми :D. Вон, виртуалку для ядра linux человек на javascript написал :D.

Дмитрий Шурупов

Да, именно так. Чуть-чуть подправил в тексте новости, чтобы не было разногласий. Спасибо.

Feonis

«Для прослушивания MP3 достаточно 4 ядерного процессора Intel Core 2…» — примерно так себе это представляю.

dfghm

На моем i3 330M (2.13GHz) 2 ядра с HT. Загрузка 100% на одно ядро. В общем — 25% от всей системы.

Eleidan

Очередной стимул для оптимизации выполнения кода на JavaScript.

В Google, наверное, одни из первых сделали резкий рывок в этом направлении. Остальные тоже подтягиваются, понимая потенциал JavaScript.