视频流对接采用pjproject相关库实现sip服务器,采用pjmedia实现视频流接收。 媒体服务器完全自研,媒体服务器实现了rtsp协议,jrtplib库实现RTP的发送,ACE库实现垮平台底层支撑。
sipsvc以及mediasvc以及管理系统采用MQTT实现进程通信。
sipsvc核心代码分享:
SIP初始化:
status = pjsip_endpt_create(&_cp->factory, pj_gethostname()->ptr, &_sip_endpt);
if (status != PJ_SUCCESS) {
ERROR_LOG(THIS_FILE, "pjsip_endpt_create failed", status);
return status;
}
/* Add UDP transport. */
{
pj_sockaddr_in addr;
pjsip_host_port addrname;
pjsip_transport *tp;
pj_bzero(&addr, sizeof(addr));
addr.sin_family = pj_AF_INET();
addr.sin_port = pj_htons((pj_uint16_t)_sip_port);
if (_localAddr.slen) {
addrname.host = _localAddr;
addrname.port = _sip_port;
status = pj_sockaddr_in_init(&addr, &_localAddr, (pj_uint16_t)_sip_port);
if (status != PJ_SUCCESS) {
ERROR_LOG(THIS_FILE, "Unable to resolve IP interface", status);
return status;
}
}
status = pjsip_udp_transport_start(_sip_endpt, &addr,(_localAddr.slen ? &addrname : NULL),1, &tp);