jrtplib收取码流只能接收1分钟,发现是收到到了RTCP BYE,为什么

Ansersion 2016-02-21 03:23:27
我使用的是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);

...全文
501 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ansersion 2016-03-18
  • 打赏
  • 举报
回复
原因不明,我改用live555做服务端了,没什么问题。
kinkon007 2016-02-22
  • 打赏
  • 举报
回复
抓一下ffplay与vlc交互的数据包,看下是否有该应答的包你没应答,结果让vlc认为你不在线了就发BYE包来。

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