libsndfile动态库在VS2015下的调用以及读取wav文件.docx
文本预览下载声明
创建一个控制台工程
把libsndfile-1.lib文件拷贝到工程里面。在工程选项里面添加lib文件。
项目—属性
链接器—输入
附加依赖项—编辑
然后点击确定,应用。
拷贝头文件sndfile.h到工程目录,添加到工程。
右击头文件,添加现有项
编写如下代码:
#include?stdio.h
#include?stdlib.h
#include?sndfile.h
void save(short?*b1,?int?n);
int?main(int?argc,char?*argv[])
{
SF_INFO sf_info;
SNDFILE?*snd_file;
SNDFILE?*fpOut;
SF_INFO sf_info_out;
short?*buf1;
//float?*buf1;
sf_count_t cout;
sf_info.format?=?0;
snd_file?=?sf_open(argv[1],SFM_READ,sf_info);
printf?(Using %s.\n,?sf_version_string?())?;
printf(File Name : %s\n,?argv[1]);
printf(Sample Rate : %d\n,?sf_info.samplerate);
printf(Channels : %d\n,?sf_info.channels);
printf(Sections : %d\n,?sf_info.sections?);
printf(Frames : %d\n,?(int)sf_info.frames?);
buf1?=?(short?*)malloc(sf_info.frames?*sizeof(short)*2);
sf_info_out.channels?=?sf_info.channels;
sf_info_out.samplerate?=?sf_info.samplerate;
sf_info_out.frames?=?sf_info.frames;
sf_info_out.format?=?(SF_FORMAT_WAV|SF_FORMAT_PCM_16|SF_ENDIAN_LITTLE);
fpOut?=?sf_open(argv[2],SFM_WRITE,sf_info_out);
if(fpOut?==?NULL)
{
printf(open out file failed\n);
exit(1);
}
while(?sf_read_short(snd_file,?buf1,?480)?==?480)
{
sf_write_short(fpOut,buf1,480);
}
free(buf1);
sf_close(snd_file);
sf_close(fpOut);
return 0;
}
输入一个*.wav文件,写的也是*.wav文件。
编译通过运行的时候,提示缺少dll文件,把libsndfile-1.dll拷贝到程序运行的目录。生成的wav文件播放起来声音正常。
参考出处: HYPERLINK /uidid-4057498.html /uidid-4057498.html
方法二:/2068559.html
HYPERLINK /liyuanbhu/article/detailslibsndfile 用法简介: HYPERLINK /liyuanbhu/article/details/liyuanbhu/article/details
libsndfile官网:/libsndfile/
显示全部