吭吃坑吃的编译安装完ffmpeg 0.75,在centos5.9上后,遇到了一些问题,都是十分常见的问题,希望对大家有用。
问题一
/usr/local/include/libavutil/common.h: In function ‘int32_t av_clipl_int32_c(int64_t)’:
/usr/local/include/libavutil/common.h:170: error: ‘UINT64_C’ was not declared in this scope
这个问题可以这么解决
编辑文件 gedit /usr/local/include/libavutil/common.h
添加如下代码可以解决。
//add by bg2bkk
#ifndef UINT64_C
#define UINT64_C(value) __CONCAT(value, ULL)
#endif
//add by bg2bkk
问题二
./ffmpeg_test: error while loading shared libraries: libavcodec.so.52: cannot open shared object file: No such file or directory
这个问题的原因在于没有把ffmpeg的lib放到ld.conf里,参考链接:http://forum.ivorde.ro/ffmpeg-error-while-loading-shared-libraries-libavdevice-so-52-cannot-open-shared-object-file-no-t129.html
这个thread不错,有很多有用的命令:
ldd `which ffmpeg` 查看ffmpeg的库是否可以找到
这时一般会打印为:
linux-gate.so.1 => (0x00f90000)
libavdevice.so.52 => not found
libavfilter.so.1 => not found
libavformat.so.52 => not found
libavcodec.so.52 => not found
libpostproc.so.51 => not found
libswscale.so.0 => not found
libavutil.so.50 => not found
libpthread.so.0 => /lib/libpthread.so.0 (0x00821000)
libm.so.6 => /lib/libm.so.6 (0x007da000)
libc.so.6 => /lib/libc.so.6 (0x0067b000)
/lib/ld-linux.so.2 (0x0065c000)
而命令find /usr/local/lib/ | grep -E "libavdevice.so.52|libavfilter.so.1|libavcodec.so.52|libavcore.so.0"
通常会打印输出
/usr/local/lib/libavdevice.so.52.5.0
/usr/local/lib/libavfilter.so.1
/usr/local/lib/libavdevice.so.52
/usr/local/lib/libavfilter.so.1.80.0
/usr/local/lib/libavcodec.so.52.123.0
/usr/local/lib/libavcodec.so.52
说明你有这些库,只是没有识别。当然,路径/usr/local/lib 和/usr/local/include主要是因为ffmpeg的安装前缀是/usr/lcoal,好像用户安装linux的软件默认都是这里。
修改文件sudo vim /etc/ld.so.conf
在文件里添加
/usr/local/lib
这句
然后保存退出。
sudo ldconfig
这样就可以找到这些库了。
问题三
./ffmpeg_test: error while loading shared libraries: /usr/local/lib/libswscale.so.0: cannot restore segment prot after reloc: Permission denied
这个问题属于