jrtplib收取码流只能接收1分钟,发现是收到到了RTCP BYE,为什么
我使用的是jrtplib-3.9.1.。服务端用的是vlc一直播放一段视频。
然后我用自己写的RTSP命令,RTP接收数据用jrtplib。
前1分钟接受数据正常,可是每到1分钟或1分0几秒时,数据接受就断开了。
用tcpdump抓了包,发现vlc发送了一个rtcp的bye的包。
后来我用ffplay直接播放vlc的RTSP,却没出现这个问题,抓包也没看见rtcp的bye包。
请问这是为什么?
以下是用jrtplib接收rtp数据的代码:
do {
#ifndef RTP_SUPPORT_THREAD
int status = Poll();
if(!IsError(status)) return NULL;
#endif
BeginDataAccess();
// check incoming packets
if (!GotoFirstSourceWithData()) {
EndDataAccess();
usleep(USLEEP_UNIT);
UsleepTimes--;
continue;
// return NULL;
}
RTPPacket *pack;
if(!(pack = GetNextPacket()))
{
EndDataAccess();
usleep(USLEEP_UNIT);
UsleepTimes--;
continue;
// return NULL;
}
size_t PacketSize = 0;
uint8_t * Packet = NULL;
Packet = pack->GetPayloadData();
PacketSize = pack->GetPayloadLength();
// printf("data length: %lu\n", PacketSize);
*size = PacketSize;
memcpy(data_buf, Packet, PacketSize);
// we don't longer need the packet, so
// we'll delete it
DeletePacket(pack);
EndDataAccess();
UsleepTimes = 0; // Got the data. So not need to sleep any more.
} while(UsleepTimes > 0);