首先使用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