GB28181开发(四) --pjsip编译

本文详细介绍了如何编译pjsip库,包括下载pjsip 2.9版本,以及编译依赖的SDL、ffmpeg、x264和x265。在编译过程中,提供了详细的步骤,如配置选项、编译命令及安装路径等,以支持GB28181协议的扩展。

pjsip的下载网页如下:

https://www.pjsip.org/download.htm

我使用的是2.9版本,可以直接点击下面链接下载

https://www.pjsip.org/release/2.9/pjproject-2.9.tar.bz2

根据编译文档,我们需要额外的第三方库:

1、SDL

GB28181协议附加参数使用了SDL协议,所以必须下载编译,地址是

https://www.libsdl.org/release/SDL2-2.0.10.tar.gz

编译的话,直接

./configure

make

sudo make install

 

2、ffmpeg

pjsip库使用ffmpeg进行音视频方面的编解码,所以也需要下载,下载网页

http://ffmpeg.org/download.html

我使用的是4.2.1版本,另外,受版权限制,ffmpeg只包含了h264的解码,所以需要额外下载x264,以便支持h264的编码。h265目前也比较流行,所以还需要下载x265。

下载x264

ftp://ftp.vi

### 使用Qt实现GB28181服务端 #### 一、简介 GB28181 是一种视频监控联网系统的国家标准,在中国广泛应用于安防领域。要使用 Qt 实现 GB28181 协议的服务端,主要涉及 SIP (Session Initiation Protocol) 和 RTP/RTCP (Real-time Transport Protocol / Real-Time Control Protocol) 的处理。 #### 二、环境搭建 为了构建支持 GB28181 的 Qt 应用程序,需先安装必要的文件和支持工具[^3]: - 安装 Qt 及其网络模块; - 下载编译开源的 PJSIP 或其他兼容 SIP 协议栈; - 准备用于音视频流传输的 GStreamer SDK; #### 三、核心组件设计 ##### 1. SIP 消息解析器 创建自定义类继承 `QIODevice` 来读取来自客户端的消息,并通过正则表达式或其他方式解析 SIP 请求头字段。 ```cpp class SipMessageParser : public QIODevice { Q_OBJECT public: explicit SipMessageParser(QObject *parent = nullptr); protected: qint64 readData(char *data, qint64 maxSize) override; }; ``` ##### 2. 用户注册管理 维护一个在线用户的列表,记录每个设备的状态信息以及对应的 IP 地址和端口号等参数。 ```cpp struct DeviceInfo { QString deviceId; // 设备唯一标识符 QString ipAddress; // 连接地址 quint16 portNumber; // 端口号码 }; QMap<QString,DeviceInfo> registeredDevices; ``` ##### 3. 流媒体会话控制 当收到呼叫邀请时,根据目标 ID 查找相应的接收方,并建立新的 RTP 会话来转发实时视音频数据包。 ```cpp void startRtpStream(const QString& callerId,const QString& calleeId){ auto it = registeredDevices.find(calleeId); if(it != registeredDevices.end()){ RtpSession* session=new RtpSession(this,it.value().ipAddress,to_string(it.value().portNumber)); connect(session,SIGNAL(finished()),session,SLOT(deleteLater())); sessions.insert(callerId,session); session->start(); } } ``` #### 、安全性考虑 考虑到网络安全的重要性,建议采用 TLS 加密通道保护信令交互过程中的敏感信息交换[^4]。可以利用 Qt 提供的安全套接字接口 (`QSslSocket`) 对原始 TCP Socket 进行封装。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值