在阿里云的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.: 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的更多相关文章
- 阿里云ECS+CentOS 7.0+Docker+Redmine环境搭建
前言 搭建Redmine环境可以选择使用分别安装Ruby+Rails+Redmine+MySQL的方式, 但是过程中需要解决各种扰人的依赖问题.Docker为我们提供的Plan B,方便,快捷. 安装 ...
- 阿里云Linux CentOS 7 Docker部署使用gogs搭建自己的git服务器
一.前言 Git是目前优秀和流行的源代码管理工具.而GitHub是一个面向开源及私有软件项目的托管云平台,但开源免费,私有收费.而公司出于商业化等目的需要搭建自己的源代码托管服务器.通过网上了解Gog ...
- 阿里云服务器centos下安装配置svn服务器
阿里云服务器centos下安装配置svn服务器 1.安装svn服务器端yum install subversion 从镜像下载安装svn服务器端中间会提示是否ok,输入y,确认安装成功提 ...
- 阿里云cenos 6.5 模板上安装 docker
本章将介绍在阿里云的 Centos6.5 模板上安装 Docker 以及在 Ubuntu 14.04 模板上安装 Docker 的过程 Centos 6.5 模板上使用Docker 首先,通过 ssh ...
- 阿里云服务器CentOS 5.7(64位)安装配置LAMP服务器(Apache+PHP5+MySQL)
一.快速安装Apache+PHP5+MySql ----------------------------------------------------- 补充:由于163的yum源上只有php5.1 ...
- 在阿里云的CentOS环境中安装django
购买了一台阿里云主机.操作系统为CentOS 6.5.准备在上面跑Django做Web开发.因为CentOS自带的python版本号较低,安装Django先要安装新版本号python.还是费了点周折. ...
- 关于外网无法访问阿里云主机CentOs
前两天阿里云ECS搞活动,所有买了个三年的Ecs,然后照着之前在虚拟机同样的搭建服务器,一切都很正常,可是 当我配置好防火墙和nginx之后,发现个问题,外网无法访问. 思考: 1.我的nginx没配 ...
- 阿里云服务器 CentOS 安装Mysql 5.6
下载:https://dev.mysql.com/downloads/file/?id=471181 第一步: 安装mysql5姿势是要先安装带有可用的mysql5系列社区版资源的rpm包 [ro ...
- 关于阿里云ECS Centos 5/6/7 Linux Glibc库严重安全漏洞修复方法
日前Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235.黑客可以通过gethostbyname系列函数实现远程代码执行,获取 ...
随机推荐
- redis 序列化get、set获取不到原因记录
最近项目里面出现了个bug,把数据从数据库中读取后又存取到redis里面,之后再读取.奇怪的是,有一个 字段读取不到. public class Circle { private String id; ...
- HTML5-入门。
什么是HTML5? HTML5是超文本语言,不是编程语言,html5是html语言的最新版本,需要注意浏览器的兼容性问题. HTML5技术一般是指的是HTML5.CSS3.JavaScript三种技术 ...
- Linux常用命令(二)————压缩+解压
tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...
- 沉淀,再出发:PHP的简单使用
沉淀,再出发:PHP的简单使用 一.前言 关于PHP,笔者在本科的时候就听到了太多太多,可惜虽然看了很多的教材,听到了无数遍,也没有系统性的整理过和学习过这方面的知识,这点无论什么时候想起来都是一种遗 ...
- python的sys和os模块
一.sys sys.argv:实现从程序外部向程序传递参数. 其中sys.argv[0]为脚本的名称,所以要判断是否有参数传入可以:if len(sys.argv) > 1. sys.exi ...
- python中的装饰
在面向对象(OOP)的设计模式中,decorator被称为装饰模式.OOP的装饰模式需要通过继承和组合来实现,而Python除了能支持OOP的decorator外,直接从语法层次支持decorator ...
- 根据自增ID生成不重复序列号
网上看到一个例子,源地址:https://www.aliyun.com/jiaocheng/536419.html 借鉴修改一下 实现根据long类型的用户ID生成6位随机邀请码,并且根据邀请码能算出 ...
- 随手练——大量级阶乘 - HDU-2674 N!Again
N!Again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- laravel 多态映射(打赏为例)
迁移: public function up() { Schema::create('rewards', function (Blueprint $table) { $table->increm ...
- Python 多线程 进程与线程相关概念 (一)
0x00 并行和并发 并行:同时做某些事,可以互不干扰的同一时刻做几件事. 并发:也是同时做某些事,但是强调,同一时刻做了几件事. 0x01 并发的解决: 1)队列.缓冲区: 排队就是队列,先进先出. ...