2010-03-31 4 views
2

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

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

Любые предложения?

+0

Почему это должно быть WAV? Как вы его передаете? – intgr

ответ

0

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

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

3

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

Я предлагаю образцы необработанных ИКМ. Они могут быть преобразованы во что угодно, по желанию.

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

Другим вариантом может быть аудиокодек без потерь, такой как FLAC внутри потокового формата контейнера. (As done by a Czech web radio station)

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

Смежные вопросы