libsndfile动态库在VS2010下面的调用

1.创建一个控制台工程。
2.把libsndfile-1.lib文件拷贝到工程里面。在工程选项里面添加lib文件。



3.拷贝头文件sndfile.h到工程目录,添加到工程。
4.编写如下代码:

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "sndfile.h"

  4. void save(short *b1, int n);
  5. int main(int argc,char *argv[])
  6. {
  7.     SF_INFO sf_info; 
  8.     SNDFILE *snd_file;
  9.     SNDFILE *fpOut;
  10.     SF_INFO sf_info_out;
  11.     short *buf1; 
  12.     //float *buf1; 
  13.     sf_count_t cout;

  14.     sf_info.format = 0; 
  15.     snd_file = sf_open(argv[1],SFM_READ,&sf_info);
  16.     

  17.     printf ("Using %s.\n", sf_version_string ()) ; 
  18.     printf("File Name : %s\n", argv[1]); 
  19.     printf("Sample Rate : %d\n", sf_info.samplerate); 
  20.     printf("Channels : %d\n", sf_info.channels); 
  21.     printf("Sections : %d\n", sf_info.sections ); 
  22.     printf("Frames : %d\n", (int)sf_info.frames ); 

  23.     buf1 = (short *)malloc(sf_info.frames *sizeof(short)*2); 
  24.   
  25.     sf_info_out.channels = sf_info.channels;
  26.     sf_info_out.samplerate = sf_info.samplerate;
  27.     sf_info_out.frames = sf_info.frames;
  28.     sf_info_out.format = (SF_FORMAT_WAV|SF_FORMAT_PCM_16|SF_ENDIAN_LITTLE);
  29.     fpOut = sf_open(argv[2],SFM_WRITE,&sf_info_out);
  30.     if(fpOut == NULL)
  31.     {
  32.         printf("open out file failed\n");
  33.         exit(1);
  34.     }

  35.     while( sf_read_short(snd_file, buf1, 480) == 480)
  36.     {
  37.         sf_write_short(fpOut,buf1,480);
  38.     }


  39.     free(buf1); 
  40.     sf_close(snd_file);
  41.     sf_close(fpOut);
  42.     return 0;
  43. }


输入一个*.wav文件,写的也是*.wav文件。


编译通过
运行的时候,提示缺少dll文件,把libsndfile-1.dll拷贝到程序运行的目录。生成的wav文件播放起来声音正常。

转载于:https://my.oschina.net/mickelfeng/blog/330162

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值