首先使用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. LinkedList源码疑问记录

    早上看linkedList源码时候,对于它的初始化一直不太明白.如下: transient int size = 0; /** * Pointer to first node. * Invariant ...

  2. Lua 5.3 参考手册

    转自:http://www.runoob.com/manual/lua53doc/manual.html 1 – 简介 Lua 是一门扩展式程序设计语言,被设计成支持通用过程式编程,并有相关数据描述设 ...

  3. .net core系列之《.net core中使用MySql以及Dapper》

    当我们决定使用.Net Core开发的时候,就放弃使用SqlServer的打算吧.那应该选择哪个数据库呢?一般选择MySql的比较多. 接下来我们来演示在.Net Core中使用MySQL吧. 1.原 ...

  4. 将eChart图片利用POI导出到Excel

    在使用POI进行将数据导出到Excel时, 若要将eChart在前端生成的统计图(如柱状图.折线图.饼图等)一并导出,使用POI在后台构建数据图比较复杂,因此我选择将eChart在前端的统计图的bas ...

  5. 万能的JDBC工具类。通过反射机制直接简单处理数据库操作

    package com.YY.util; import java.io.IOException; import java.io.InputStream; import java.sql.Connect ...

  6. Oracle案例09——ORA-12154: TNS:could not resolve the connect identifier specified

    DG处理的问题还是蛮多的,但这次遇到一个比较奇葩的事情,表面配置.网络都没啥问题,但主备的同步始终有问题,经过多次调整参数.重新部署问题依旧,最终还是求助mos问题得以解决,现将处理过程记录如下: 一 ...

  7. C# 日期和时间的字符串表示形式转换为其等效的DateTime(stringToDateTime)

    一. 标准的日期和时间字符串转换 将日期和时间的字符串表示形式转换为其等效的DateTime对象是开发中很常见的类型转换,我们最常使用的方式是: // 如果s为null,抛出ArgumentNullE ...

  8. sort、sorted、heapq、bisect排序

    aa=[1,2,8,7,0,13,28,3]sorted(aa) #原list不变,从小到大排序 aa.sort() #改变原lisaa.sort(reverse=True) #反转 for i in ...

  9. [转发]CPU个数、CPU核心数、CPU线程数

    我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之说,下面文本就来解释一下CPU的核心数与 ...

  10. 利用describe( )中的count来检查数据是否缺省

    #-*- coding: utf-8 -*- #在python的pandas库中,只需要读入数据,然后使用describe()函数就可以查看数据的基本情况 import pandas as pd in ...