Windows上利用vcpkg安装libsndfile音频库

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	<cstdio>
#include	<cstring>

#include	<sndfile.hh>

#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;
} 

完结。 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龚建波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值