В настоящее время я пытаюсь создать тестовый сайт, который позволяет пользователям записывать голосовые заметки и сохранять их на свой счет. Каков наилучший способ сделать это, используя PHP или JavaScript?
Шаги, которые я ищу для этого процесса:
1) Пользователь, нажав кнопку записи. 2) Инициирование последовательности записи. 3) Остановка последовательности. 4) Именование файла и отправка его на сервер.
Мой основной запрос сосредоточен на втором шаге , где мне нужен какой-то механизм, который будет взаимодействовать с микрофоном пользователя для записи голоса. Я по-прежнему новичок в веб-разработчике, и я не знаю, как я могу использовать запись голоса с использованием JavaScript.
При поиске в Google я нашел несколько ссылок в StackOverflow, которые рассматривали подобные проблемы, но ответы не помогли. Множество решений указало на Flash, но я хотел бы как можно больше избежать этого. Поэтому мой вопрос сводится к «Можно ли записывать голос с использованием JavaScript? Если да, то как?»
Заранее спасибо.
HTML5 Audio API широко не поддерживается в браузерах, я думаю, что он работает в Chrome, и Firefox недавно добавил его в ночные часы … На этом этапе необходимы префиксы браузера, но общий API …
navigator.getUserMedia({audio: true}, function(stream) { /* do stuff */ });
Так что это будет webkitGetUserMedia
для Chrome и mozGetUserMedia
для Firefox.
Ваши более последовательные параметры прямо сейчас – через плагины браузера, такие как Flash или Java, или для создания настольного клиента, который пользователь должен будет установить.
Ресурсы, представляющие интерес для getUserMedia:
Следующий вопрос может помочь вам:
учебник по использованию Flash или Java-сервлета для загрузки данных микрофона из браузера на сервер?
Теперь вы можете записывать с микрофона, создавая звуковой график, который соединяет ваш локальный MediaStream с ScriptProcessingNode:
navigator.webkitGetUserMedia({video: true, audio: true}, function(stream) { var audioContext = new webkitAudioContext, mediaStreamSource = context.createMediaStreamSource(stream), processor = context.createJavaScriptNode(4096, 2, 2); processor.onaudioprocess = function(e) { // Process the audio data found in e.inputBuffer }; mediaStreamSource.connect(processor); processor.connect(context.destination); });
(С использованием префиксов поставщика Chrome)
Вы можете подключить это к веб-узлам или даже к простому XHR, чтобы отправить куски на ваш сервер, который может обрабатывать его в аудиофайл. Вам нужно будет преобразовать каждый канал из
неперемещенный 32-разрядный линейный ИКМ IEEE с номинальным диапазоном -1 -> +1
в формат по вашему выбору.
Аналогичный пример записи звука, его кодирования в wav-файл и сохранения его (все клиентские) можно найти здесь:
https://github.com/muaz-khan/WebRTC-Experiment/tree/master/RecordRTC
Подробнее о AudioContext:
Пока не поступит аудиозапись HTML5, вам действительно нужно объединить решение, объединяющее Flash и мобильные устройства, загрузку файлов. На мобильных устройствах на экране загрузки файлов обычно есть аудио- или видеомагнитофон, поэтому пользователи могут записывать прямо со своего устройства.
Если устройство не имеет аудиозаписей при загрузке файла, вы должны использовать видеомагнитофон, а затем конвертировать видео в MP3 на сервер. Вот как мы это делаем на recordmp3online.com .