码迷,mamicode.com
首页 > 其他好文 > 详细

redhat编译静态ffmpeg实现amr转MP3

时间:2015-11-04 16:10:51      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

    最近项目里有和app对接,要把ios传过来的amr录音在web上播放。一开始找了苹果的quickTime,各种奇怪没法用,而且官网上好像不能下载了,干脆后台转成MP3。同事找到了一个java的封装jave.jar。 在window上是可以转的,到linux上不行了。

    我看了下jave的官网,这是个对ffmpeg的封装,刚好以前玩R语言的时候用过ffmpeg。官网说法是,jar包里的ffmpeg.exe和ffmpeg可执行程序是随便编译的给32位系统用的,所以实际上需要自己提供ffmpeg的可执行程序的。

    编译环境: 阿里云reahat 64位。版本不知道,也不重要。

    ffmpeg编译完分两种方式,动态的和静态的。动态的就是ffmpeg需要调用mp3或者amr的库的时候,去/usr/lib下面去找库然后加载进来。静态的就是把这些库一起编译进可执行文件里面,最后只生成一个文件,不需要再去系统里面加载别的库。如果是放到jave.jar里的话,肯定是搞成静态的。

#lame MP3的支持  要确保是不是静态的,可以去看一下ffmpeg_build里有没有.so文件,没有的话就ok
tar zxf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-static
make && make install
cd ..

#amr 
tar zxf opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --disable-shared --enable-static  
make && make install
cd ..

#编译ffmpge
tar zxf ffmpeg-2.8.1.tar.gz
cd ffmpeg-2.8.1
PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" 
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --pkg-config-flags="--static"
  --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 
  --disable-yasm --disable-shared --enable-static
make & make install

    其实很简单,问题就是一开始参考网上各种方式,总是报  libmp3lame >= 3.88.3 not found,自己研究了一下,libmp3lame自动安装的话到/usr/lib下面了,ffmpeg如果没去这里找的话就找不到,所以这个地方最好不要./configure & make & make install,而是像上面这样,建个目录,安装到一起。另外如果没有root权限,其实也只能这样装到自己的目录下面。

    另外一个问题是,编译成功了,但是运行命令的时候比如ffmpeg -i test.amr test.mp3,还是报库找不到,如果编译成动态链接的,可以看下库的位置是不是不对,不对的话建链接。

ldd `which ffmpeg`
find /usr/local/lib/

要么就编译成静态的,毕竟用起来比较方便。

redhat编译静态ffmpeg实现amr转MP3

标签:

原文地址:http://my.oschina.net/u/1047640/blog/525800

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!