現在網絡朝寬帶網發展越來越快了,但伺服器託管環境要變化還是要很多的¥,所以能節省一分就是一分。在網絡上音頻文件通常使用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
都可以。