jrtplib3.11.1使用摘录

1、jthread支持与否区别

jrtplib-3.x中有两种数据接收方式:
  《1》、使用jthread库提供的线程自动在后台执行对数据的接收;
  《2》、不用jthread,用户自己定期调用RTPsession中的Poll方法(官方demo1,3,5,6中均可看到);
在这里插入图片描述
在这里插入图片描述

  • 编译时jthread先编译安装后再编译jrtplib即可支持线程处理;

2、RTP包处理方式

  《1》、 实现自己的OnRTPPacket方法; 该方法里面不能直接释放RTP包,因为在之后处理流程会用到该包;如下图:
在这里插入图片描述

  《2》、实现自己的OnValidatedRTPPacket方法(example6,8),该方法里面可以直接释放RTP包。

  《3》、实现自己的OnPollThreadStep方法(example4),该方法里也可直接释放RTP包。该方法在线程里面定时调用用于接收包或发送包;
在这里插入图片描述
在这里插入图片描述

在jrtplib里面的调用流程是《1》先执行然后再执行《2》。

3、设置jrtplib的接收模式

在jrtplib中有三种接收模式:

enum ReceiveMode 
{ 
   AcceptAll,    /**< All incoming data is accepted, no matter where it originated from. */
   AcceptSome, /**< Only data coming from specific sources will be  accepted. */    
   IgnoreSome   /**< All incoming data is accepted, except for data coming from a specific set of sources. */
};
  • AcceptAll模式是默认接收模式,所有到达的RTP包均被接收;
  • AcceptSome模式是只接受特定发送者发过来的RTP包,其余的拒绝。可以通过一下三个API操作接收对象。
    在这里插入图片描述
  • IgnoreSome模式是除了特定发送者发送过来的RTP被拒绝,其余的都接收。可通过以下三个API操作拒绝对象。
    在这里插入图片描述

例子:

sessparams.SetReceiveMode(RTPTransmitter::AcceptSome);
uint32_t int_ip = ntohl(inet_addr(“192.168.1.222”));
RTPIPv4Address addr(int_ip , 0);
int my_ret = sess->AddToAcceptList(addr); /* 监控该IP源,端口设置为0表示监控所有端口 */

4、设置接收rtp包的buffer大小

int rtp_size = transparams.GetRTPReceiveBuffer();
int rtcp_size = transparams.GetRTCPReceiveBuffer();
transparams.SetRTPReceiveBuffer(rtp_size * 20);    /* 接收RTP包的buffer设置大些,不然容易丢包或接收不全  */
sessparams.SetMaximumPacketSize(2500);

5、参考

1、流媒体协议之JRTPLIB的使用20170919

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值