利用ffmpeg在linux下将mp3文件转换为wma

  现在网络朝宽带网发展越来越快了,但服务器托管环境要变化还是要很多的¥,所以能节省一分就是一分。在网络上音频文件通常使用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

  都可以。

类别:Linux技术  来源:本站原创  作者:hpping  日期:2009-05-15 14:01

上一条:在linux下使用noatime提升文件系统性能
下一条:10个你必须掌握的超酷VI命令技巧