FeiYan

网站导航

搜索

腾讯微博 新浪微博 FeelBLog 开源中国社区

Linux编译ffmpeg并转换MP3到AMR

2012-08-20 09:50:37     14个评论     17725次访问

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脚本:

ffmpeg_by_feiyan.zip

#!/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 "--------------------------"


文章标签: linux  ffmpeg  centos  ubuntu 

本文地址:Linux编译ffmpeg并转换MP3到AMR

相关文章

2012-08-28:Ubuntu编译Nginx

2012-09-17:Ubuntu编译Yaf

2012-09-19:使用Pecl或Pear安装PHP扩展

2012-09-26:Ubuntu编译安装Redis和PHPRedis

2012-10-22:Ubuntu更新源推荐

2012-10-25:Linux/Ubuntu下CMake编译MySQL

2012-11-08:Ubuntu配置Nginx+PHP+MySQL开发环境

2012-11-11:Ubuntu/Linux下7款轻量级编辑器

2012-12-03:阿里云VPS和Linode使用感受对比

14 Comments »

  1. java开发java开发
    您好!我按你的源码进行了编,能正常运行,但是我们项目是由java开发的,怎么做才能将生成的一个可执行文件?我想把这个文件放到服务器上直接运行,不想安装~

    2014-08-06 15:24:05   

  2. 飞晏飞晏
    我好久不动这个了,但是你看我最后写的example:ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr。应该是需要输入ac和ar的。

    @夏天的灰尘: ffmpeg -i 52009d06b2d01.amr 2.mp3。 格式是 这样弄的, amr 转mp3 , 不知道为何// @飞晏: Estimating duration from bitrate, this may be inaccurate Input,提示是可能是不准确的输入。// @夏天的灰尘: [amr @ 0x140a9840] Estimating duration from bitrate, this may be inaccurate Input #0, amr, from '52009d06b2d01.amr': Duration: 00:00:51.22, bitrate: 12 kb/s Stream #0:0: Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 12 kb/s Output #0, mp3, to '2.mp3': Metadata: TSSE : Lavf55.12.100 Stream #0:0: Audio: mp3 (libmp3lame), 8000 Hz, mono, fltp Stream mapping: Stream #0:0 -> #0:0 (amrnb -> libmp3lame) Press [q] to stop, [?] for help 52009d06b2d01.amr: Input/output error size= 50kB time=00:00:51.26 bitrate= 8.1kbits/s video:0kB audio:50kB subtitle:0 global headers:0kB muxing overhead 0.507703%// @飞晏: 下载链接已经修复...// @夏天的灰尘: 代码包 发我下吧。 我转码 amr 转MP3 ,8K amr 转成了4k mp3, Input/output error、 不能使用~

    2013-08-29 15:10:58   

  3. 夏天的灰尘夏天的灰尘
    ffmpeg -i 52009d06b2d01.amr 2.mp3。 格式是 这样弄的, amr 转mp3 , 不知道为何

    @飞晏: Estimating duration from bitrate, this may be inaccurate Input,提示是可能是不准确的输入。// @夏天的灰尘: [amr @ 0x140a9840] Estimating duration from bitrate, this may be inaccurate Input #0, amr, from '52009d06b2d01.amr': Duration: 00:00:51.22, bitrate: 12 kb/s Stream #0:0: Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 12 kb/s Output #0, mp3, to '2.mp3': Metadata: TSSE : Lavf55.12.100 Stream #0:0: Audio: mp3 (libmp3lame), 8000 Hz, mono, fltp Stream mapping: Stream #0:0 -> #0:0 (amrnb -> libmp3lame) Press [q] to stop, [?] for help 52009d06b2d01.amr: Input/output error size= 50kB time=00:00:51.26 bitrate= 8.1kbits/s video:0kB audio:50kB subtitle:0 global headers:0kB muxing overhead 0.507703%// @飞晏: 下载链接已经修复...// @夏天的灰尘: 代码包 发我下吧。 我转码 amr 转MP3 ,8K amr 转成了4k mp3, Input/output error、 不能使用~

    2013-08-29 15:07:28   

  4. 飞晏飞晏
    Estimating duration from bitrate, this may be inaccurate Input,提示是可能是不准确的输入。

    @夏天的灰尘: [amr @ 0x140a9840] Estimating duration from bitrate, this may be inaccurate Input #0, amr, from '52009d06b2d01.amr': Duration: 00:00:51.22, bitrate: 12 kb/s Stream #0:0: Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 12 kb/s Output #0, mp3, to '2.mp3': Metadata: TSSE : Lavf55.12.100 Stream #0:0: Audio: mp3 (libmp3lame), 8000 Hz, mono, fltp Stream mapping: Stream #0:0 -> #0:0 (amrnb -> libmp3lame) Press [q] to stop, [?] for help 52009d06b2d01.amr: Input/output error size= 50kB time=00:00:51.26 bitrate= 8.1kbits/s video:0kB audio:50kB subtitle:0 global headers:0kB muxing overhead 0.507703%// @飞晏: 下载链接已经修复...// @夏天的灰尘: 代码包 发我下吧。 我转码 amr 转MP3 ,8K amr 转成了4k mp3, Input/output error、 不能使用~

    2013-08-29 15:05:35   

  5. 夏天的灰尘夏天的灰尘
    [amr @ 0x140a9840] Estimating duration from bitrate, this may be inaccurate Input #0, amr, from '52009d06b2d01.amr': Duration: 00:00:51.22, bitrate: 12 kb/s Stream #0:0: Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 12 kb/s Output #0, mp3, to '2.mp3': Metadata: TSSE : Lavf55.12.100 Stream #0:0: Audio: mp3 (libmp3lame), 8000 Hz, mono, fltp Stream mapping: Stream #0:0 -> #0:0 (amrnb -> libmp3lame) Press [q] to stop, [?] for help 52009d06b2d01.amr: Input/output error size= 50kB time=00:00:51.26 bitrate= 8.1kbits/s video:0kB audio:50kB subtitle:0 global headers:0kB muxing overhead 0.507703%

    @飞晏: 下载链接已经修复...// @夏天的灰尘: 代码包 发我下吧。 我转码 amr 转MP3 ,8K amr 转成了4k mp3, Input/output error、 不能使用~

    2013-08-29 15:02:09   

  6. 飞晏飞晏
    下载链接已经修复...

    @夏天的灰尘: 代码包 发我下吧。 我转码 amr 转MP3 ,8K amr 转成了4k mp3, Input/output error、 不能使用~

    2013-08-29 11:45:16   

  7. 夏天的灰尘夏天的灰尘
    代码包 发我下吧。 我转码 amr 转MP3 ,8K amr 转成了4k mp3, Input/output error、 不能使用~

    2013-08-28 18:40:39   

  8. 飞晏飞晏
    我把代码包发到您评论的那个126的邮箱了,你的错误信息太乱了。你看下里面的WARNING: library configuration mismatch avutil。

    @李小4: 您好,您看到我的留言了么?

    2013-05-16 16:28:10   

  9. 飞晏飞晏
    不好意思,这两天太忙

    @李小4: 您好,您看到我的留言了么?

    2013-05-16 16:27:00   

  10. 李小4李小4
    您好,您看到我的留言了么?

    2013-05-15 17:32:16   

  11. 李小4李小4
    您好,我看了您的文章,也按照您的步骤做了,可是最终amr转换mpe的时候。ffmpeg -i se_t630.amr 3.mp3 ffmpeg version N-53033-g56ba331 Copyright (c) 2000-2013 the FFmpeg developers built on May 14 2013 05:19:12 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3) configuration: WARNING: library configuration mismatch avutil configuration: --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared avcodec configuration: --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared avformat configuration: --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared avdevice configuration: --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared avfilter configuration: --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared swscale configuration: --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared swresample configuration: --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared libavutil 52. 31.100 / 52. 31.100 libavcodec 55. 9.100 / 55. 9.100 libavformat 55. 7.100 / 55. 7.100 libavdevice 55. 0.100 / 55. 0.100 libavfilter 3. 65.100 / 3. 65.100 libswscale 2. 3.100 / 2. 3.100 libswresample 0. 17.102 / 0. 17.102 [amr @ 0xd20840] max_analyze_duration 5000000 reached at 5000000 microseconds [amr @ 0xd20840] Estimating duration from bitrate, this may be inaccurate Input #0, amr, from 'se_t630.amr': Duration: 00:00:05.57, bitrate: 5 kb/s Stream #0:0: Audio: amr_nb (samr / 0x726D6173), 8000 Hz, mono, flt, 5 kb/s File '3.mp3' already exists. Overwrite ? [y/N] y Output #0, mp3, to '3.mp3': Metadata: TSSE : Lavf55.7.100 Stream #0:0: Audio: mp3 (libmp3lame), 8000 Hz, mono, fltp Stream mapping: Stream #0:0 -> #0:0 (amrnb -> libmp3lame) Press [q] to stop, [?] for help se_t630.amr: Input/output error size= 6kB time=00:00:05.62 bitrate= 8.6kbits/s video:0kB audio:6kB subtitle:0 global headers:0kB muxing overhead 4.340278% 求您知道,还有就是您那个压缩包下载不了,谢谢

    2013-05-14 21:02:47   

  12. 于泽鹏于泽鹏
    看不懂,哈哈

    2012-08-25 18:48:26   

  13. 飞晏飞晏
    草榴你妹,这么牛逼的名号也是你能随便用的,你给我找一个不挂VPN能打开的草榴看看...

    @所谓刚子: 来看看了。。。蛋逼都不去我那里看看 草榴哦

    2012-08-24 14:23:43   

  14. 所谓刚子所谓刚子
    来看看了。。。蛋逼都不去我那里看看 草榴哦

    2012-08-23 23:48:18   

发布评论

最新评论

  1. SpecsSpecs

    不错~~

  2. zhyzhy

    我也遇到这个问题 不知道是swf 、jcrop 、 uploadify 还是浏览器缓存

  3. java开发java开发

    您好!我按你的源码进行了编,能正常运行,但是我们项目是由java开发的,怎么做才能将生成的一个可执行文件?我想把这个文件放到服务器上直接运行,不想安装~