FLAC-декодер на Javascript

    Ребята из Official.fm Labs задумали совершить настоящую звуковую революцию в вебе: две недели назад они выпустили FLAC.js — декодер аудиофайлов формата FLAC (Free Lossless Audio Codec), а также Aurora.js — фреймворк на CoffeeScript для простого подключения декодеров и создания веб-приложений, работающих со звуком. Таким образом, через Web Audio API теперь можно слушать музыку в идеальном качестве, и все веб-приложения могут обращаться к звуковой карте стандартным образом.

    Демо

    JavaScript уже так могуч, что браузер декодирует звук, потребляя менее 5% ресурсов CPU. Можно представить, какие крутые звуковые редакторы, миксеры и прочие аудиоприложения появятся в вебе в ближайшее время.
    Поддержать автора
    Поделиться публикацией

    Комментарии 60

      0
      Когда уже браузеры научатся исполнять нативный код в песочнице? Конвертация С/С++ кода в JavaScript или переписывание с нуля — разве это оптимальный путь?
        +19
        Google Native Client, не?
          0
          Да да, оно самое.
          +2
          Надеюсь, что простого способа не будет никогда(сложные и сейчас есть), т.к. этим начнут сразу злоупотреблять и потом на части устройств или браузеров часть сайтов не откроешь.
          Куда уж там натив, если даже промежуточные и гораздо более портабельные решения типа джавы или флеша вызывают недовольства.
            0
            NaCL уже работает.
            chrome.google.com/webstore/detail/hdahlabpinmfcemhcbcfoijcpoalfgdn
            причем играть можно и под mac os и под windows уж точно.
              0
              Это не просто не работает в разных браузерах, а не работает в одном и том же браузере на разных платформах.
                0
                это работает в chrome под mac os, однозначно.
                  –3
                  Пускай даже это работает под Linux на x86/amd64, но, например, на ARM это в принципе может работать?
                    0
                    Да.
                    Уже года 2 как на arm работает.
                      –5
                      Под win8 тоже?
                        0
                        Вроде Microsoft запрещает другие браузеры на планшетах с win8 + arm.
                    0
                    Есть и другие системы. Та же iOS.
                    Хотя там абсолютно другой браузер по начинке, это только внутренне, позиционируется он как Хром, носит название Хром и выглядит как Хром.
              0
              Зачем транслировать С++ код в JavaScript, когда можно его компилировать в машинный код и запускать в браузере не зависимо от платформы?
                +2
                Запускать в google chrome, вы хотели сказать.
                  –2
                  Теоретически NaCL запустить можно где-угодно, т.к. исходники открыты. Другое дело в том, что разработчики браузеров не хотят принимать «подачки» от Google.
                  Тем не менее, есть возможность кроссплатформенно и кроссбраузерно писать модули для NaCL используя Pepper Plug-in API (PPAPI).
                    +1
                    PPAPI в других браузерах не поддерживается если что.
                      –1
                      Прошу прощения, я перепутал с NPAPI (Netscape Plugin Application Programming Interface).
                +1
                Есть ещё проекты типа WebSharper, которые позволяют писать на C#/F# и транслировать код в JS.
                  0
                  С введением типизированных массивов в JS скорость работы JS значительно возросла, и конкурентна со строго типизированными языками.
                  –10
                  Ага, и при этом в «ВКонтакте» музыка идет через флеш
                    +8
                    Да она везде сейчас идёт через флеш. Потому везде и работает.
                    Зашёл по ссылке — ваш браузер не поддерживается, юзайте хром или фаерфокс…
                      –1
                      Без флеша там тоже играет, но вроде бы только в Chrome.
                        +2
                        В том и дело, что в хроме флеш встроен, тут вообще без разницы. В firefox не работает без флеша.
                        А имел я ввиду не отказ от флеша, а включение html audio там, где это возможно
                          –1
                          Я имел в виду с отключенным flash в хроме. Оно играет, но похоже и не через audio.
                          –1
                          C флеш блокером в хроме не работает воспроизведение, пока блок на сайт не снимешь.
                          +1
                          Она там идет через HTML5 для тех браузеров кто умеет mp3 — хром (пока ещё), сафари и как ни странно IE. Остальным флэш. Думаю не надо рассказывать что никто не будет перекодировать всю огромную базу вконтакта
                            +1
                            Только что флеш в хроме отключил — музыка не работает
                              +1
                              На айфоне играет, там флеша быть не может. Видимо, скрипт проверяет не поддержку мр3, а мобильные устройства.
                                +1
                                Аналогично. Всё работает. Постоянно ее с телефона слушаю. Windows Phone. В качестве браузера IE, соответственно. Флеша нет и подавно.
                              0
                              не говоря уже о том сколько возникнет технических трудностей, и увеличится размер.
                                –3
                                Все браузеры должны уметь играть mp4, вот только не уверен, что mp3 кодек в этом случае поддерживается.
                              +2
                              >We're really sorry about this, but it looks like your browser doesn't support an Audio API. Please try these demos in Chrome 15+ or Firefox 8+ or watch a screencast.
                              Печаль…
                                0
                                У меня работает в Firefox.
                                +14
                                Стоило, наверное, отметить, что 5% CPU — это примерно в 10 раз медленнее, чем в бинарном коде.
                                  +16
                                  Надо же чем-то мотивировать апгрейд домашних PC… У меня когда девушка играет в «Нано-Ферму» вКонтакте на i7 кулер подвывает так же как при кодировании видео в Premiere %)
                                    0
                                    5% от какого процессора?
                                      0
                                      Я проверял на своем ноутбучном core-i3.
                                      У меня на самом деле получалось чуть меньше 5% – примерно 4.3

                                      Сравнивал с фубаром — он тратит примерно 0.6–0.8%.

                                      Более точный подсчет даёт примерно 5 раз, а не 10.
                                      Но думаю, что это все равно многовато.
                                        +4
                                        JS vs C — деградация производительности менее чем на порядок. Да это шикарно.

                                        Особенно учитывая, что на C и ассемблере можно выделывать векторные трюки.
                                          0
                                          Это у меня менее, чем на порядок. Вот у человека с атомом ситуация, думаю, хуже.
                                        0
                                        На atom Т450 около 25—30%.
                                        +1
                                        Зависит еще от проца — у меня 1 — 2% только загрузка.
                                        0
                                        Притормаживает. Еще далеко до.
                                          0
                                          Скорее всего что-то с интернет каналом. Не усепевает flac подгзузиться.
                                            0
                                            У меня широкий канал, i7 2670qm — именно обработка тормозит.

                                            … правда, под vmware :)
                                          +7
                                          > Можно представить, какие крутые звуковые редакторы, миксеры и прочие аудиоприложения появятся в вебе в ближайшее время.

                                          Не появятся. Пока производители браузеров не сделают возможность работать со входом аудиокарты с минимальными задержками весь звуковой софт в вебе будет на уровне «свистелок-перделок», без возможности сделать нормальную реалтаймовую DAW или, например, вокальный/гитарный процессор.

                                          Делал запрос ребятам из Chromium'а, сыпал кучей серьезных аргументов — отложили до неопознанных времён.
                                            +2
                                            Вообще-то, я уже сделал такую штуку для нашей радиостанции, но… На флеше, так как захват звука никто не предусмотрел. Кодирования в mp3/ogg/flac на клиенте тоже как-то не видел, внутри флеша его тоже нет, но есть алхимия и оно хоть с тормозами, но работает. И хотя я смог сделать полноценную вещалку для Icecast, я наткнулся на такое количество граблей и ограничений, что повторять опыт желания нет.

                                            Я верю, что HTML5-6-7 так и убьет флеш, но будет это не скоро. Надеемся, ждем.
                                              0
                                              Я веду речь именно о задержках в цепочке вход аудиокарты -> браузер -> приложение (обработка сигнала) -> браузер -> выход аудиокарты до критичных для реалтаймовой работы в 10 мс. Здесь без коннектов к ASIO/CoreAudio не обойтись.
                                              0
                                              Ребята из хрома лучше всего убеждаются рабочей демонстрацией, в которой «вот это вот не тормозило бы/не глючило бы, если бы у меня была такая-то возможность: ...»
                                              +1
                                              Хватит уже тепловую смерть вселенной приближать. Дайте блин доступ к системным кодекам!
                                                +1
                                                MB Air core i5 — все работает без тормозов, 3.2%
                                                image
                                                P.S.
                                                И треки такие у них такие классные!
                                                  0
                                                  Вместо демо синий экран, звука нету
                                                  Chromium 18.0.1025.168 Built on Ubuntu 11.10, running on LinuxMint 12
                                                  В тоже время на Aurota (Mozilla Firefox) 15.0a2 все прекрасно работает…
                                                    0
                                                    Заикается при открытии других вкладок/страниц в FF13
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                        0
                                                        Действительно, дали бы лучше возможность использовать системные кодеки, иначе те же мобильные платформы будут сжирать весь аккамулятор на таком вот декодировании.
                                                          0
                                                          На мобильные платформы такое качество по-хорошему гнать не надо. Затраты по трафику огромные, а звуковой модуль передать разницу не сможет.
                                                            0
                                                            Я думаю это смотря какие мобильные платформы. Разве евро-стандарт 16bit/44-48kHz — это так много?
                                                              0
                                                              Речь ведь не идёт обязательно о 192kHz и 64 или даже 128 битовой глубины.
                                                            +2
                                                            > JavaScript уже так могуч

                                                            Ну, процессорам тоже надо сказать спасибо :) 5% от сегодняшних процов, между прочим, будет помощнее иных процов прошлых лет…
                                                              0
                                                              Это просто замечательная новость! Надеюсь скоро появятся сервисы с музыкой в лосслесс качестве.
                                                                0
                                                                xubuntu: в firefox-е начал грузить файл, но не проигрывается. В Chromium проигрывается. Бывают клацки, типа глюки, не заедает, но подклацивает при открытии например js-файлов с этой страницы, чтобы посмотреть сорц. Но в целом всё очень даже сносно!

                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                Самое читаемое