Поток необработанных аудиоданных с сервера на клиент - PullRequest
1 голос
/ 17 февраля 2020

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

Алгоритм, который изменяет звук, является проприетарным и уже имеет работающее решение в качестве настольного приложения в Java, но мне придется настроить его онлайн. Я ищу решение, в котором большая часть этого будет выполняться на стороне сервера, и клиент будет отправлять только параметры.

Моя цель - не открыть, например, '/something.wav' на сервере и воспроизвести его, но извлечь аудиоданные (которые у меня уже есть) и каким-то образом отправить эти необработанные аудиоданные клиенту для воспроизведения Это. Возможно ли это, и если да, то как лучше всего это сделать?

1 Ответ

2 голосов
/ 18 февраля 2020

На клиенте проще всего сделать простой звуковой тег HTML5:

<audio src="https://your-audio-server/some-id" preload="none" controls></audio>

preload="none" предотвращает раннюю буферизацию звука. (Это в реальном времени, поэтому вы не хотите буферизовывать данные из прошлого в течение нескольких секунд или минут, пока пользователь не нажмет кнопку воспроизведения!)

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

То есть ваш сервер будет транслировать поток в реальном времени в формате WAV и транслировать его в реальном времени на клиент. Клиент не знает и не заботится, получает ли он файл или прямой эфир.

...