现在网络朝宽带网发展越来越快了,但服务器托管环境要变化还是要很多的¥,所以能节省一分就是一分。在网络上音频文件通常使用mp3格式存储,mp3格式音质可以压得比较好,但体积稍嫌有些大,而压低了音质的话就比较难听,而且也压得还不够小。wma文件在这点上相比mp3优化很多。经测试,使用24k码率下,5MB的mp3文件可压到1MB左右的wma,在我这样的烂耳朵下虽然分得出音质的胜负,但还尚能听。如果有朋友要做一个翻唱或乱录音的网站,那么把文件压成wma格式就合适不过了。
在网上搜了几十页,都是讲述如何将wma转换为mp3的,零星有几个mp3转wma的例子,可惜都是windows下的版本,有些还需要花钱。
于是干脆祭出ffmpeg,ffmpeg相信很多处理媒体文件的朋友都用过,是非常之强大,不但可以处理流行的flv等格式,我之前一直用来转换视频格式(asf、3gp、rm……)到wmv的,wmv既然能转,那么wma当然也一定能!
在网上搜寻一阵,找到了ffmpeg转wma的执行命令:
ffmpeg -y -ab 24 -ar 22050 -acodec wmav2 -i test.mp3 test.wma
其中-y参数是指直接覆盖存在文件而不用确认;-ab参数是码率;-ar参数采样率;-acodec是指定压缩格式;-i是指输入的文件;最后在敲上输出的文件就可以了。
对文件字节数影响最大的就是码率,wma文件最小的码率就是24k,不能再小了,唉,我还想用12k一试呢。
于是在命令行运行该命令,没有能成功,因为我两年前编译的这个ffmpeg并没有能支持wma。
于是到ffpeg的源码目录下(嘿嘿,这么多年了,这个源码目录居然还存在),忘了怎么编译?执行:
ffmpeg | head
就找回了原先的编译参数,是不是要加一个参数就能支持wma,难道还要装一个lame这样的东东么?敲上
./configure --help | grep wma
没有结果,仔细看了一遍help,也确实没有发现有关的东西。
于是在源码目录敲一下:
ss
请允许我有如此跳跃性的思维,其实我是没思路的时候,习惯性随手敲的,ss在我的机器上配置为svn up的快捷键。
这样一敲结果出现神奇现象,这个目录居然是一个svn拿下来的目录,而且,那么多年了,居然还能从这个svn地址check下东西,svn团队居然能把一个svn地址维护那么多年,一直没中断,实在是一大奇迹。
看一下这个传奇的svn地址:
svn://svn.mplayerhq.hu/ffmpeg/trunk
朋友们可以直接敲:
svn co svn://svn.mplayerhq.hu/ffmpeg/trunk
就可以拿下ffmpeg的所有东西了,我不知道ffmpeg现在有没有出tar.gz的包裹,前些年我就是直接从这个svn地址checkout下来的了。
多年没更新了,svn up的时间还比较长……
拿下最新的源码后,直接编译一下看看,我的编译参数是极简的:
./configure --enable-gpl --disable-debug --prefix=/data/ffmpeg --enable-libmp3lame --enable-pthreads --enable-nonfree
我用的系统是ubuntu,在ubuntu下有ffmpeg的apt,但当时安上去后发现没有声音,于是下载了ffmpeg的svn,并自己装上lame,才创出了声音。lame记得是用apt安装的,不很麻烦:
apt-get install lame liblame-dev
注意要安上liblame-dev的开发包,否则还是会不能支持mp3。
然后就是:
make; make install
无聊的过程。
装完后可以一测,嗯,这回能支持了。
总结(写到后面我总有点不耐烦):
###############################
#系统是ubuntu6
apt-get install lame liblame-dev
svn co svn://svn.mplayerhq.hu/ffmpeg/trunk
cd trunk
./configure --enable-gpl --disable-debug --prefix=/data/ffmpeg --enable-libmp3lame --enable-pthreads --enable-nonfree
make -j10; make install
###
然后就可以用了:
/data/ffmpeg/ffmpeg -y -ab 24 -ar 22050 -acodec wmav2 -i test.mp3 test.wma
附带转wmv的,我怕不支持,也小测一把:
ffmpeg -y -acodec mp3 -vcodec wmv2 -i test.rm test.wmv
ffmpeg -y -acodec wmav2 -vcodec wmv2 -i test.rm test.wmv
都可以。