Linux编译ffmpeg
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,请务必也下载最新版本的源码:
yasm:http://yasm.tortall.net/Download.html
lame:http://lame.sourceforge.net/download.php
OenCore AMR:http://sourceforge.net/projects/opencore-amr
AmrNB & AmrWB:http://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的更多相关文章
- Linux 编译ffmpeg 生成ffplay
本来主要介绍linux环境下如何编译ffmpeg使之生成ffplay.编译总是离不开源码的版本,以及编译环境下:编译环境Ubutun 16.04 ,ffmpeg 版本3.4.2.如何下载ffmpeg ...
- linux 编译ffmpeg 支持x264, x265
1. 前言 本教程涉及的ffmpeg, x264, x265 2. 环境依赖 2.1 删除系统中安装的ffmpeg等库 sudo apt-get --purge remove ffmpeg mplay ...
- win10子系统linux编译ffmpeg
android-ndk-r14b(linux版) ffmpeg-4.0 开启win10子系统(控制面板->程序和功能->启用或关闭Windows功能 然后在 适用与 Linux 的 Win ...
- Linux下NDK编译FFMPEG包含neon参数
FFMPEG编译成Android库已经有很多案例了,编译优化neon的也很多,以下是我通过实践成功的案例,这里主要讲编译的配置文件,其他设置可结合Linux下使用NDK编译FFMPEG(libstag ...
- NDK编译FFMpeg[Linux]
最近在研究视频直播相关的技术,了解到了FFmpeg,就在网上查看如何将FFmpeg移植到Android中,查了几天,看的东西不少,就是没有一个可以完全移植成功的,最后通过产看各种资料,结合网上的资料, ...
- [CentOS_7.4]Linux编译安装ffmpeg
[CentOS_7.4]Linux编译安装ffmpeg 安装过程: 下载安装源,配置,编译,安装,设置环境变量. # wget http://www.ffmpeg.org/releases/ffm ...
- Linux下编译ffmpeg并用GDB调试
1.在Ubuntu界面上调处命令行界面,最方便的方式是使用快捷键Ctrl+Alt+T. 2.安装SDL SDL是一个开源的多媒体开发库,可以设置图像和视频的绘制等操作.如果不安装SDL,FFMPEG将 ...
- linux下编译ffmpeg 引入外部库x264
Found no assembler Minimum version is nasm-2.13 If you really want to compile without asm, configure ...
- Linux 编译升级 FFmpeg 步骤
如果服务器已经安装了一个 Ffmpeg 的话,比如已安装在 /usr/local/ffmpeg 目录.Linux下版本升级步骤如下: 1.下载 ffmpeg-*.tar.gz到 Ffmpeg 官网 h ...
随机推荐
- 推荐《SQL基础教程(第2版)》中文PDF+源代码+习题答案
我认为<SQL基础教程(第2版)>非常适合数据库学习的初学者.论述的角度是读者的角度,会换位思考到读者在看到这一段时候会发出怎样的疑问,非常难得:原始数据的例题只有一道,但是可以反复从不同 ...
- Unity 模拟点击Home键和启动其他app
using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehav ...
- Java基础学习总结(11)——重载与重写
首先我们来讲讲:重载(Overloading) 一.方法的重载 方法名一样,但参数不一样,这就是重载(overload). 所谓的参数不一样,主要有两点:第一是参数的个数不一样,第二是参数的类型不一样 ...
- 洛谷 P1703 那个什么密码2
P1703 那个什么密码2 题目背景 https://www.luogu.org/problem/show?pid=1079 题目描述 与原题一模一样.具体不同请见输入格式 输入输出格式 输入格式: ...
- NYOJ_77 开灯问题
题目地址 分析: 用一个数组来保存每盏灯的操作的次数.推断奇偶就可以推断灯的状态. 最后的输出格式须要注意一下空格的位置,思路就是现输出一个.剩下来的输出在前面加一个空格. 空格用_表示: 1_3_5 ...
- sql暂时表的创建
create table #simple /*仅仅对当前用户有效.其它用户无法使用,断掉连接后马上销毁该表*/ ( id int not null ) select * from #simple c ...
- POJ 3070 Fibonacci 矩阵高速求法
就是Fibonacci的矩阵算法.只是添加一点就是由于数字非常大,所以须要取10000模,计算矩阵的时候取模就能够了. 本题数据不强,只是数值本来就限制整数,故此能够0ms秒了. 以下程序十分清晰了, ...
- HDU 5386 Cover(模拟)
Cover Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...
- 菜鸟之webservice(一) 服务端搭建
首先说一下,为什么取名叫菜鸟之webservice,由于本人技术真的不咋滴,写博客仅仅是为了对所学知识的总结.webservice对于我来说一直都是高大上的感觉,一个java web和javase都没 ...
- modSecurity规则学习(七)——防止SQL注入
1.数字型SQL注入 /opt/waf/owasp-modsecurity-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf"] [lin ...