Linux编译ffmpeg并转换MP3到AMR

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 "--------------------------"

Linux编译ffmpeg的更多相关文章

  1. Linux 编译ffmpeg 生成ffplay

    本来主要介绍linux环境下如何编译ffmpeg使之生成ffplay.编译总是离不开源码的版本,以及编译环境下:编译环境Ubutun 16.04 ,ffmpeg 版本3.4.2.如何下载ffmpeg ...

  2. linux 编译ffmpeg 支持x264, x265

    1. 前言 本教程涉及的ffmpeg, x264, x265 2. 环境依赖 2.1 删除系统中安装的ffmpeg等库 sudo apt-get --purge remove ffmpeg mplay ...

  3. win10子系统linux编译ffmpeg

    android-ndk-r14b(linux版) ffmpeg-4.0 开启win10子系统(控制面板->程序和功能->启用或关闭Windows功能 然后在 适用与 Linux 的 Win ...

  4. Linux下NDK编译FFMPEG包含neon参数

    FFMPEG编译成Android库已经有很多案例了,编译优化neon的也很多,以下是我通过实践成功的案例,这里主要讲编译的配置文件,其他设置可结合Linux下使用NDK编译FFMPEG(libstag ...

  5. NDK编译FFMpeg[Linux]

    最近在研究视频直播相关的技术,了解到了FFmpeg,就在网上查看如何将FFmpeg移植到Android中,查了几天,看的东西不少,就是没有一个可以完全移植成功的,最后通过产看各种资料,结合网上的资料, ...

  6. [CentOS_7.4]Linux编译安装ffmpeg

    [CentOS_7.4]Linux编译安装ffmpeg   安装过程: 下载安装源,配置,编译,安装,设置环境变量. # wget http://www.ffmpeg.org/releases/ffm ...

  7. Linux下编译ffmpeg并用GDB调试

    1.在Ubuntu界面上调处命令行界面,最方便的方式是使用快捷键Ctrl+Alt+T. 2.安装SDL SDL是一个开源的多媒体开发库,可以设置图像和视频的绘制等操作.如果不安装SDL,FFMPEG将 ...

  8. linux下编译ffmpeg 引入外部库x264

    Found no assembler Minimum version is nasm-2.13 If you really want to compile without asm, configure ...

  9. Linux 编译升级 FFmpeg 步骤

    如果服务器已经安装了一个 Ffmpeg 的话,比如已安装在 /usr/local/ffmpeg 目录.Linux下版本升级步骤如下: 1.下载 ffmpeg-*.tar.gz到 Ffmpeg 官网 h ...

随机推荐

  1. BZOJ 4241 历史研究(分块)

    题意 题解 #include<iostream> #include<cstring> #include<cstdio> #include<cmath> ...

  2. [洛谷P1119][codevs1817]灾后重建

    题目大意:有n个村庄和一些连通两个村庄的双向道路.每个村庄在一个特定的时间修复.没有修复的村庄不能经过.现在有一系列询问,问两个村庄在t时刻的最短路(如果无法到达或两个村庄本身未修复,输出-1). 解 ...

  3. 说说Kindle那些事

    已经不记得是什么时候在哪里听过kindle这玩意的了,反正最开始买kindle还是大四上学期,貌似是2012-9-30,那时候是整个大学最闲的时候,不知道哪天闲的蛋疼一冲动就买了个kindle4黑色款 ...

  4. parted---磁盘分区

    parted命令是由GNU组织开发的一款功能强大的磁盘分区和分区大小调整工具,与fdisk不同,它支持调整分区的大小.作为一种设计用于Linux的工具,它没有构建成处理与fdisk关联的多种分区类型, ...

  5. 【深度学习大讲堂】首期第一讲:人工智能的ABCDE 第二部分:简谈当前AI技术与发展趋势

    (完)

  6. vim插件之marks

    最近在看源码的过程中,发现一点很不方便的地方,就是当我在几个相关的类来回跳转的时候,之前定位的关键代码很容易找不到,结果进程需要重复查找关键点.虽然当时想到了可以通过marks来标志,但是,因为mar ...

  7. Spring Security Architecture--官方

    原文地址:https://spring.io/guides/topicals/spring-security-architecture/ Table of contents Authenticatio ...

  8. Ubuntu Bonding(16.04网卡绑定)

    UbuntuBonding(网卡绑定) 绑定,也称为端口聚合或链路聚合,意味着将多个网络接口(NIC)组合到单个链路,从而提供高可用性,负载平衡,最大吞吐量或这些组合.注意bonding只能提供链路监 ...

  9. Unix操作系统的入门与基础

    http://dev2dev.cnblogs.com/archive/2005/10/10/251894.aspx Unix操作系统的入门与基础 与大家熟悉的Windows用户界面和使用习惯不同,Un ...

  10. 关于springmvc重定向后Cannot create a session after the response has been committed问题

    首先先上代码吧,我在用springmvc进行response.sendRedirect(url);操作后报了Cannot create a session after the response has ...