最近由于项目需要,必须修改ffmpeg的源码进行修改才能满足项目的需求,但以前我从来没有自己去编译和使用ffmpeg的源代码,一直都是用别人编译好了的sdk,再加上习惯了vs方便的编译环境,要在linux下对如此多的源代码进行编译和调试还真的是一件非常困难的事情。Linux下也没别的什么好的集成开发环境好用,没办法eclipse还凑合吧。好了,废话就不多说了,直接进入正题吧。
第一部分: ffmpeg的编译
首先要下载最新的ffmpeg源代码:
由于我用的是教育网,用svn下载太tm的慢了,1kb/s,估计到明年都下不完。推荐一个网站,除了有ffmpeg的源代码以外还有各个源的源码,并且用现成的sdk(windows下的)。
网址如下:
Step1: 网址
http://ffmpeg.zeranoe.com/builds/
Step2: 版本问题
下载完成以后,一个很重要的工作要做,否则以后你在使用或者调试ffmpeg的时候会出现很多莫名其妙的问题。一定要先检查的清理你的linux下是否已经安装了ffmpeg的库文件,如果安装了,要先remove掉,否则到最近,你的库有的是新的,有的是旧的,到用的时候给你报一堆版本错误,你就哭吧……具体做法:
下面是我在编译的时候出现的版本错误:
ffmpeg: relocation error: ffmpeg: symbol postproc_configuration, version LIBPOSTPROC_51 not defined in file libpostproc.so.51 with link time reference
解决办法:
$: apt-get remove ffmpeg
$: apt-get remove libavcodec52 libavdevice52 libavfilter0 libavformat52 libavutil49 libpostproc
$: apt-get remove libx264-dev
上面的解决办法可能在不同的机子上不一样,因为安装的库可能不同
如果还不行,就手动解决:
库文件的路径:/usr/lib
头文件的路径:/usr/include
进入这些路径看看是否有ffmpeg中的库,如果有,都删除掉。
Step3: 安装ffmpeg所依赖的库文件:
$: sudo apt-get update
$: sudo apt-get install build-essential git-core checkinstall yasm texi2html libfaac-dev /
libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev /
libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev
这个步骤中只提供最常用的配置所需要的库文件,如果在编译ffmpeg中还有其它附加的配置,请使用新立得软件管理器进行安装。
Step4: 安装x264
从Step1中的网址上下载x264源码:
$:./configure –enable-static
$:make
$:make install
Step5: 安装ffmpeg
注意:
1. 如果是安装库文件,一定要使用--enable-shared, 不然不会生成.so文件。
2. 默认的库文件目录是/usr/local/lib,我们把它修改为/usr, 这样在安装的时候方便
$: ./configure --enable-gpl --enable-shared --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libxvid --enable-x11grab --prefix=/usr
$: make
$: sudo make install
第二部分:使用eclipse进行调试
Linux下也没有什么好用的集成开发环境,就eclipse吧。
首先下载eclispe + cdt,这个网上用ubuntu的software center就可以。
这里要注意一下,使用eclipse进行调试,如果ffmpeg源码的编译中使用了—enable-shared选项,那么在调试时会出现无法step into的情况,这个问题折磨了我好久,后来才发现是.so文件干的事,唉……
重新配置:在ffmpeg源码的目录下输入
$: ./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-version3
--disable-optimizations --disable-asm
$: make
建立项目工程,这里我们选File->new->Makefile Project with Existing Code
n 在Import Existing Code对话框中的Toolchain for Indexer Settings中选Linux GCC
然后点Browse找到源代码文件夹
然后点OK->Finish
可以看到新建的工程中已经包含了所有的源码和编译后的文件。
右键点击ffmpeg_g选debug as->Local c/c++ Application->gdb/mi 然后Ok
好了,想怎么调就怎么调吧。
关于Eclipse的快捷键:
使用vs用习惯了,eclipse调试时的快捷键不太好用,想改。
window->Preference->general->keys->Scheme: Microsoft visual studio
但随之而来的一个问题,F10!
这个键在vs里面是step over, 但eclipse中只要你一按f10就会出出file对话框,后来上网查了一下,解决的办法如下:
Eclipse F10 Key mapping bug
$: gconftool-2 --get /desktop/gnome/interface/menubar_accel
F10
$: gconftool-2 --type string --set /desktop/gnome/interface/menubar_accel "ctrl-shift-m"
分享到:
相关推荐
x264 x265 ffmpeg和aac的源码和编译工具。以下是文件夹的内容 编译的其他代码:包含编译的x264 x265和aac的代码 编译好的包:为最终ffmpeg编译过的代码 另一人编译:...
ffmpeg编译所需12个源码库,lame、x264、amrnb、amrwb、faad2、faac、libdca、libogg、libvorbis、xvidcore、a52dec、ffmpeg-3.2
ffmpeg编译与移植
Advanced Media Framework AMF AMD Radeon硬件编码ffmpeg编译库源码 The AMF framework is compatible with most recent Radeon GPUs starting with the Southern Islands family and APUs of the Kabini, Kaveri, ...
最新版ffmpeg编译生成android使用的so 最新版ffmpeg编译生成android使用的so 最新版ffmpeg编译生成android使用的so 最新版ffmpeg编译生成android使用的so
ffmpeg源码和编译版都在包里
ffmpeg源码编译脚本,分单个库版和多个库版。
ffmpeg的源码(.h文件)和编译好的so文件
ffmpeg源码包编译安装过程, 详细讲述了ffmpeg及其相关音视频编解码库的源码编译安装过程
FFMPEG编译生成的so和头文件,FFMPEG编译生成的so和头文件。
ffmpeg源代码及编译方法,在windows下编译通过并结合媒体栈投入使用,运行稳定
2015最新ffmpeg编译安装包,要求centos6.5以上版本
windows下ffmpeg编译包,只需要设定哈VS环境,即可编译出可调试的ffmpeg以及依赖库。内含Readme.txt,具体编译可查看此文件
编译ffmpeg源码的脚本文件,此配置中包含neon指令,适用于arm
Android FFMpeg 编译的so库和源码,采取CMake方式编译。
vs编译ffmpeg源码
ffmpeg编译依赖
09_12_阿里云主机配置_ffmpeg编译09_12_阿里云主机配置_ffmpeg编译09_12_阿里云主机配置_ffmpeg编译09_12_阿里云主机配置_ffmpeg编译09_12_阿里云主机配置_ffmpeg编译09_12_阿里云主机配置_ffmpeg编译09_12_阿里云...
最新FFMpeg编译的ffplay.exe
x264源码,用于ffmpeg编译使用