原创地址:http://jjf19850615.blog.163.com/blog/static/3568814720130144197312/
参考:
http://hi.baidu.com/davidgabriel/item/36bd96cc2d9a8ed9ee183b98
http://windesting.blog.sohu.com/227273829.html
http://www.linuxidc.com/Linux/2010-03/24737.htm
1.下载好ffmpeg最新的源码,存放到ubuntu中自己建立的work目录中;
2.
在命令行进入ffmpeg目录,然后输入
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libsdl1.2-dev libtheora-dev libx11-dev libxvidcore4-dev zlib1g-dev
来安装需要的一些部分相应的库。
3.在命令行进入ffmpeg目录,然后输入:
./configure --enable-shared --enable-libmp3lame --enable-libvorbis --enable-libxvid --enable-libx264 --enable-libopencore-amrnb --enable-libgsm --enable-libfaac --enable-libopenjpeg --enable-librtmp --enable-gpl --enable-version3 --enable-nonfree --enable-shared
会提示好多东西在第2步没有安装,这个时候需要安装,(
在apt-get install 后写几个前缀,这样按两下Tab就能
测试一下Ubuntu是否能够找到这些解码库的包
),一般-dev后缀的是要安装的,另外
libgsm
我是通过
sudo apt-get install libgsm1-dev来安装的。
4.都安装完成后,make
5. sudo make install
完成,在/usr/local/bin下能看到生成的四个可执行文件:
这个时候拷贝一个视频文件进去用ffmpeg -i input output来测试,提示
这样再运行上面的命令就能得到解码后的YUV文件了。初步测试成功,编译成功。
ffmpeg :error loading shared libavdevice.so.54
解决:
To make ffmpeg binary look in this directory for linked libraries, edit /etc/ld.so.conf and add this path:
Code:
include ld.so.conf.d/*.conf
/usr/local/lib
then excute ldconfig to take effect.
To make ffmpeg binary look in this directory for linked libraries, edit /etc/ld.so.conf and add this path:
Code:
include ld.so.conf.d/*.conf
/usr/local/lib
then excute ldconfig to take effect.
生成带有调试信息的文件:
1.make clean,将之前的全部编译生成的东西都删除掉;
2.输入如下配置,红色是和上面编译添加的一些选项,为了生成调试信息,并且不使用汇编
./configure --enable-shared --enable-debug --disable-optimizations --disable-yasm --enable-libmp3lame --enable-libvorbis --enable-libxvid --enable-libx264 --enable-libopencore-amrnb --enable-libgsm --enable-libfaac --enable-libopenjpeg --enable-librtmp --enable-gpl --enable-version3 --enable-nonfree --disable-asm --enable-shared
3.make;
4. sudo make install这样就生成了带有调试信息的ffmpeg等文件。
调试参考:http://blog.chinaunix.net/uid-26009923-id-3454613.html
终端输入:readelf -S ./ffmpeg_g
可以看到有调试信息。
5.GDB进行调试:http://www.cnblogs.com/rosesmall/archive/2012/04/10/2440514.html
例如一个程序名为prog 参数为 -l a -C abc
则,运行gcc/g++ -g prog.c/cpp -o prog
则,运行gcc/g++ -g prog.c/cpp -o prog
就可以用gdb调试程序prog
#gdb prog
#gdb prog
进入gdb调试界面
输入参数命令set args 后面加上程序所要用的参数,注意,不再带有程序名,直接加参数,如:
set args -l a -C abc
set args -l a -C abc
回车后输入
r
即可开