
若该文为原创文章,转载请注明原文出处。本文基于一套完整的 C/C++ 工程代码(使用 eXosip2 作为 SIP 协议栈),详细解析了前端设备(IPC/NVR)接入 GB/T 28181 系统时,如何实现SIP 信令交互、SDP 媒体协商、PS 流封装、RTP 打包发送等关键功能。文章不仅提供原理说明,更附带了每个核心函数的完整实现和逐行注释,读者可直接参考或移植到自己的项目中。1. 背景与协议栈选型在安防视频监控领域,GB/T 28181(全称《公共安全视频监控联网系统信息传输、交换、控制技术要求》)是强制性的国家标准。它基于SIP(Session Initiation Protocol)会话控制协议,配合SDP(Session Description Protocol)进行媒体协商,最终通过RTP(Real-time Transport Protocol)传输音视频数据。本文基于一套完整的 C/C++ 实现,分析其中设备端(前端 IPC/NVR)如何作为 SIP 用户代理(User Agent)向 SIP 服务器注册,并响应实时点播(PLAY)请求,将本地存储的 H.264 视频文件和 G.711 音频文件封装为符合国标的PS 流(Program Stream)通过 RTP 发