загрузить данные волнового файла в буфер - PullRequest
0 голосов
/ 04 марта 2010

gcc 4.4.2 c89

У меня есть волновой файл: 8000 Гц 16 бит

Мне интересно, могу ли я загрузить необработанные данные этого волнового файла в буфер.

Большое спасибо за любые советы

Ответы [ 4 ]

1 голос
/ 04 марта 2010

Если вы хотите обработать звуковые сэмплы, вам лучше использовать библиотеку, которая интерпретирует звуковые данные для вас. Например libsndfile .

1 голос
/ 04 марта 2010

ИМХО лучшим способом было бы использовать связанный список с элементами, содержащими большие (1024 или более) массивы символов фиксированного размера.

1 голос
/ 04 марта 2010

Да, вы ищете для чтения двоичного файла в C. Примерно так:

FILE* f;
char buf[MAX_FILE_SIZE];
int n;

f = fopen("filename.bin", "rb");
if (f)
{
    n = fread(buf, sizeof(char), MAX_FILE_SIZE, f);
}
else
{
    // error opening file
}

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

Используются две ключевые функции C:

  • fopen, открывающий файл в двоичном режиме (флаг «rb»)
  • fread, который читает данные блока (полезно для двоичных потоков). Документировано здесь .
0 голосов
/ 23 марта 2016

Этот проект выгружает данные из файла WAVE в файл csv. Вы можете взломать его и получить массив, который сохраняется в CSV-файл.

https://github.com/dilawar/sound

Отказ от ответственности: я являюсь автором этого хранилища.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...