本来觉得不用写了,现在看来还是写下吧。针对在ubuntu10.04上面编译安装FFmpeg的记录。
整体的步骤就是参考http://blog.csdn.net/mlj1668956679/article/details/18840197
下面针对以上的有些步骤做些解释,和我在安装编译过程中遇到的问题如何解决的做一下补充记录。
======================================================================================
1.首先遇到的第一个问题
我先看了下这篇文章继而被ubuntu自身所误导,之所以在ubuntu10.04上面应用,是因为10.04版本稳定且好使用,这个因人而异。 当打开终端:直接输入--->ffmpeg
ubuntu会自动提醒你----->sudo apt-get install ffmpeg
该文章上还有一个ffprobe -i money.mp4
直接输入----->ffmprobe
ubuntu一样会提醒你------>sudo apt-get install ffprobe
如果你按照这个装估计你就和我一样悲剧了...
http://blog.csdn.net/chennxi/article/details/8022236
所以我建议在你按照之前的那篇文章的步骤进行之前如果有以上和我一样的这些动作,希望你按照下面的步骤处理一下
在命令行下运行:sudo apt-get remove ffmpeg
sudo apt-get autoremove
sudo apt-get remove ffprobe
sudo apt-get autoremove
这个很关键!!
======================================================================================
2.为什么说上面的那个步骤很关键?
先稍等....
root@jack-desktop:~# ffmpeg --help
ffmpeg: error while loading shared libraries: libavdevice.so.54: cannot open shared object file: No such file or directory
之前的转载的那篇文章在你执行到这一步骤时可能遇到的不是libavdevice.so.54库找不到而是libavdevice.so.52
当然网上也给了相应的解决方案:
跟遇到libavdevice.so.54是作者提供的方案一样.
运行ffmepg,提示以下错误信息:
ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory
解决方法是用vi编辑/etc/ld.so.conf文件,末尾增加以下代码
/usr/share/ffmpeg
其中/usr/share/ffmpeg是刚才安装的位置.但是细心的人可能会发现作者一开始在执行第3个步骤时:
3、运行自动配置
./configure --enable-shared --prefix=/usr/local/ffmpeg
所以会给大家造成困惑,明明你安装的路径是/usr/local/ffmpeg怎么在添加/etc/ld.so.conf时填的却是/usr/share/ffmpeg路径呢?这个大家只要记住你自己的安装路径就好了!这个应该是作者的一个失误,写错了...
======================================================================================
当你按照上面的方案做了以后可能会面临第3个问题
3.命令行运行:ffmpeg -- help
可能报如下错误:
ffmpeg: relocation error: /usr/local/ffmpeg/lib/libavdevice.so.52: symbol av_new_packet, version LIBAVCODEC_52 not defined in file libavcodec.so.52 with link time reference
解决方案为:<方案的来源:http://forum.ovh.de/showthread.php?t=9692>
可以用下面这条语句解决
1--->方法:命令行:export LD_LIBRARY_PATH=/usr/local/ffmpeg/lib
该方法只能暂时性的解决问题,当你再次启动终端时将会失效
2----->方法:永久性的解决问题:
在~/.bashrc中写入上面这句,再运行
. ~/.bashrc
就一次性OK了。(我是写在了文件末尾)
======================================================================================
4.怎么在终端上直接敲命令:ffmpeg就可以了,而不用每次都跑到安装目录下的Bin目录下去找到ffmpeg执行./ffmpeg
1.------>方法:命令行:export PATH=/usr/local/ffmpeg/bin:$PATH
此处假设要加入的路径是usr/local/arm/bin,记住,可执行文件是位于bin下面,比如可执行文件是a.o路径不能是:usr/local/arm/bin/a.o,路径指向可执行文件的所在 文件夹。
当然这样添加是暂时的,在关闭终端后就失去 作用 。
2.-------->方法:
把路径加到/etc/profile ,添加完成后要注销一下机器哈
所有的步骤都解决完了!
==================================================================================================
现在总结下为什么要执行第一个步骤中的操作,前提是你在装之前,做了那些步骤,就要remove掉之前的。因为如果你不做,有可能在你遇到第三个问题的时候即使按照解决方案做了,还是会出现ffmpeg: relocation error: /usr/local/ffmpeg/lib/libavdevice.so.52: symbol av_new_packet, version LIBAVCODEC_52 not defined in file libavcodec.so.52 with link time reference
总结一句话就是那个安装路径是关键 --prefix=XXX
之后的很多在环境变量中的添加,或者库连接文件中的添加都是和这个文件有着千丝万缕的联系的。
OK,总结完了,希望能帮你顺利编译安装ffmpeg。下一步就是开发了...