Project

General

Profile

Bug #3398

SHL15CISCS列车cctvL15CZuid和cctvL15Trainuid.dll对收到RTP码流后的10秒保活发送ip错误(需要从invite回答的200OK中提取码流服务器ip)

Added by yufeng wu 2 months ago. Updated 2 months ago.

Status:
In Progress
Priority:
Normal
Assignee:
-
Start date:
04/28/2024
Due date:
% Done:

0%

Estimated time:

Description

QTISCSv304R4 win10
SHL15CISCS列车拉流插件cctvL15CZuid和cctvL15Trainuid.dll对收到RTP码流后的15秒保活发送ip错误(需要从invite回答的200OK中提取码流服务器ip)
导致收到ip159的码流后,仍然向ip158发送RTCP心跳,159收不到心跳保活后,停止发送码流
抓包位置==\\192.168.2.250\upload\M15\0备份\SHL15wifi车载摄像头159Mark码流卡断停止推送2024041015-RTCP心跳固定网158发错.pcapng
cctv信令服务器ip=10.21.0.6;LTE码流服务器ip=10.21.0.158;WIFI码流服务器ip=10.21.0.159
调度工作站插件ip=10.43.91.39
cfg\CZCctvUISet.ini(所有列车拉流,bin\cctvL15CZuid.dll)
cfg\TrainCctvUISet.ini(单列车电子地图拉流,bin\cctvL15Trainuid.dll)
的VideoSrcServerIP配置视频RTP码流源ip,不能固定配置死。
int MainForm::getServerRtcpPort(QString szReturn)跟据200 OK返回消息,增加提取码流服务器ip地址,更新m_szVideoServerIP,用于void MainForm::sendRTCPToServer()


Files

History

#1

Updated by yufeng wu 2 months ago

//收到INVITE 200 OK的包以后,要解析消息体里面的 m: video XXXXX RTP/AVP 取中间的端口,
//加1以后的端口号,就是服务用来接收RTCP流的端口(这个流内容没有特定要求,每隔10S发送一次,不然视频流会停止).
int MainForm::getServerRtcpPort(QString szReturn) {//Added by WYF 20240428
QString szStartIp = "c=IN IP4 "; QString szEndIp = "\r";//\r\n
int nStartIp = szReturn.lastIndexOf(szStartIp, -1, Qt::CaseInsensitive);
if (nStartIp == -1 ) {
return -1;
}
nStartIp += szStartIp.length();
QString szVideoServerIP = szReturn.mid(nStartIp, 15);//255.255.255.255
int nEndIp = szVideoServerIP.lastIndexOf(szEndIp, -1, Qt::CaseInsensitive);
if (nEndIp == -1)
m_szVideoServerIP=szVideoServerIP;
else
m_szVideoServerIP = szVideoServerIP.mid(1, nEndIp - 1);
//Added by WYF 20240428
QString szStart = "video";// "VIDEO";
QString szEnd = "RTP/AVP";
int nStart = szReturn.lastIndexOf(szStart, -1, Qt::CaseInsensitive);
int nEnd = szReturn.lastIndexOf(szEnd, -1, Qt::CaseInsensitive);

if (nStart  -1 || nEnd  -1)
    {
return -1;
}
nStart += szStart.length();
QString szPort = szReturn.mid(nStart, nEnd - nStart);
int nRtcpPort = szPort.trimmed().toInt() + 1;
return nRtcpPort;
}
#2

Updated by yufeng wu 2 months ago

  • Status changed from New to In Progress

修正QString szStartIp = "c=IN IP4"//(去除空格)
列车电子地图拉流,RTCP 15秒保活采用cctv推流端口号+1,发送保活包,自己的端口号1至9分屏分别为8204-8214......8284,1至9分屏接收码流端口号5204-5214......5284
LTE现场测试ok,但wifi摄像头RTCP udp端口号无法到达,
问题定位,需要三所 确定保活端口号,是否推流端口号+1

Also available in: Atom PDF