ffmpeg交叉编译问题及对策

记录ffmpeg交叉编译及移植过程遇到的问题,方便自己也方便他人。

问题1:ERROR:srt>=1.3.0 not found using pkg-config

生成编译文件报错

问题描述:

无法根据配置生成Makefile文件

原因

查看 ffbuild/config.log文件,发现编译配置使能了libsrt,libsrt需要用到OpenSSL相关动态库文件,未指定库文件,编译时找不到OpenSSL库;另外可能的原因是找不到对应的库的路径,要确保指定的库的相关路径正确,检查核对–extra-cflags="-I…" --extra-ldflags="-L/…"这两条是否正确。
在这里插入图片描述

解决方案

通过–extra-libs 指定相关库文件
在这里插入图片描述

问题2:C compiler test failed.

在这里插入图片描述

问题描述:

./configure 配置Makefile失败,无法生成Makefile

原因

通过ffbuild/config.log日志确认,原因为编译器找不到x264的库文件导致;

解决方案

1、找到库路径
2 /etc/ld.so.conf.d/文件夹下新增一个文件 文件名.conf
3、新增路径
4、保存退出
5、输入命令sudo ldconfig
通过以上操作,系统编译时就会增加相应路径下检索相关库文件

问题3:"/usr/local/include" is unsafe for cross-compilation

编译告警

问题描述:

编译过程中,一直提示连接不安全

原因

生成的ffbuild/config.mak文件中 指定头文件(.h文件)的路径CFLAGS里包含/usr/local/include。
之后深究其中问题,发现是自己之前为主机配置环境变量CFLAGS包含了/usr/local/include相关路径;
使用 export -n CFLAGE 命令删除CFLAGS环境变量后,ffbuild/config.mak里就不会自动加入相关路径了;

解决方案

参考博文:

MinGW32编译ffmpeg+libsrt_无聊星期三的博客-CSDN博客_ffmpeg srt (https://blog.csdn.net/Boring_Wednesday/article/details/88674854)

通过设置环境变量可以更彻底地解决该问题

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/ffmpeglib/lib/pkgconfig

问题4:error:'SRTO STRICTENC’undeclared

在这里插入图片描述

问题描述:

编译报错SRTO_STRICTENC 未定义, SRTO_SMOOTHER 未定义

原因

在Github上找到了相关问题的讨论https://github.com/Haivision/srt/issues/1382,大致是宏定义名称被重命名了,所以ffmpeg找到对应的项;
在这里插入图片描述

解决方案

修改libavformat/libsrt.c文件,用新的宏定义名称替换旧的
在这里插入图片描述
SRTO_SMOOTHER -> SRTO_CONGESTION
SRTO_STRICTENC -> SRTO_ENFORCEDENCRYPTION
SRTO_TSBPDDELAY -> SRTO_LATENCY

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值