Как транслировать необработанный PCM через аудиоэлемент HTML5 - PullRequest
0 голосов
/ 29 января 2019

У меня есть .NET веб-приложение , где я получаю в свой контроллер C # аудио в реальном времени из другого приложения в виде необработанных байтов PCM ,Я хотел бы передавать это аудио в режиме реального времени через HTML5 аудиоэлемент .Нет проблем с добавлением заголовка wav к необработанным байтам PCM и потоковой передачей данных через аудиоэлемент в виде audio / wav.

Проблема, как аналогично указано в в другом посте , заключается в том, что величина буферизации имеет тенденцию быть слишком большой для того, что предполагается для потоковой передачи в реальном времени.Звук не начинает воспроизводиться до тех пор, пока не будет прочитано около 25 секунд данных (на это уходит около 5-6 секунд).

Я рассмотрел использование MSE ( Расширения медиаисточников *)1019 *) , чтобы иметь возможность вручную обрабатывать величину буферизации.Но, похоже, в настоящее время он не поддерживает формат wav ( source ).

Изменение данных на более поддерживаемый формат, такой как mp3, путем кодирования данных в реальном времени в C # имеет свои недостатки(т. е. заполнение 0 байтов ), поэтому я бы хотел избежать этого, если это возможно .

Существует ли жизнеспособный способ обойти это доMSE добавляет поддержку PCM / WAV?

1 Ответ

0 голосов
/ 29 января 2019

Вы можете использовать ScriptProcessorNode в API Web Audio для воспроизведения произвольных сэмплов PCM с очень низкой задержкой.Затем вы можете управлять буферизацией по своему усмотрению.

Просто преобразуйте ваши семплы в 32-битную плавающую точку с точностью ± 1,0.

...