speex里提供的resample代码

之前不是做了个东方游戏的音乐ogg vorbis化的工具吗,现在xiph又出了一个新的编码叫做opus,于是想试试。不过它原生支持的是48kHz采样率,没有44.1kHz。看官方的说明,是推荐在需要的时候resample而不是更改代码让它支持44.1kHz。

本人对resample算法又没有研究,自然第一个想到的是去找现成的代码。网上搜索了一下,gpl啊lgpl协议下的代码倒是不少,这些协议都对私有软件不太友好。以后万一要做私有软件的话这些库就不能用了。

于是想着找个协议宽松一点的吧,网上看到有人推荐speex里面的resample。找是找来了不过一开始怎么样就是编译不过去。然后看到有人说opus_tools那一包代码里面也包含了这个resample,所以去参考了一下那边是怎么调用的。

最后得出的结论是要定义这些宏:

#define OUTSIDE_SPEEX
#define RANDOM_PREFIX 这里填入你自己的一些字符
#define HAVE_GETOPT_H 1
#define FLOATING_POINT 1
#define USE_ALLOCA 1
#define SPX_RESAMPLE_EXPORT

然后需要的文件有

arch.h
resample.c
speex_resampler.h
stack_alloc.h

嗯,挺好,bsd协议,可以不开源的情况下静态链接。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>