Чтение файла .wav с помощью libsndfile в C

Я хочу прочитать файл .wav на C, аналогичный тому, что делает команда Matlab wavread. Я наткнулся на эту библиотеку http://www.mega-nerd.com/libsndfile/, которая кажется решением. Но может ли кто-нибудь объяснить, как установить эту библиотеку, чтобы я мог использовать ее функции? (Я никогда не делал этого раньше, поэтому, пожалуйста, помогите). Я попытался включить sndfile.h, но появляются ошибки типа cannot find -lsndfile-1.lib. Я считаю, что это потому, что я неправильно интегрирую библиотеку.


person Anand PA    schedule 09.07.2016    source источник
comment
Какая у вас среда (компилятор и IDE, если вы их используете)?   -  person MikeCAT    schedule 09.07.2016
comment
Компилятор MinGW в IDE codeBlocks   -  person Anand PA    schedule 09.07.2016


Ответы (1)


Первым делом нужно установить библиотеку (я выбрал libsndfile-1.0.28-w32-setup.exe, потому что я запускаю code::blocks с предустановленным MinGW codeblocks-17.12mingw-setup.exe и думаю, что по умолчанию у него 32-битный компилятор) и найдите эти три файла:

sndfile.h (у меня он находится по адресу C:\Program Files (x86)\Mega-Nerd\libsndfile\include)

libsndfile-1.lib (для меня C:\Program Files (x86)\Mega-Nerd\libsndfile\lib)

libsndfile-1.dll (C:\Program Files (x86)\Mega-Nerd\libsndfile\bin)

Затем щелкните правой кнопкой мыши свой проект и выберите Параметры сборки... › Поиск в каталогах › Компилятор и добавьте адрес каталога sndfile.h.

каталог компилятора

Затем вы переходите к Параметры сборки... ›Настройки компоновщика › Связать библиотеки: и добавляете адрес libsndfile-1.lib.

ссылка библиотека

Наконец, вы копируете libsndfile-1.dll рядом с местом, где будет создан файл .exe (у меня это MyProject\bin\Debug).

Вот простой пример кода:

#include <stdio.h>
#include <stdlib.h>
#include "sndfile.h"

int main(void)
{
  char *inFileName;
  SNDFILE *inFile;
  SF_INFO inFileInfo;
  int fs;

  inFileName = "noise.wav";

  inFile = sf_open(inFileName, SFM_READ, &inFileInfo);
  sf_close(inFile);

  fs = inFileInfo.samplerate;
  printf("Sample Rate = %d Hz\n", fs);

  return 0;
}

Выход:

Sample Rate = 44100 Hz

person alpereira7    schedule 14.11.2018