Как записать звук из веб-приложения на основе Javascript?

Я пытаюсь написать веб-приложение, которое записывает файлы WAV (например, с микрофона пользователя). Я знаю, что сам по себе Javascript не может этого сделать, но меня интересует наименее проприетарный метод для расширения моего Javascript. Мои целевые браузеры - Firefox для ПК и Mac (без ActiveX).

Я так понимаю, это можно сделать с помощью Flash (но не как файл в формате WAV). Я так понимаю, это можно сделать с помощью Java (но не без подписи кода). Это единственные варианты?

Я хотел бы записать файл как WAV, потому что целью веб-приложения будет сборка библиотеки коротких звуковых фрагментов качества хороший. Я предполагаю, что загрузка будет 50 МБ, что того стоит по качеству. Приложение будет использоваться только в нашей интрасети.

ОБНОВЛЕНИЕ: теперь есть альтернативное решение благодаря предстоящему аудио API JetPack: см. https://wiki.mozilla.org/Labs/Jetpack/JEP/18

Может быть, вам это пригодится: github.com/milani/microphone.js

Morteza Milani 11.03.2012 18:23
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
5
1
16 545
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Flash станет вашим лучшим решением.

Надеюсь, это поможет: http://www.kirupa.com/forum/showthread.php?t=17331

Да, я считаю, что Flash или Java-апплет - единственные способы сделать это. Поскольку вы не можете взаимодействовать с микрофоном, вы должны использовать какой-то плагин для браузера, это единственный способ использовать микрофон. Я не знаю ни одного другого плагина, который предоставлял бы такие функции. Быстрый поиск в Google не выявил дальнейших возможностей. Я думаю, что проще всего было бы работать с Flash.

Единственные варианты: Flash, Java, ActiveX или создание собственного расширения Firefox. Flash, вероятно, ваш лучший вариант - вы можете написать или использовать существующее приложение Flash для записи и сохранить почти все остальное в чистом Javascript.

Зачем вам нужен файл WAV? Если вы планируете обрабатывать фактические биты сигнала на клиенте, это, вероятно, плохая идея; клиент может быть очень медленным, и вы не сможете по-настоящему манипулировать файлом. Если вы хотите отправить звук обратно на сервер, то гораздо лучше отправить сжатый файл, а затем распаковать его на сервере.

Ответ принят как подходящий

Flash требует, чтобы вы использовали медиа-сервер (примечание: я все еще использую Flash MX, но быстрый поиск в Google обнаруживает документацию для Flash CS3, которая, похоже, согласуется - обратите внимание, что Flash CS4 скоро выйдет, может измениться). Macromedia / Adobe стремятся заполучить вам свой медиа-сервер, но проект с открытым исходным кодом Red5 может подойти для вашего проекта:

http://osflash.org/red5

Я думаю, что Java будет более подходящей. Я видел апплет, который может делать то, что вы хотите, в Moodle (виртуальная обучающая среда с открытым исходным кодом):

http://64.233.183.104/search?q=cache:k27rcY8QNWoJ:moodle.org/mod/forum/discuss.php%3Fd%3D51231+moodlespeex&hl=en&ct=clnk&cd=1&gl=uk

(сайт требует членства, но открыт для Google, поэтому ссылка ведет на страницу кеша Google).

Начиная с версии Flash 10, вам не нужен медиа-сервер. Вы можете захватить необработанные образцы и отправить их в произвольный сервер с помощью HTTP-сообщения. code.google.com/p/wami-recorder

Ian McGraw 04.12.2011 22:09

Вы можете загрузить Real Producer Basic, который здесь бесплатно (http://forms.real.com/rnforms/products/tools/producerbasic/), и встроить его как объект activeX, поскольку он находится в вашей интрасети. Flash будет встраиваться таким же образом, он есть на всех офисных рабочих станциях, но, поскольку это ваша интрасеть, вы можете установить его на всех машинах с AD. Настоящие аудиофайлы очень маленькие по сравнению с wav и отлично звучат. Вот ссылка на руководство по Real Sudio ActiveX. http://service.real.com/help/library/guides/activex/producerx.html

Другое решение, если вы не против того, чтобы ваши пользователи устанавливали плагин, - это использовать плагин Runtime Revolution RevWeb, который поддерживает запись звука в браузере (и его легко реализовать, я сделал тестовый апплет, чтобы подтвердить это примерно через 10 минут). http://revweb.runrev.com/

Это старая ветка, но проблема остается актуальной. Следует отметить, что существует способ записи звука на сервер во Flash без использования собственной серверной части. Вот пример проекта, с которого можно начать:

https://code.google.com/p/wami-recorder/

Я бы сказал, что этот ответ лучше, чем принятый в 2008 году, поскольку он имеет тот же эффект, но компонент выделенного сервера не требуется. Это еще не полное решение, так как оно не будет работать на мобильных устройствах Apple, которые широко распространены. Надеюсь, вскоре появится разумный кроссплатформенный стандарт, сочетающий в себе встроенную запись, открытый формат файла и простой HTTP-пост.

leonigmig 25.01.2012 15:48

Другие вопросы по теме