визуальное сохранение аудио файла в массив / поток строк переполнение стека

Я хотел бы отправить содержимое аудиофайла в другую систему по сети, используя сокет. Обе системы работают в операционной системе Windows. Существует ли учебное пособие о том, как сохранить аудиосодержание в массиве C ++ или типе данных Stringstream, чтобы было проще отправить его на другой узел.

Я в основном хочу знать, как извлечь байты данных из аудиофайла.

2

Решение

Самое простое, что нужно сделать, это просто отправить данные кусками байтов. Если вы начинаете с аудио-файла, просто откройте его, как любой другой двоичный файл с чем-то вроде file = fopen(filename, "rb"); (где имя файла — это имя аудиофайла). Затем введите цикл, чтобы прочитать куски байтов, пока не дойдете до конца файла. Просто используйте что-то вроде bytes_read = fread(buffer, sizeof(char), read_size, file); где buffer должно быть char массив как минимум размера read_sizeскажем, 1024. После каждого freadВы можете сделать свою сеть отправить вызов. Кроме того, вы можете сначала прочитать весь файл, а затем отправить его по частям. Ваш звонок. В любом случае, когда вы достигнете конца файла, отправьте какой-то сигнал, что вы достигли конца. Принимающая система должна взять эти порции и вызвать fwrite создать новый аудиофайл. Вы можете либо добавлять каждый блок по мере его поступления, либо буферизовать все, пока не дойдете до конца, а затем записать все это.

1

Другие решения

soundfile ++ можно использовать, если у вас есть только файлы WAV. Проверьте демо-программы readtest и writetest здесь http://sig.sapp.org/doc/examples/soundfile/

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector