LAME
本页为 林爽的技术笔记本 之一部分。
目录 |
背景知识
在高质量MP3制作之路中,提到了 LAME 压缩引擎。LAME 是一个开源的 MP3 编(解)码器,基于 GNU LGPL 发布。LAME 的名字,和不少其他开源软件一样,是递归定义的,它的意思是“LAME Ain't an MP3 Encoder”。
我们可以从它的主页[1]得到一份它最新版本的源代码,并且自己编译。这份源代码是 C 语言写成的平台无关的代码,即不论在 Windows, Linux, Mac 等各种平台上均可用支持标准的编译器来编译。当然,也可以到网上搜索一份别人编译好的 Win32 版的 lame.exe。当然,自己动手编译,还是最放心的。
为什么 LAME 只以源代码形式发布?
和其他很多开源软件不同, LAME 在 sourceforge.net 上没有提供不同平台的二进制代码。这是为了避免一些法律上的纠纷。据称,LAME 使用的一些 MP3 压缩算法处理技巧被 Fraunhofer-Institut for Integrated Circuits 拥有专利权。但是,LAME 开发组声称他们仅仅以源代码发布,可以认为是对这种专利算法的一种“描述”,本身不构成侵权。同时,还建议采用 LAME 有关库的软件开发商最好从专利权人处获得一张许可证。
作为一般用户,以学习、研究为目的编译一份 LAME 的代码,是符合中国法律规定的。
编译过程
准备工作
既然在 Windows 平台下编译 native 目标代码,自然还是选择 Microsoft Visual Studio 系列中的 C++ 编译器。我用的是免费的 Microsoft Visual C++ 2005 Express 版本(可以从微软的网站[2]上免费下载并安装)。不过,据称微软的 VC++ Express 开发组很早就决定,这个免费提供的工具不能一装好就被用于 native Windows 程序的开发,而默认只能进行.NET/CLR 的开发。怎么办?没关系,同样到微软的网站免费下载一套 Platform SDK[3],我写这篇文章的最新版本是 Windows Server 2003 R2。装好后,在 VC++ Express 的安装目录(即 %ProgramFiles%\Microsoft Visual Studio 8\VC)下面建一个新目录 PlatformSDK,再把 Platform SDK 安装目录下面的 Bin, Include 和 Lib 三个目录全部复制到刚刚建立的 PlatformSDK 目录下面。准备工作就做完了。
说明一下,这个 Windows Server 2003 R2 Platform SDK 的作用是供开发人员使用,得以用 Microsoft Visual Studio 开发各种平台上的程序。默认包含 Windows 2000,Windows XP (32位及64位平台),Windows Server 2003(32位及64位平台)的有关库文件。不过,安装好的不能(微软也不希望)立即与 VC++ Express 建立关联,所以需要我们手动复制一下。复制后,如果把 Windows Server 2003 R2 Platform SDK 删掉以节省950M的磁盘空间,是没有问题的。
开始编译
之后,打开 lame 源代码目录中的 lame_vc6.dsw 文件(默认直接用 VC++ Express 打开)。经过一系列版本转换,终于可以用上了。首先,将当前Solution中的工程“lame”(而不是“Adbg”)设为默认工程(右键点工程名lame,选“Set as StartUp Project”),再将Build/Configuration Manager中的编译选项改为“Release”。然后就可以Build/Build solution了。
Build之后,会发现有两个工程因为缺少头文件无法编译。一个是MP3x(MP3 frame analyzer),这个是基于 GTK 的,我们暂时用不上。另一个是lame ACM(符合Audio Compression Manager规范,这是微软提出的标准),也暂时不需要。如果想编译一下这两个工具,可以查看源代码各目录中的说明文件。编译好之后,我们可以在源码目录中找到 output 子目录。顺利的话,应该可以发现 lame.exe 和 lame_enc.dll 两个文件。好了,赶紧开一个 cmd 窗口试运行一下吧!
问答
Q: 一定要用VC++ Express吗?? A: 不一定,但使用VC++ Express是不用付钱的。如果你愿意买VS2005的话当然也可以。
有关链接
- ↑ LAME 主页
- ↑ Visual C++ 2005 Express
- ↑ Platform SDK 主页,含下载链接