文档章节

Linux编译ffmpeg并转换MP3到AMR

飞晏
 飞晏
发布于 2012/10/23 10:52
字数 811
阅读 4812
收藏 10

AMR格式是智能手机上的常用音频文件格式,比如MP3格式的压缩比大,但是文件比MP3小,所以在移动互联项目中应用比较广泛。去年年底协助联想研究院开发一款预装产品过程中需要使用到MP3格式和AMR格式的互相转换,服务器环境为CentOS 6.0,过程如下。

1. 首先安装系统基础环境

RHEL & CentOS 系列:yum install -y automake autoconf libtool gcc gcc-c++

Debian & Ubuntu 系列:apt-get install automake autoconf libtool gcc gcc-c++

2. 下载最新的FFMpeg源码包

FFMpeg官方下载地址:http://ffmpeg.org/download.html

一般直接使用最新版本,下载完成后解压缩,进入源码文件夹,运行“./configure --help”查看帮助,这里主要是为了确认需要安装的扩展,有些扩展默认是已经开启的,有些是需要单独下载扩展源码包进行编译的。以我的需求为例,需要单独编译yasm、lame、OenCore AMR、AmrNB和AmrWB,其中lame是MP3解码器。

3. 编译所需源码包

从各个官方地址下载上述五种源码包,为了保证兼容最新版本的ffmpeg,请务必也下载最新版本的源码:

yasmhttp://yasm.tortall.net/Download.html

lamehttp://lame.sourceforge.net/download.php

OenCore AMRhttp://sourceforge.net/projects/opencore-amr

AmrNB & AmrWBhttp://www.penguin.cz/~utx/amr

分别解压缩并编译上述源码包,直接使用“./configure && make && make install”即可。

4. 编译FFMpef

回到刚才的FFMpeg源码目录,打开所需扩展并且编译FFMpeg:

./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared

make && make install

ldconfig

最后写入config后,终端运行ffmpeg命令,出现success和已安装的扩展,则运行成功。

5. 可能遇到的问题

ffmpeg默认安装目录为“/usr/local/lib”,有些64位系统下软件目录则为“/usr/lib64”,编译过程中可能会出现“ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory”等类似的错误,解决办法是建立软链接或者移动库文件到相应的目录:

ln -s /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0

mv /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0

6. 使用方法

MP3转换AMR: ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr

AMR转换MP3: ffmpeg -i 1.amr 1.mp3

其他需求使用方法参考帮助,其中-i意味输入,ac和ar代表音频的码率和赫兹这些概念,使用之前请咨询客户端开发工程师。

目前可以总结的暂时只有这么多,如有问题,请提问。下面之前我编译的一个完整源码包和自动编译安装的shell脚本:

#!/bin/sh
echo "--------------------------"
echo "Start Installing..."
echo "--------------------------"
  
echo "--------------------------"
echo "0. Tar Packages..."
echo "--------------------------"
for i in *.tar.gz; do tar -xzvf "$i"; done
for i in *.tar.bz2; do tar -xjvf "$i"; done
  
echo "--------------------------"
echo "1. Install yasm..."
echo "--------------------------"
cd yasm-1.2.0
./configure && make && make install
cd ..
  
echo "--------------------------"
echo "2. Install lame..."
echo "--------------------------"
cd lame-3.99.4
./configure && make && make install
cd ..
  
echo "--------------------------"
echo "3. Install OenCore AMR..."
echo "--------------------------"
cd opencore-amr-0.1.3
./configure && make && make install
cd ..
  
echo "--------------------------"
echo "4. Install AmrNB..."
echo "--------------------------"
cd amrnb-10.0.0.0
./configure && make && make install
cd ..
  
echo "--------------------------"
echo "5. Install AmrWB..."
echo "--------------------------"
cd amrwb-10.0.0.0
./configure && make && make install
cd ..
  
echo "--------------------------"
echo "Finnal. Install FFMpeg..."
echo "--------------------------"
cd ffmpeg-0.10
./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared
make && make install
ldconfig
cd ..
  
echo "--------------------------"
echo "FFMpeg Install Successful"
echo "Example:: ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr"
echo "Enjoy it......"
echo "--------------------------"


本文转载自:http://www.feiyan.info/13.html

共有 人打赏支持
飞晏

飞晏

粉丝 50
博文 4
码字总数 179
作品 0
高级程序员
私信 提问
加载中

评论(9)

以诺
以诺
2
一只小桃子
一只小桃子
cd lame-3.99.5
./configure && make && make install 我明明已经安装了mp3的东西,但是编译ffmpeg的时候,还是报libmp3lame >= 3.98.3 not found,换了台机器还是这样。
longtaixu
longtaixu

引用来自“指尖缘”的评论

amr 转 mp3 时 出现 input/ output error
你怎么解决的?这个问题???请告知。。。我也遇到了。
哈哈__哈哈
哈哈__哈哈

引用来自“飞晏”的评论

