Я хотел бы отправить содержимое аудиофайла в другую систему по сети, используя сокет. Обе системы работают в операционной системе Windows. Существует ли учебное пособие о том, как сохранить аудиосодержание в массиве C ++ или типе данных Stringstream, чтобы было проще отправить его на другой узел.
Я в основном хочу знать, как извлечь байты данных из аудиофайла.
Самое простое, что нужно сделать, это просто отправить данные кусками байтов. Если вы начинаете с аудио-файла, просто откройте его, как любой другой двоичный файл с чем-то вроде file = fopen(filename, "rb");
(где имя файла — это имя аудиофайла). Затем введите цикл, чтобы прочитать куски байтов, пока не дойдете до конца файла. Просто используйте что-то вроде bytes_read = fread(buffer, sizeof(char), read_size, file);
где buffer
должно быть char
массив как минимум размера read_size
скажем, 1024. После каждого fread
Вы можете сделать свою сеть отправить вызов. Кроме того, вы можете сначала прочитать весь файл, а затем отправить его по частям. Ваш звонок. В любом случае, когда вы достигнете конца файла, отправьте какой-то сигнал, что вы достигли конца. Принимающая система должна взять эти порции и вызвать fwrite
создать новый аудиофайл. Вы можете либо добавлять каждый блок по мере его поступления, либо буферизовать все, пока не дойдете до конца, а затем записать все это.
soundfile ++ можно использовать, если у вас есть только файлы WAV. Проверьте демо-программы readtest и writetest здесь http://sig.sapp.org/doc/examples/soundfile/