CentOS6.4完全安装FFmpeg手记
鼓捣媒体的人对FFmpeg应该不会陌生,它不仅功能强大,结构优美,灵活、易扩展,也是很其他多媒体播放器的基础,例如VLC,Mplayer等等,还有好多商业播放器都用了ffmpeg,但这些商业软件却没有遵守GPL公约,所以它们都被钉在了ffmpeg官网的“耻辱柱”上。关于ffmpeg还有一点题外话,那就是有一个叫做libav的开源项目。libav是从ffmpeg分化出来的一个项目,而这个项目诞生的原因和技术本身并没有任何关系,最大的分歧在于ffmpeg内部有一帮人对于ffmpeg项目的管理方式觉得不happy了,所以他们就自立门户,成立了libav这个项目。有意思的是libav官网的logo和ffmpeg官网的logo有点“小过节”,libav把ffmpeg官网那个偏着脑袋的logo给端正了,至于他们想传达的意义我觉得每个人都应该有自己的理解和认识。好了,开场预热就到这里,该干活了。
CentOS6.4的内核版本2.6.32-358,GCC版本是4.4.7,安装ffmpeg的版本是1.2,ffmpeg官网最新的版本是2.1,看着版本号差异挺大,其实从1.2到2.1中间仅隔了一个2.0版,是2013年7月10号刚发布。
安装前的准备工作当然是先安装各种工具:
点击(此处)折叠或打开
- [root@localhost src]# pwd
- /usr/local/src
- [root@localhost src]# yum install automake autoconf make gcc gcc-c++ libtool zlib zlib-devel curl curl-devel alsa-lib alsa-lib-devel gettext gettext-devel expat expat-devel
ffmpeg作为一个多媒体框架和平台,最大的优势就在于可以很灵活地支持多种编解码和其他特性,只要第三方外部库支撑都可以做到。本次安装下列第三包依赖包:
faac:全称是Free Advanced Audio Coder,是MPEG-4和MPEG-2 AAC的一款常用的开源编解码器;
lame:一款常见的mp3的开源编解码器;
libass:先说一下ASS/SSA,其全称是Advanced Substation Alpha/Substation Alpha,是一种功能极为强大的字幕格式,主要用在视频文件里显示字幕。而libASS是一个轻量级的对ASS/SSA格式字幕进行渲染的函数库,使用C编写,效率非常高;
libdc1394:这是面向高级语言编程接口的一个库,主要提供了对符合IEEE 1394规范的数码摄录设备的一组操作接口。符合1395规范的数码相机标准的全称是1394-based Digital Camera Specifications,简称为IIDC或DCAM。安装dc1394需要先安装raw1394;
libfreetype2:freetype是一个用C语言实现的一个字体光栅化库,它可以用来将字符栅格化并映射成位图以及提供其他字体相关业务的支持。freetype提供了一个简单、易用并统一的接口来访问字体文件的内容。freetype不仅被自由桌面系统软件所使用,同时它也是现代视频游戏广泛使用的栅格化引擎;
libvorbis:这个库主要用于处理ogg格式的音频文件,而ogg全称是ogg vorbis,一种类似mp3的音频压缩格式。不同于mp3的是ogg完全免费、开放和没有专利限制的。ogg文件格式可以不断地进行大小和音质的改良,而不影响旧有的编码器或播放器,主要由Xiph.org基金会开发;
libtheora:theora也是Xiph.org基金会开发,是一种有损的影像压缩格式;
openssl:这个就不多说了,很多安全框架的基础;
rtmpdump:一个开源的rtmp格式的流媒体库,RTMP(Real Time Messaging Protocol)是Adobe Systems公司为它自家的flash播放器和服务器之间音频、视频和数据传输开发的一种开放的传输协议;
speex:speex是一套主要针对语音的开源免费、无专利保护的音频压缩格式,致力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛。相对于其它编解码器,speex非常适合网络应用,因为它专为2-44kpbs语音码流所设计,所以在网络应用上有着自己独特的优势;
twolame:一个开源的mp2格式的编解码库;
vo-aacenc:AAC格式的常用的音频编码器;
xvidcore:是一个开放源代码的MPEG-4视频编解码器;
x264:目前最流行,最常见的H.264视频格式的一个开源的编解码器;
将需要的软件包全部下载后,剩下的事儿就非常简单:“三大步”---configure && make && make install
安装顺序如下:faac、lame、libtheora(需要先安装libogg)、libvorbis、vo-aacenc、xvidcore、x264、libdc1394(需要先安装libraw1394)、libass(需要先依次安装libfreetype2、fribidi和fonconfig)、openssl、librtmp、libspeex、twolame、yasm,最后安装ffmpeg。
在通过源码包安装上述软件时,如果在configure阶段没有用--prefix指定安装目录,默认情况下安装的顶级目录是/usr/local,可执行程序会被安装到/usr/local/bin,动态库被安装到/usr/local/lib,头文件在/usr/local/include等等。这样会有一个小小的麻烦,例如当先安装libogg后,再安装libtheora时,你有可能会收到如下的错误提示信息:
checking pkg-config is at least version 0.9.0... yes checking for OGG... no checking for Ogg... no *** Could not run Ogg test program, checking why... *** The test program compiled, but did not run. This usually means *** that the run-time linker is not finding Ogg or finding the wrong *** version of Ogg. If it is not finding Ogg, you'll need to set your *** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point *** to the installed location Also, make sure you have run ldconfig if that *** is required on your system *** *** If you have an old version installed, it is best to remove it, although *** you may also be able to get things to work by modifying LD_LIBRARY_PATH configure: error: libogg is required to build this package! please see http://www.xiph.org/ for how to obtain a copy. |
明明安装了ogg但theora却认为咱们没安装。原因在哪里,当然是动态库的查找路径了,想了解详情的童鞋请移步这里。我的解决办法是在 /etc/ld.so.conf.d/目录下创建一个名为local-libraries.conf的文件,内容很简单,只有一行:
点击(此处)折叠或打开
- [root@localhost src]# cat /etc/ld.so.conf.d/local-libraries.conf
- /usr/local/lib
- [root@localhost src]#
然后执行ldconfig -v,然后再安装libtheora就很happy了。
当然还没完,当你在安装libass时,当你把所有依赖包都先安装之后,在configure阶段,它总会提醒你说:
Package requirements (freetype2 >= 9.10.3) were not met |
任凭你怎么执行ldconfig都没用。不过你要是注意到错误提示信息其实问题的解决也就挺简单,在configure阶段在探测依赖包时用到了一个叫做pkg-config的工具,它会自动去查找当前系统是否支持某些类型的动态库文件,主要是通过一个*.pc文件。而一些标准so库源码包里都会提供一个这样的文件以便pkg-config来用,而问题就在pkg-config查找*.pc文件的路径上。关于这个工具更多细节就不展开了,感兴趣的朋友可以去google一下。这里我的解决办法是:
点击(此处)折叠或打开
- [root@localhost libass-0.10.1]# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
然后安装libass时也就很happy了。
最后,在安装ffmpeg前需要先安装yasm,版本至少1.2.0以上。
下面是我的安装ffmpeg时相关软件包的配置情况,以便各位参考:
1 faac [root@localhost faac]#./bootstrap [root@localhost faac]#./configure --prefix=/usr/local/ --enable-shared [root@localhost faac]#make && make install 2 lame 3 libogg 4 libtheora 5 libvorbis 6 vo-aacenc 7 xvidcore 8 yasm 9 x264 10 libraw1394 11 libdc1394 12 libfreetype 13 fribidi 14 fonconfig 15 libass 16 openssl 17 librtmp 18 libspeex 19 twolame 20 FFmpeg |
安装完成后,测试一下:
为了方便各位测试,本文中用到的所有软件包已经放在网盘里,有需要的朋友请到这里下载。
CentOS6.4完全安装FFmpeg手记的更多相关文章
- centos6.5 64安装ffmpeg过程支持转码mp3
百度了几个文章 大致知道了思路 首先yum源安装是木有的,只能编译安装了. 要安装ffmpeg要先安装一个yasm支持汇编优化(FFmpeg需要) 在安装一个lame,支持mp3的转码 那就是需要3步 ...
- CentOS-6.4 编译安装ffmpeg加x264以及rtmp
CentOS 6.4-64位下编译ffmpeg几个简单步骤: 1.编译前环境准备: 2.下载源码: 3.编译,安装: ----------------------------------------- ...
- lnmp下安装ffmpeg和ffmpeg-php教程
现在我将我的过程方法发布出来. 以下都是用SSH命令 一.安装ffmpeg 操作系统:centos6 安装ffmpeg有两种方式:①.用源码包安装,这个不知道怎么回事老是报错②用yum命令安装,cen ...
- CentOS 6/7安装ffmpeg
环境 CentOS 6/7 安装 导入GPG key rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms 安装ATRPMS Repo ...
- 最新版CentOS6.5上安装部署ASP.NET MVC4和WebApi
最新版CentOS6.5上安装部署ASP.NET MVC4和WebApi 使用Jexus5.8.1独立版 http://www.linuxdot.net/ ps:该“独立版”支持64位的CentOS ...
- CentOS6.3编译安装Memcached
要用到如下源码包: /usr/local/src/memcached/libevent-2.0.21-stable.tar.gz /usr/local/src/memcached/memcached- ...
- CentOS6.3编译安装Memcached的PHP客户端memcache
在安装Memcached的PHP客户端memcache之前,可先看下先前的工作笔记: PHP5不重新编译,如何安装自带的未安装过的扩展,如soap扩展? 安装PHP的memcache扩展 cd /us ...
- CentOS6.3编译安装Nginx1.4.7 + MySQL5.5.25a + PHP5.3.28
[准备工作] #在编译安装lnmp之前,首先先卸载已存在的rpm包. rpm -e httpd rpm -e mysql rpm -e php yum -y remove httpd yum -y r ...
- 【PHP升级】CentOS6.3编译安装 PHP5.4.38
先前安装的PHP5.3.28(参考:CentOS6.3编译安装Nginx1.4.7 + MySQL5.5.25a + PHP5.3.28),现在准备升级PHP到5.4.38,有如下几个地方需要重新编译 ...
随机推荐
- mysql 的 infobright 数据库的 mediumblob 显示不了数据
需要修改mysql的配置文件: /var/www/html/phpmyadmin/config.inc.php 增加: $cfg['ProtectBinary'] = FALSE; 即可
- HTML 事件属性_03
全局事件属性 HTML 4 的新特性之一是可以使 HTML 事件触发浏览器中的行为,比方说当用户点击某个 HTML 元素时启动一段 JavaScript. 如果你想学习更多关于事件属性,请访问 Jav ...
- JSTL标签库中<c:choose></c:choose>不能放JSP页面<!-- -->注释
笔者最近在使用JSTL标签库的<c:choose>标签时候,发现在该标签体中加了JSP的<!-- -->注释时,总是会显示报错信息.错误的信息如下: <span styl ...
- RPC远程过程调用协议
最近学习Hadoop.Hbase.Spark及Storm原理,经常会出现RPC这样的传输术语,为了更好地理解,将知识点详细的整理下吧~ RPC-----它是一种通过网络从远程计算机程序上请求服务,而不 ...
- Code Igniter + PHP5.3 + SqlServer2008配置
1.配置apache+php5.3 2.配置sql server服务器,并允许远程连接. 3.去http://www.microsoft.com/en-us/download/details.aspx ...
- ORA-00245: control file backup failed; target is likely on a local file system
ORACLE11G RAC alert报错如下:Errors in file /u01/app/oracle/diag/rdbms/dljyzs/dljyzs1/trace/dljyzs1_ora_8 ...
- Sonar升级遇到的那些事儿
目录 背景 如何升级 如何回滚 问题解决 参考 背景 目前我们用SonarQube版本是4.0,这次准备升级到最新版本5.1, 以便支持以后的JavaScript的项目. 如何升级 我们可以直接跨越版 ...
- click事件
click事件是可以多次绑定的,如果绑定多次就会执行多次,因此再不需要重复执行的情况下,就需要使用unbind对事件进行解绑
- Delphi七个版本
第一次Zack Urlocker给我看一款尚未发布的名为Delphi的产品时,我意识到她将改变我的工作—还有许多其他软件开发者的工作. 我过去为使用Windows C++ 库而挣扎,而Delphi过去 ...
- Apache 配置HTTPS协议搭载SSL配置
在设置Apache + SSL之前, 需要做: 安装Apache, 请参见: Windows环境下Apache的安装与虚拟目录的配置, 下载安装Apache时请下载带有ssl版本的Apache ...