Захват звука с микрофона браузером (способы)

В будущем может потребоваться сохранять на сервере короткие (до 30 секунд) записи речи с микрофона (не чат), желательно прямо из браузера.

Итак, что приходит в голову по поводу вариантов реализации:

1. Flash — понятно: Microphone.get(); attachAudio...

Серверная часть только FMS/Red5? Без медиа-сервера не обойтись? Случай вроде бы простейший, потоковая трансляция не нужна, можно ли чем-то простейшим на php/perl обойтись?

2. Silverlight — что-то такое, ну или костыль.

3. Объект ActiveX?

4. HTML5 — пока никак или что-то где-то экспериментально поддерживается?

5. Java-аплеты?

6. Браузерные плагины медиаплееров — QuickTime, VLC, WMP и т.д. — только для воспроизведения или какой-то из них может записывать звук?

7. Что ещё?

Просьба отписаться с примерами кода/тематическими ссылками, спасибо.


UPD. С Java что-то не складывается: запись звука с микрофона, отправка на сервер тоже не проблема, но для использования в качестве аплета на странице придётся подписывать сертификатом. Или можно это как-то обойти?
  • Вопрос задан
  • 14835 просмотров
Пригласить эксперта
Ответы на вопрос 8
Riateche
@Riateche
Судя по гуглу, VLC каким-то образом можно заставить записывать звук/видео. Но вот каким образом организовать его взаимодействие с браузером для этого, я не представляю.

Мне Java представляется самым удобным решением. Кажется, вам нужно что-то вроде этого: www.hotscripts.com/listing/clipstream-playerless-java-media-streaming/
Ответ написан
@BasilioCat
Flash в версии 8 (а то и раньше) кодировал захваченный с микрофона звук пропиертарным и закрытым кодеком Nellymoser, его конечно декодирует сам флэш, но для легального преобразования его в mp3 требовалось покупать SDK за 30 штук баксов. Работы по расшифровке его в libavcodec велись, мне кажется разработчики Red5 предлагали даже тыщ 5 тому, кто напишет опенсорсный декодер. Википедия утверждает, что FFMPEG теперь умеет декодировать Nellymoser.
Во флэше 10 вроде как есть возможность выбрать кодек Speex, при этом по умолчанию используется все тот же Nellymoser
При всем при этом, отправка потока возможна только на FMS/Red5/Wowza и др rtmp медиасерверы. Есть еще erlyvideo, есть реализации rtmp на питоне — не уверен, правда, что они умеют принимать потоки. В любом случае, HTTPшным POST-запросом не обойтись, потребудет процесс, готовый постоянно принимать соединения и записывать потоки
Ответ написан
@Emin
Пример того, как записать звуковой файл, используя микрофон и флэш плеер, можно посмотреть здесь:
active.tutsplus.com/tutorials/actionscript/create-a-useful-audio-recorder-app-in-actionscript-3/

Как отослать файл на сервер из флэша можно прочитать здесь:
livedocs.adobe.com/flex/3/html/help.html?content=17_Networking_and_communications_7.html

Уверен, что скомбинировав код из двух приведённых выше ссылок, можно легко решить Вашу проблему.
Ответ написан
Комментировать
lsdima
@lsdima
Если flash, то медиа-сервер не обязателен. Внутри флеша сигнал из микрофона хранится в битовом массиве. Дальше ищете подходящие библиотеки кодирования. Навскидку гугл выдал:

blog.debit.nl/2009/03/mp3-encoder-in-flash-with-alchemy/
github.com/kikko/Shine-MP3-Encoder-on-AS3-Alchemy

К слову, можно обойтись и без кодирования, или кодировать на стороне сервера.
В ньюансах не подскажу, т.к. с микрофоном работать не приходилось, но в целом где-то так.
Ответ написан
Комментировать
@tikhop
Лично делал запись с микрофона используя flash, медиа сервер не использовал. Flash умеет получать массив байтов с микрофона, дальше этот массив байтов конвертируется в wav и сохраняется на сервер.

tikhop.com/temp/hollur/br/
Ответ написан
Комментировать
@darkkosinus
Ответ написан
Комментировать
wartur
@wartur
Ответ написан
Комментировать
статья на хабре была https://habrahabr.ru/post/198632/
вот ссылка на скрипты www.scriptcam.com
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы