1.使用h264编码器进行ffmpeg编码时,报:[h264_nvenc @ 0xf5eee0] Cannot load libcuda.so.1
该错误原因为构建ffmpeg时,系统未有h264的编码库。此时,需要先构建并安装x264,再重新构建并安装ffmpeg。
以H264编解码为例,我们需要先安装X264库:
(1)下载X264 : Git clone http://git.videolan.org/git/x264.git
(2)安装X264:
sudo ./configure --enable-shared --disable-asm
sudo make && make install
然后重新安装FFMPEG:
sudo ./configure --enable-shared --disable-yasm --enable-libx264 --enable-gpl --prefix=/usr/local/ffmpeg
sudo make && make install
2.error while loading shared libraries: libavdevice.so.52 等错误
原因是,bin文件夹中,可执行程序未正确连接库。
请修改/etc/ld.so.conf 在最后一行加上/usr/local/lib (ffmpeg库的位置,默认为此路径)
ldconfig -v
并修改 /usr/local/ffmpeg/lib目录下的文件权限为777
注:有的时候,可能install的部分库会生成在源码文件夹中对应的lib文件夹中。复制到/usr/local/lib后,请执行一次Idconfig -v,否则程序无法自动连接后来拷贝进来的库。
3.xxxx.so: relocation R_X86_64_32 against `xxxx' can not be used when making a shared object; recompile with -fPIC
这个错误通过百度或者谷歌,可以查到很多答案是让大家重新发布so库,添加-fPIC的指令。这里给出一些比较典型的解决方案(可能管用也可能不管用)
编译器提示:recompile with -fPIC
两种方式:
(1)在makefile文件里的CFLAGS里加上 -fPIC选项,这样可以一劳永逸
(2)如果你的makefile很大,CFLAGS也不明确,那就在配置时手动加上,即:
$CFLAGS="-fPIC" ./configure ..............
如果这样还不行,你需要试一下sudo
即:
$sudo CFLAGS="-fPIC" ./configure ..............
Cmake下添加 -fPIC:
打开cmakelist.txt,增加以下语句:
SET(CMAKE_C_FLAGS "-O2 -pipe -fPIC -Wall -fmessage-length=0")
SET(CMAKE_CXX_FLAGS "-O2 -pipe -fPIC -Wall -fmessage-length=0")
其实还有一个更简单的解决方法。
重新发布so库(出现该问题的库),添加--enable-shared选项,然后make && make install,覆盖原本的库。
以share形式发布的库,将不会再报这个错误。