ffmpeg编译与搭建笔记

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形式发布的库,将不会再报这个错误。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值