在阿里雲的CentOS 6.5 上面安裝 timidity++ 和 ffmpeg(含libmp3lame) 實現命令行將midi轉換為mp3


首先使用yum安裝需要的組件

yum install -y automake autoconf libtool gcc gcc-c++ yasm yasm-devel

然后從sourceforge下載timidity++並解壓(默認用root用戶在~目錄操作)

wget http://sourceforge.net/projects/timidity/files/TiMidity%2B%2B/TiMidity%2B%2B-2.13.0/TiMidity%2B%2B-2.13.0.tar.gz/download
tar -zxvf download  
cd T* 
  • 壓縮包被重命名為download了,不過不影響解壓

timidity不光能把midi轉成wav格式的音樂,還能實現播放,網絡播放等很多功能,所以只是想做midi轉wav的轉換器的話,需要配置,官方文檔說只想做轉換器的話,設置 –enable-audio=no 即不使用聲卡進行播放,實際上阿里雲的雲主機根本沒有聲卡,所以第一次安裝按照坑爹的官方指引,如下configure

./configure --prefix=/usr/local/timidity --without-x --enable-audio=no

 


按照這個configure最后能安裝成功,但是不管運行什么命令都報錯,提示打不開輸出設備,然后參考stackoverflow的帖子 [http://stackoverflow.com/questions/4235140/timidity-couldnt-open-output-device]
由於坑爹的timidity++哪怕只用來轉換,也需要聲卡,所以我們設置一個虛擬的聲卡即可

cd /dev
ln -s null dsp

 


然后

vim /etc/udev/rules.d/z42_fake_dsp.rules

 


在其中寫入

KERNEL=="null", SYMLINK+="dsp", OPTIONS+="link_priority=99"

 

並保存退出,這樣重啟后虛擬的聲卡就不會消失了

 

由於設置的虛擬聲卡掛載為 /dev/dsp 所以根據官方安裝指引如下配置

./configure --prefix=/usr/local/timidity --enable-audio=oss

 

然后就是安裝兩部曲

make
make install

 

 

注意:我這配置的時候把默認安裝路徑 /usr/local/ 修改到了/usr/local/timidity 所以后面還要配置 $PATH 不然shell 會找不到 command

按照–prefix=/usr/local/timidity 配置安裝成功后,需要一個配置文件,配置文件在

/usr/local/timidity/share/timidity/timidity.cfg

 


默認可以到

http://www.onicos.com/staff/iz/timidity/dist/cfg/timidity.cfg

 


下載到,還有其他的補充配置文件(如有補充配置文件,需要主配置文件source包含進來),例如

http://www.onicos.com/staff/iz/timidity/dist/cfg/xgmap.cfg

 


在默認的配置文件中,最后面加上一句

soundfont /usr/local/timidity/share/soundfont/gm.sf2

 


我默認把音色文件放到了 /usr/local/timidity/share/soundfont ,實際放在哪配置文件中就寫哪

 

然后就是安裝lame,比較簡單

wget http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.5.tar.gz/download
tar -zxvf download
cd lame*
./configure --prefix=/usr/local --enable-shared
make
make install

 


然后安裝ffmpeg (非全部安裝,我只要用到音頻轉換)

wget http://ffmpeg.org/releases/ffmpeg-2.8.tar.bz2
tar -jxvf ffmpeg-2.8.tar.bz2 
cd ff*

 


ffmpeg默認安裝在 /usr/local 我將其改到了 /usr/local/ffmpeg 中,所以如下配置

./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-libmp3lame
make
make install

 


然后ffmpeg就安裝完了

 

接着配置 $PATH 讓系統加載 timidity++ 和 ffmpeg 的lib

cd ~
vim .bash_profile

 


將其中的PATH后面加上兩個庫的lib,我修改為如下

PATH=$PATH:$HOME/bin:/usr/local/timidity/bin:/usr/local/ffmpeg/bin

 


然后保存生效

source ~/.bash_profile

 

 

timidity++ 的用法如下

timidity input.mid -Ow -o output.wav

 

 

備注:需要自己找sf2格式的音色庫並配置好,否則不能轉換

接着試一下ffmpeg能否運行

ffmpeg -version

 


果然報錯了

ffmpeg: error while loading shared libraries: libavdevice.so.56: cannot open shared object file: No such file or directory

 

除了找不到 libavdevice.so.56 這個庫,其實還有可能找不到 libmp3lame.so.0
解決方法如下:(以libavdevice.so.56為例)
首先用find找到庫在哪

find / -name libavdevice.so.56

 

發現在

/usr/local/ffmpeg/lib/libavdevice.so.56

 

然后即可對症下葯

cd /etc/ld.so.conf.d
vim libavdevice.conf

 


寫入

/usr/local/ffmpeg/lib/

 


保存退出
然后

ldconfig -v

 


確認是否加載成功

 

全部正確安裝后使用以下命令即可將midi轉換為mp3

timidity input.mid -Ow -o - | ffmpeg -i - -acodec libmp3lame -ab 256k out.mp3

 

單獨使用的方法

timidity input.mid -Ow -o middleoutput.wav

 

 
ffmpeg -i middleoutput.wav -acodec libmp3lame -ab 256k finaloutput-256k.mp3

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM