GB28181Server是基于Qt+ffmpeg+exosip+jrtplib 实现的GB28181服务器
项目地址:GB28181Server
项目的开发者(云天之巅-音视频技术中心)只适配了Windows系统,在Linux系统上并没有过多的进行适配。
项目地址:JThread(可选)
项目地址:JRTPLIB
jrtplib是一个基于C++、面向对象的RTP封装库。
需要安装cmake,需要使用JThread需要先编译,编译方式跟JRTPLIB一样的(这个项目中没有用到jthread)
sudo apt install cmake
# 进入目录源代码目录后
mkdir build && cd build
cmake ..
make -j
sudo make install
项目地址:mxml
Mini-XML是一个小型的XML解析库,你可以用来在你的应用程序中读取XML数据文件或字符串,而不需要大型的非标准库。
./configure
make -j
sudo make install
Osip地址:http://ftp.gnu.org/gnu/osip/
Xsip2地址: http://download.savannah.nongnu.org/releases/exosip/
wget http://ftp.gnu.org/gnu/osip/libosip2-5.2.1.tar.gz
wget http://download.savannah.nongnu.org/releases/exosip/libexosip2-5.2.1.tar.gz
./configure
make -j
sudo make install
编译这个有报一个错,关于ssl的。如果报错了安装
sudo apt install libssl1.0-dev
./configure
make -j
sudo make install
ffmpeg我就不进行编译了,我直接使用apt install 下来的开发包
sudo apt install libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libpostproc-dev libswscale-dev -y
该项目的作者有提供第三库的源码,你也可以直接使用作者提供的第三方库源码进行编译。
在最后面追加
unix{
INCLUDEPATH += /usr/lcoal/include
unix:!macx: LIBS += -lmxml -ljrtp -losip2 -leXosip2 -losipparser2
unix:!macx: LIBS += -lavcodec -lavdevice -lavfilter -lavformat -lpostproc -lavutil -lswresample -lswscale
}
若这样还是提示有库无法链接到的话,建议使用 “鼠标右键–>添加库–>外部库”,选择你要添加的库,Qt帮你把路径添加上来也是可以的。
提示:看注释
#include "AppConfig.h"
#if defined(WIN32)
#include
#include
#include
#include
#else
#include
#include
#include
//添加cstring
#include
void Sleep(long mSeconds)
{
usleep(mSeconds * 1000);
}
#endif
从14行看
#if defined(WIN32)
#include
#include
#else
#include
//添加 sys/socket.h 和 netinet/in.h
#include
#include
#endif
注释掉下面这句,因为这句是作者修改了exosip的代码加的,我使用的是原生的,所以呢这句话我没用到
//int udpSsocketFd = eXosip_event_getUdpSocket(eCtx, remoteIpAddr, &remotePort);
修改一下jrtplib的头文件路径
#include "jrtplib3/rtpsession.h"
#include "jrtplib3/rtppacket.h"
#include "jrtplib3/rtpudpv4transmitter.h"
#include "jrtplib3/rtpipv4address.h"
#include "jrtplib3/rtpsessionparams.h"
#include "jrtplib3/rtperrors.h"
#include "jrtplib3/rtpsourcedata.h"
#include "jrtplib3/rtpmemoryobject.h"
这里有个大小写的问题
#include "MainWindow.h"
运行程序的时候出现类似以下错误:
error while loading shared libraries:
libmxml.so.1: cannot open shared object file: No such file or directory
如果你按照我的那个方式去安装第三方库,值就可以填 /usr/local/lib,如果你自定义了install 的目录(configure 指定了目录)的时候,需要自己修改一下。
添加一个 LD_LIBRARY_PATH 值为 /usr/local/lib
添加完成后,接下来去检查一下,看下图,检查一下有灭有
这个项目是在windows上开发的文本格式应该是GBK,打开项目也正常,运行程序也正常,OK
要看一下GB28181的有关参考吗?看看?
有关GB28181的参考