引用来自“邓攀”的评论

引用来自“飞晏”的评论

引用来自“指尖缘”的评论

可以上传 amr 时 自动 转为 mp3 吗?

可以。我们之前就是PHP调用Shell做的

你是自己的服务器么?一般服务器不给调用shell的功能吧.
这个莫非得用php_ffmpeg组件么?是一个php的扩展

对,这个没有root用户组的权限肯定是不行

好吧,我去跟服务器管理员联络下
飞晏
飞晏

引用来自“邓攀”的评论

引用来自“飞晏”的评论

引用来自“指尖缘”的评论

可以上传 amr 时 自动 转为 mp3 吗?

可以。我们之前就是PHP调用Shell做的

你是自己的服务器么?一般服务器不给调用shell的功能吧.
这个莫非得用php_ffmpeg组件么?是一个php的扩展

对,这个没有root用户组的权限肯定是不行
哈哈__哈哈
哈哈__哈哈

引用来自“飞晏”的评论

引用来自“指尖缘”的评论

可以上传 amr 时 自动 转为 mp3 吗?

可以。我们之前就是PHP调用Shell做的

你是自己的服务器么?一般服务器不给调用shell的功能吧.
这个莫非得用php_ffmpeg组件么?是一个php的扩展
指尖缘
指尖缘
amr 转 mp3 时 出现 input/ output error
飞晏
飞晏

引用来自“指尖缘”的评论

可以上传 amr 时 自动 转为 mp3 吗?

可以。我们之前就是PHP调用Shell做的
指尖缘
指尖缘
可以上传 amr 时 自动 转为 mp3 吗?
linux下使用ffmpeg将amr转成mp3

接到需求要在Linux环境下将amr转换为mp3,windows下直接使用第三方jar包封装的exe方法即可,但不支持Linux,上网爬完资料说是用ffmpeg加上amr插件可以实现,根据教程尝试了一下: 1. 首先安装...

伊森
2015/01/27
0
10
linux下使用ffmpeg将amr转成mp3

接到需求要在Linux环境下将amr转换为mp3,windows下直接使用第三方jar包封装的exe方法即可,但不支持Linux,上网爬完资料说是用ffmpeg加上amr插件可以实现,根据教程尝试了一下: 1. 首先安装...

huangxuan258
2018/04/24
0
0
安装和使用ffmpeg转换视频为flv文件(windows和linux)

1、环境winxp-sp2下: 从 http://ffdshow.faireal.net/mirror/ffmpeg/ 下载 最新版本的 FFMpeg.exe直接用就行(须rar解压)。 以下的东西是为对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等)...

红薯
2010/03/04
6K
4
完美解决:Java微信语音amr格式转mp3格式,兼容Linux/Mac/Windows,支持Maven

原文出处:dadiyang 少费话,先上代码 引入 maven 依赖 调用 AudioUtils.amrToMp3 方法 三行代码搞定格式转换 public void amrToMp3() { } 探索过程 最近接到基于微信公众号开发的需求,在处...

dadiyang
2018/12/15
0
0
CentOs 下安装 ffmpeg 以及添加 ogg 音频支持

简单介绍 FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能[1],包含了libavcodec ─这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频...

书一
2013/12/25
0
8

没有更多内容

加载失败,请刷新页面

加载更多

推荐一款接口 API 设计神器!

今天栈长给大家推荐一款接口 API 设计神器,传说中的,牛逼哄洪的 Swagger,它到底是什么?今天为大家揭开谜底! Swagger是什么? 官网:https://swagger.io/ Swagger 如官网所示,它是最好的...

Java技术栈
31分钟前
5
0
AMD直奔5nm!这一步棋下得妙

AMD今年将推出采用7nm工艺的第二代EPYC霄龙、第三代Ryzen锐龙处理器,其中后者已经在CES 2019上公开首秀,性能追评i9-9900K,功耗则低得多。 虽然被称为“女友”的GlobalFoundries临时决定放...

linuxCool
36分钟前
3
0
《Migrating to Cloud-Native Application Architectures》学习笔记之Chapter 1. The Rise of Cloud-Native

是什么让互联网公司实现了快速增长? Speed of innovation (快速的创新) Always-available services (服务高可用) Web scale (web高可扩展) Mobile-centric user experiences (以移动...

梦朝思夕
41分钟前
1
0
骄傲的技术人,技术是你的全部吗?

[一] 惊喜 2019年01月30日笔者发布了一篇 <自我剖析,坚持有多难?> 文章,本以为很平常的一篇文章没想到受到了广大技术人员的关注,算是19年的美好开端,继续开拔! 下面进入本篇的正题。 ...

风象南
57分钟前
12
0
Spring boot 入门--1

Spring 简介 spring的诞生历史 微框架,与Spring 4 一起诞生,比如 @RestController。 可以快速上手,整合子项目。 依赖很少的配置就可以快速搭建并且运行项目。...

细节探索者
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部