ubuntu 18.04 编译 librtmp

如果使用openssl, 需要降级 ssl 至 1.0 版本

https://blog.csdn.net/sjp1992/article/details/109161573

问题  HMAC_CTX ctx
出现上述问题的原因是openssl版本太新,和当前rtmp版本不兼容,需要降低openssl版本,我这使用的是openssl1.1.1版本,降低到了openssl1.0版本。直接执行以下语句安装即可降低openssl版本:
可能要先去除掉高版本
sudo apt remove libssl-dev
sudo apt install libssl1.0-dev

如果使用guntls, 需要修改 两个MakeFile  , 改为 gnutls

sudo apt install libgnutls28-dev libgnutls30

librtmp 在网络中断时存在的崩溃 问题和阻塞问题解决

1. 崩溃问题

Linux下send()函数发送数据卡死问题_wojiaxiaohuang2014的博客-CSDN博客

int
RTMPSockBuf_Send(RTMPSockBuf *sb, const char *buf, int len)
{
  int rc;

#ifdef _DEBUG
  fwrite(buf, 1, len, netstackdump);
#endif

#if defined(CRYPTO) && !defined(NO_SSL)
  if (sb->sb_ssl)
    {
      rc = TLS_write(sb->sb_ssl, buf, len);
    }
  else
#endif
    {
      rc = send(sb->sb_socket, buf, len, MSG_NOSIGNAL);    // CHANGE BY wanghao , flags from 0 to MSG_NOSIGNAL
    }
  return rc;
}

2. 阻塞问题设置超时时间

int
RTMP_Connect0(RTMP *r, struct sockaddr * service)
{
....
      struct timeval timeout={5,0};//5s     // CHANGE BY WH , add send timeout
      int setsocketoptret = setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout));
      if (setsocketoptret < 0 )
      {
          RTMP_Log(RTMP_LOGERROR, "%s, Setting socket timeout to %d s failed!",
                   __FUNCTION__, 5);
      }

....
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值