Создание веб-радио

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

Идея заключается в разработке веб-сайта с HTML5/JS. Итак, часть администратора (на php или любом другом языке на стороне сервера) позволит мне отправлять аудио от микрофона.

Затем, на стороне клиента, пользователь может прослушивать поток с тегом <audio>, например.

Возможно ли это? Кто-нибудь использовал сильное (открытое/бесплатное) решение, выполняющее это?

Спасибо,

С уважением.

Ответ 1

http://web.psung.name/zeya/ - это приложение транскодирует вашу музыку "на лету" и передает ее с помощью HTML5. Может быть, это поможет немного;)

Ответ 2

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

Если вы хотите охватить самую большую аудиторию, настройте потоковый сервер, например Icecast и передайте через MP3 и/или OGG ( оба лучше). Практически все подключенные к Интернету устройства с разумными возможностями смогут воспроизводить потоковое аудио, поэтому пусть пользователь выбирает подходящий плеер или его любимый.

Ответ 3

Существует спецификация взаимодействия с устройствами, например, микрофоны, но это ранние дни, и я не знаю никакой поддержки для он.

Если вы хотите что-то, что может взаимодействовать с микрофоном сегодня, посмотрите на Adobe Flash.

Ответ 4

Я не думаю, что вы можете сделать что-то подобное с помощью JavaScript и HTML5. И если бы мы могли, нам, скорее всего, пришлось бы долго ждать, прежде чем клиенты смогут использовать его в браузере. Как сказал Дэвид, Flash будет работать, проблема в том, что: A) многие устройства не поддерживают его, а B) Flash далек от свободного. Существуют и другие способы сделать то, что вы описали, но для этого потребуется другое программирование или, по крайней мере, другие плагины. Единственная альтернатива, которую я могу придумать, - это Silverlight от Microsoft, свободный и не слишком сложный в использовании, у нее есть поддержка микрофона, но не уверен, насколько это здорово. Надеюсь, это поможет.

Ответ 5

В аудиокодете HTML не указывается какой-либо конкретный кодек, поэтому разработчики браузера могут выбирать самостоятельно. В настоящее время ни один из них не поддерживает потоковый формат, хотя это может произойти. Что касается записи, я не уверен, что вы действительно хотите поддерживать неограниченную запись в браузере, потому что у вас есть проблемы concurrency? Вы действительно позволили бы всем записывать сразу?

Кажется, имеет смысл иметь ограниченный доступ к записи сеанса потокового мультимедиа на сервере, а затем разрешить архивный доступ к нему через браузер. Поиск можно легко выполнить с помощью тега HTML AUDIO, но по существу мы только что изобрели подкаст.

Ответ 6

Можно было бы манипулировать звуковыми тегами для "потокового" контента, но должен быть буфер в пару секунд (по крайней мере). Переустановите источник тега на URL-адрес, который обеспечивает следующие пару секунд каждые пару секунд (а не статические файлы, конечно, но динамически подается из потока). Администратор я думаю, что вы застряли с плагином, так как вам нужен доступ к микрофону.

Ответ 7

Я думаю, что то, что вы предлагаете, выполнимо теоретически, но на практике веб-клиенты и стандарты пока еще недостаточно зрелы. Например, просмотрите этот интересный блог о синтезе аудио в JavaScript.

Теперь для теории:

Альтернатива 1: Подождите, пока браузеры будут поддерживать поддержку потокового аудиоформата (обычно звуковой тег в настоящее время поддерживает WAV, OGG и/или MP3).

Альтернатива 2: Реализация потоковой передачи...

Для серверной части ( "микрофон" ), я предполагаю, что вы можете делать все, что захотите. Например, должно быть возможно не подключать микрофон к серверу, а скорее позволить серверу запускать какой-то процесс транскодера с другого источника/сервера. Затем у вас может быть приложение CGI/FastCGI, к которому подключаются веб-клиенты, чтобы получить последнее окно потока (часть потока, скажем, 1-5 секунд?).

На стороне веб-клиента вы, вероятно, можете использовать звуковой тег и управлять им с помощью JavaScript, чтобы периодически обновлять его новыми потоковыми окнами. Очередь аудиопоследовательностей не поддерживается, поэтому вам придется придумать какой-то механизм пользовательской синхронизации. Одним из решений может быть использование двух одновременных образцов звука, которые пересекаются (таким образом минимизируя клики и зависания, возникающие в результате неточного времени).