Author:Peter
Location:FZU
Date: 2022-05-24

:如人饮水,冷暖自知。


在流媒体传输过程中,通信双方底层采用udp传输方式,则接收端需对相应套接字配置udp接收缓冲区大小。如果缓存太小、发送方在某时刻数据量过大,未作流控,则可能导致源头丢包(内核缓存上溢)。接收端通过 setsockopt(s_server, SOL_SOCKET, SO_RCVBUF, (char *)&nRecvBuf, sizeof(int)),如果nRecvBuf大于系统默认最大值rmem_max,则初始化接收缓冲区为2*rmem_max,如果nRecvBuf小于系统默认最大值rmem_max,则初始化接收缓冲区为2*nRecvBuf


一、[linux]内核UDP接收缓冲区注意事项

1.1 linux查看udp缓冲区默认大小

#最大值(默认212992字节)
cat /proc/sys/net/core/rmem_max   
#最小值(默认212992字节)
cat /proc/sys/net/core/rmem_default
#或者采用sysctl -a | grep rmem_max

1.2 linux修改udp缓冲区默认大小

  • 修改udp缓冲区最大值为4MB立即生效(重启失效)
    $ sudo sysctl -w net.core.rmem_max=4194304
    net.core.rmem_max = 4194304
    
  • 修改/etc/sysctl.conf(重启也生效)
    #vim编辑 在末尾添加
    net.core.rmem_max=4194304
    #保存退出
    sysctl -p #生效
    

二、rtsp转发代理服务器设计

2.1 rtsp基本概念

2.2 基于TCP传输RTP

2.3 基于UDP传输RTP

2.4 H264(nalu)封包为RTP

Logo

更多推荐