live555的一点bug修改(客户端和服务器)
来源:互联网 发布:linux ubuntu安装教程 编辑:程序博客网 时间:2024/05/17 06:33
客户端主要出错信息:
MultiFramedRTPSource error: Hit limit when reading incoming packet over TCP. Increase \"MAX_PACKET_SIZE\"
RTCPInstance error: Hit limit [1450,1450] when reading incoming packet over TCP. Increase "maxRTCPPacketSize"
live555源码修改记录
服务器端:
针对1080P高清H264码率过大,需要修改live/mediaServer/DynamicRTSPServer.cpp文件中第117行
OutPacketBuffer::maxSize = 1024*1024; // allow for some possibly large H.264 frames
maxSize的值,具体大小可根据实际播放画面质量和服务器打印的出错信息修改
针对服务器发送的RTP包出错,发送时超出系统TCP buffer大小,需修改:live/liveMedia/RTPInterface.cpp sendDataOverTCP()函数
修改为
makeSocketBlocking(socketNum);
int sendSuccess = loopsend(socketNum,data,dataSize);
makeSocketNonBlocking(socketNum);
if(sendSuccess == dataSize)
{
return True;
}
else
{
printf("send false...........\n");
return False;
}
需添加loopsend()函数
int loopsend(int sock, u_int8_t const* buf, unsigned int sndsize)
{
int remian = sndsize;
int sendlen = 0;
int ret = 0;
while(remian > 0)
{
ret=send(sock,buf+sendlen,remian,0);
if(ret <= 0)
{
printf("ret = %d\n",ret);
return ret;
}
sendlen += ret;
remian -= ret;
}
return sndsize;
}
客户端代码健壮性加强
修改live/liveMedia/RTPInterface.cpp 中tcpReadHandler1()函数
在case AWAITING_SIZE2:中
unsigned short size = (fSizeByte1<<8)|c;后添加RTP和RTCP包的大小判断
添加代码如下:
if(fStreamChannelId == 0x00)
if(size > 20000) //lcy add 20000为"MAX_PACKET_SIZE"值的大小(RTP包的最大值)
{
fTCPReadingState = AWAITING_DOLLAR;
break;
}
if(fStreamChannelId == 0x01)
if(size > 1450) //lcy add 1450为"maxRTCPPacketSize"值的大小(RTCP包的大小)
{
fTCPReadingState = AWAITING_DOLLAR;
break;
}
MultiFramedRTPSource error: Hit limit when reading incoming packet over TCP. Increase \"MAX_PACKET_SIZE\"
RTCPInstance error: Hit limit [1450,1450] when reading incoming packet over TCP. Increase "maxRTCPPacketSize"
live555源码修改记录
服务器端:
针对1080P高清H264码率过大,需要修改live/mediaServer/DynamicRTSPServer.cpp文件中第117行
OutPacketBuffer::maxSize = 1024*1024; // allow for some possibly large H.264 frames
maxSize的值,具体大小可根据实际播放画面质量和服务器打印的出错信息修改
针对服务器发送的RTP包出错,发送时超出系统TCP buffer大小,需修改:live/liveMedia/RTPInterface.cpp sendDataOverTCP()函数
修改为
makeSocketBlocking(socketNum);
int sendSuccess = loopsend(socketNum,data,dataSize);
makeSocketNonBlocking(socketNum);
if(sendSuccess == dataSize)
{
return True;
}
else
{
printf("send false...........\n");
return False;
}
需添加loopsend()函数
int loopsend(int sock, u_int8_t const* buf, unsigned int sndsize)
{
int remian = sndsize;
int sendlen = 0;
int ret = 0;
while(remian > 0)
{
ret=send(sock,buf+sendlen,remian,0);
if(ret <= 0)
{
printf("ret = %d\n",ret);
return ret;
}
sendlen += ret;
remian -= ret;
}
return sndsize;
}
客户端代码健壮性加强
修改live/liveMedia/RTPInterface.cpp 中tcpReadHandler1()函数
在case AWAITING_SIZE2:中
unsigned short size = (fSizeByte1<<8)|c;后添加RTP和RTCP包的大小判断
添加代码如下:
if(fStreamChannelId == 0x00)
if(size > 20000) //lcy add 20000为"MAX_PACKET_SIZE"值的大小(RTP包的最大值)
{
fTCPReadingState = AWAITING_DOLLAR;
break;
}
if(fStreamChannelId == 0x01)
if(size > 1450) //lcy add 1450为"maxRTCPPacketSize"值的大小(RTCP包的大小)
{
fTCPReadingState = AWAITING_DOLLAR;
break;
}
0 0
- live555的一点bug修改(客户端和服务器)
- 关于客户端和服务器端live555的一点bug修改
- 关于客户端和服务器端live555的一点bug修改
- live555--服务器,客户端(转载)
- live555的安装 RTSP点播消息流程实例(客户端:VLC, RTSP服务器:LIVE555 Media Server)
- oracle服务器和客户端字符集的查看和修改
- oracle服务器和客户端字符集的查看和修改
- oracle服务器和客户端字符集的查看和修改
- oracle服务器和客户端字符集的查看和修改 .
- oracle服务器和客户端字符集的查看和修改
- oracle服务器和客户端字符集的查看和修改
- oracle服务器和客户端字符集的查看和修改
- oracle服务器和客户端字符集的查看和修改
- oracle服务器和客户端字符集的查看和修改
- live555 客户端的实现
- 如何修改bug(一)-bug的分类和定义
- RTSP客户端学习(一)——live555库的移植和验证
- RTSP客户端学习(一)——live555库的移植和验证
- UITableView基本用法
- android命令
- IOS 图片资源 @2x.png
- Openstack Swift Quotas
- SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' ......
- live555的一点bug修改(客户端和服务器)
- QQ自动把斜线转为表情了
- SSL协议的分析和实现
- linux共享库位置配置(LD_LIBRARY_PATH环境变量 或者 更改/etc/ld.so.conf 或者 使用-R选项)
- C++和android进行socket通信小结
- 为什么很多PHP文件不加闭合标签?>
- 套接字地址结构
- UItableView基础加深
- 创建opencv Matrix时候的type