首先使用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.: cannot open shared object file: No such file or directory

除了找不到 libavdevice.so.56 这个库,其实还有可能找不到 libmp3lame.so.0
解决方法如下:(以libavdevice.so.56为例)
首先用find找到库在哪

find / -name libavdevice.so.

发现在

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

然后即可对症下药

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

在阿里云的CentOS 6.5 上面安装 timidity++ 和 ffmpeg(含libmp3lame) 实现命令行将midi转换为mp3的更多相关文章

  1. 阿里云ECS+CentOS 7.0+Docker+Redmine环境搭建

    前言 搭建Redmine环境可以选择使用分别安装Ruby+Rails+Redmine+MySQL的方式, 但是过程中需要解决各种扰人的依赖问题.Docker为我们提供的Plan B,方便,快捷. 安装 ...

  2. 阿里云Linux CentOS 7 Docker部署使用gogs搭建自己的git服务器

    一.前言 Git是目前优秀和流行的源代码管理工具.而GitHub是一个面向开源及私有软件项目的托管云平台,但开源免费,私有收费.而公司出于商业化等目的需要搭建自己的源代码托管服务器.通过网上了解Gog ...

  3. 阿里云服务器centos下安装配置svn服务器

      阿里云服务器centos下安装配置svn服务器 1.安装svn服务器端yum install subversion      从镜像下载安装svn服务器端中间会提示是否ok,输入y,确认安装成功提 ...

  4. 阿里云cenos 6.5 模板上安装 docker

    本章将介绍在阿里云的 Centos6.5 模板上安装 Docker 以及在 Ubuntu 14.04 模板上安装 Docker 的过程 Centos 6.5 模板上使用Docker 首先,通过 ssh ...

  5. 阿里云服务器CentOS 5.7(64位)安装配置LAMP服务器(Apache+PHP5+MySQL)

    一.快速安装Apache+PHP5+MySql ----------------------------------------------------- 补充:由于163的yum源上只有php5.1 ...

  6. 在阿里云的CentOS环境中安装django

    购买了一台阿里云主机.操作系统为CentOS 6.5.准备在上面跑Django做Web开发.因为CentOS自带的python版本号较低,安装Django先要安装新版本号python.还是费了点周折. ...

  7. 关于外网无法访问阿里云主机CentOs

    前两天阿里云ECS搞活动,所有买了个三年的Ecs,然后照着之前在虚拟机同样的搭建服务器,一切都很正常,可是 当我配置好防火墙和nginx之后,发现个问题,外网无法访问. 思考: 1.我的nginx没配 ...

  8. 阿里云服务器 CentOS 安装Mysql 5.6

    下载:https://dev.mysql.com/downloads/file/?id=471181   第一步: 安装mysql5姿势是要先安装带有可用的mysql5系列社区版资源的rpm包 [ro ...

  9. 关于阿里云ECS Centos 5/6/7 Linux Glibc库严重安全漏洞修复方法

    日前Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235.黑客可以通过gethostbyname系列函数实现远程代码执行,获取 ...

随机推荐

  1. java 反射和泛型

    反射 在计算机科学中,反射是指计算机程序在运行时(Run time)可以访问.检测和修改它本身状态或行为的一种能力.[1]用比喻来说,反射就是程序在运行的时候能够“观察”并且修改自己的行为. 要注意术 ...

  2. mvn install 时候报GBK编码错误解决办法

    在pom.xml里面 <properties> <!-- 文件拷贝时的编码 --> <project.build.sourceEncoding>UTF-</p ...

  3. C#des加密算法指定键的大小对于此算法无效

    api接口调用的时候,需要和java的进行加密通信,通信过程中用到DES加密,java那边DES的key为64位字符串,而之前c#的DES加密是key为8位 DESCryptoServiceProvi ...

  4. SQL Server ->> 高可用与灾难恢复(HADR)技术之 -- Windows故障转移群集

    WSFC 群集 (WSFC cluster)“Windows Server 故障转移群集”(WSFC) 群集是一组独立的服务器,它们共同协作以提高应用程序和服务的可用性. 故障转移群集实例 (Fail ...

  5. 集合、深浅copy

    集合set: 集合也和列表数组一样有增加,但是集合是真正的没有顺序的  所以集合无法查找的,并且集合的外观你看着好像是字典和列表的组合,因为它是用字典的括号一样 ,但是又是里面并没有键值对  只是一个 ...

  6. iOS8模糊效果UIVisualEffectView的使用

    iOS8模糊效果UIVisualEffectView的使用 效果: 源码: // // ViewController.m // EffectView // // Created by XianMing ...

  7. Python学习---Django的新工程设置模板

    该模板完全可以在创建好新工程后进行部分代码替换 创建app01的  python startapp app01   创建static子目录 settings.py """ ...

  8. Office Online Server 2016 部署和配置

    Office Online Server 2016 部署和配置https://wenku.baidu.com/view/65faf8de846a561252d380eb6294dd88d1d23d45 ...

  9. 在Django中使用Q()对象

    转载于:  http://www.smallerpig.com/1000.html 问题 一般我们在Django程序中查询数据库操作都是在QuerySet里进行进行,例如下面代码: >>& ...

  10. python BaseManager中register()的描述

    register(typeid[, callable[, proxytype[, exposed[, method_to_typeid[, create_method]]]]]) A classmet ...