Как транслировать WAV-файл? - PullRequest
3 голосов
/ 31 марта 2010

Я пишу приложение, в котором записываю аудио и загружаю аудио файл через Интернет. Чтобы ускорить загрузку, я хочу начать загрузку до того, как закончу запись.

Файл, который я создаю, является WAV-файлом. Мой план состоял в том, чтобы использовать несколько блоков данных. Поэтому вместо обычной кодировки (RIFF, fmt, data) я использую (RIFF, fmt, data, data, ..., data). Первая проблема заключается в том, что заголовок RIFF требует общей длины всего файла, но это, конечно, неизвестно при потоковой передаче звука (сейчас я использую произвольное число). Другая проблема заключается в том, что я не уверен, что он действителен, так как Audacity не распознает файл, а Windows Media Player открывает файл, но играет лишь очень небольшую часть. Я читал спецификации WAV, но не нашел ответа.

Есть предложения?

Ответы [ 3 ]

3 голосов
/ 06 мая 2010

Вам просто нужно использовать контейнерный формат, который поддерживает добавление без редактирования заголовка.

Я предлагаю образцы Raw PCM. Они могут быть преобразованы во что угодно еще.

Audacity импортирует необработанные байты из меню Файл -> Импорт -> Необработанные данные.

Другим вариантом может быть аудиокодек без потерь, такой как FLAC внутри формата потокового контейнера. (как сделано чешской веб-радиостанцией)

Я заметил, что VLC может сжимать и передавать FLAC-in-OGG со звуковой карты. Оттуда должен быть простой шаг для сохранения или распаковки потока на стороне сервера.

1 голос
/ 19 марта 2019

Мне удалось потоковое воспроизведение WAV, используя только один блок данных и установив ChunkSize в 0xFFFFFFFF и Subchunk2Size в 0xFFFFFFFF. Полученный файл не полностью соответствует спецификациям, но при внедрении с помощью тега <audio> Chrome воспроизводит его в режиме реального времени без проблем. Также загруженный файл можно воспроизвести.

WAV формат

0 голосов
/ 31 марта 2010

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

Но если вы действительно пытаетесь ускорить загрузку, я думаю, что вы действительно хотите загрузить кадры в формате MP3 и заставить сервер собрать их в файл MP3 . Боюсь, что сложнее.

...