windows编译librtmp

26 篇文章 0 订阅
10 篇文章 0 订阅


编译准备

  1. librtmp依赖 openssl、zlib。
  2. openssl的编译请看 openssl源码编译
  3. zlib的编译请看windows 编译zlib
  4. rtmpdump源码:RTMPDump

编译过程

  1. rtmpdump 源码规模不大,并且后续要做跨平台构建,所以自己写CMakeLists.txt 构建。

编译问题

  1. 问题描述rtmp_sys.h系统库中 ucrt/errno.h 对 宏EWOULDBLOCK 的定义冲突 在这里插入图片描述
    问题定位:检查 ucrt/errno.h 发现,如果没有预定义 _CRT_NO_POSIX_ERROR_CODES,则定义 EWOULDBLOCK
    解决方法:CMakeLists.txt中增加 add_definitions(-D_CRT_NO_POSIX_ERROR_CODES) 避免ucrt中预定义。
  2. 问题描述rtmp_sys.h系统库中 ucrt/stdio.h 对 宏vsnprintf 的定义冲突
    在这里插入图片描述
    问题定位:检查源码后确认,两份源码对该宏/方法的使用、及参数列表的定义完全一致。
    解决方法:考虑到rtmp源码仅有一处宏定义,影响较小,删除 rtmp_sys.h 中 宏vsnprintf的定义。
    备注:宏snprintf 存在相同问题。
  3. 问题描述“ctx”使用未定义的 struct“hmac_ctx_st”
    问题定位:网上搜了相关问题的解决方案,找到 OpenSSL 1.1.0 Changes,该文档内提及自1.1.0开始,openssl将所有的结构体定义从头文件移至源码文件中。
    解决方法:有两种方法
    1. 降级使用1.1.0以下的openssl,我采用该方法。
    2. 修改rtmp引用的ssl相关接口,更新至1.1.0+的新接口。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值