您当前的位置: 首页 >  windows

龚建波

暂无认证

  • 3浏览

    0关注

    313博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Windows下利用vcpkg安装libsndfile音频库

龚建波 发布时间:2019-08-09 23:05:26 ,浏览量:3

1.安装vcpkg

首先是编译器。我的编译器是VS2015/2017,如果使用2017的话需要先把英文语言包装上(Visual Studio Installer-->修改-->语言包)。另外,在我用vcpkg安装第三方库的时候他还提示需要安装git和cmake(提示里需要的版本比较新,可以直接去下载最新的先安装,免得他自动下载时由于网络问题导致失败)。

接下来就是vcpkg的安装,vcpkg是一个开源的库集成器,能让我们更轻松的集成开源第三方库。

vcpkg的使用教程:Visual Studio开源库集成器Vcpkg全教程--利用Vcpkg轻松集成开源第三方库_visual studio vcpkg_Achilles的博客-CSDN博客

vcpkg的github链接:GitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS

具体的使用方式参见上面的教程。不过安装也很简单,git clone之后,在PowerShell里执行vcpkg目录下的bootstrap-vcpkg.bat,会自动进行编译,之后我们使用生成的vcpkg.exe来执行命令即可。

2.安装libsndfile及其依赖库

libsndfile是一个C语言库,用于读取和写入包含采样音频数据的文件。

libsndfile的github链接:GitHub - libsndfile/libsndfile: A C library for reading and writing sound files containing sampled audio data.

其github主页上有构建方法(windows下也是推荐vcpkg),不过他推荐的只是依赖库install静态库,我把libsndfile也install的静态库(为了看源码和示例,也clone了代码)。命令列表如下(先把三个依赖库装了):

.\vcpkg.exe install libogg:x86-windows-static
.\vcpkg.exe install libvorbis:x86-windows-static
.\vcpkg.exe install libflac:x86-windows-static
.\vcpkg.exe install libsndfile:x86-windows-static

安装成功一个库的提示类似这样的:

3.在VS2017中引入libsndfile库 

先配置第三方库,参照在VS中添加lib库的三种方法_vs添加lib_hercs的博客-CSDN博客,我用的链接中的第一种方式。

然后直接把示例的代码copy过来,测试下能不能正常使用(示例里除了C的,还有cs后缀(C#)和cc后缀(C++)的,因为我用C++,就copy的C++那个)。毫无意外,完美运行,接下来就可以准备进一步学习这个库了。

#include	
#include	

#include	

#define		BUFFER_LEN		1024

static void create_file(const char * fname, int format)
{
	static short buffer[BUFFER_LEN];
	SndfileHandle file;
	int channels = 2;
	int srate = 48000;

	printf("Creating file named '%s'\n", fname);
	file = SndfileHandle(fname, SFM_WRITE, format, channels, srate);
	memset(buffer, 0, sizeof(buffer));
	file.write(buffer, BUFFER_LEN);
	puts("");
}

static void read_file(const char * fname)
{
	static short buffer[BUFFER_LEN];
	SndfileHandle file;
	file = SndfileHandle(fname);

	printf("Opened file '%s'\n", fname);
	printf("    Sample rate : %d\n", file.samplerate());
	printf("    Channels    : %d\n", file.channels());
	file.read(buffer, BUFFER_LEN);
	puts("");
}

int main(void)
{
	const char * fname = "test.wav";

	puts("\nSimple example showing usage of the C++ SndfileHandle object.\n");
	create_file(fname, SF_FORMAT_WAV | SF_FORMAT_PCM_16);
	read_file(fname);

	puts("Done.\n");
	system("pause");
	return 0;
} 

完结。 

关注
打赏
1655829268
查看更多评论
立即登录/注册

微信扫码登录

0.0449s