live555使用过程中遇到一个问题,发送低分辨率的码流OK,发送高分辨率的码流会丢包,而且丢的大部分都是 I 帧;
两台设备网线直连测试是OK的;
开始怀疑是交换机的限制,但是个人对交换机原理并不是很了解,如果说大包进行过滤的话,到交换机的MTU应该都是一样的,不会说有I帧的包特别大,只是会拆包比较多而已,暂时排除交换机问题;
如果不是交换机问题,那么猜想只能是socket缓冲问题了;
live555中有很多缓冲,比如说读取码流数据缓冲,rtp缓冲,socket sendbuf缓冲等等;
查看源码后发现socket sndbuf缓冲 默认只有50K, 修改为sndbuf 为512K后 问题解决;
修改方法:在源码中 关键字 sndbuf,找到相应的位置修改bufsize就可以了。