2015-09-11 4 views
1

Я боролся со следующей проблемой и не могу найти решение. Предоставленное приложение Java-сервера отправляет аудиоданные в формате pcm в кусках через соединение с веб-разъемом. Нет заголовков и т. Д. Моя задача - без сбоев воспроизвести эти необработанные фрагменты аудиоданных в браузере. В более ранней версии я использовал audioContext.decodeAudioData, потому что вначале я получал полный массив с заголовком 44 байта. Теперь нет заголовка, поэтому decodeAudioData не может использоваться. Я буду очень благодарен за любые предложения и советы. Возможно, я должен использовать некоторую библиотеку декодирования JS, любой пример или ссылка мне очень помогут. Спасибо.PCM аудио потоковое через websocket

ответ

0

1) Ваше требование «воспроизвести эти необработанные фрагменты аудиоданных в браузере без каких-либо задержек» невозможно. Всегда есть время, чтобы отправить аудио, получить его и воспроизвести. Читайте о терминах «латентность». Сначала вы должны получить реалистичное требование. Это может быть 1 секунда или 50 миллисекунд, но вам нужно получить что-то реалистичное.

2) Сетевые розетки используют tcp. TCP предназначен для надежной связи, контроля перегрузки и т. Д. Он не предназначен для быстрой связи с низкой задержкой.

3) Предоставьте больше информации о вашей проблеме. Вы общаетесь с клиентом и сервером через Интернет или через локальный Lan? Это сильно повлияет на вашу производительность и дизайн.

4) 44-байтовый заголовок был заголовком wav-файла. Он указывает тип данных (частота дискретизации, моно/стерео, бит на выборку). Вы должны знать эту информацию, чтобы иметь возможность воспроизводить аудио. IF вы знаете тип PCM, вы можете вставить его самостоятельно и использовать свой декодер, как и раньше. В противном случае вам необходимо создать аудиоплеер вручную.

Потоковое аудио по сетям не является тривиальной задачей.

+0

Спасибо jaybers за ответ ур. – fh76

+0

1) Около 50 мс допустимо 2) Двоичные данные через websockets довольно быстр, поэтому я был уверен, что он поместится в 3) Локальная локальная сеть 4) Я должен передавать голосовые данные в браузер практически в режиме реального времени. Моя предыдущая версия передавала полный wav-файл с заголовком, но увеличивает латентность. Другие варианты, которые я копаю информацию о webRTC между клиентом и сервером, но я не уверен в этом. Это технология сверстников. – fh76