ubuntu18.04编译GB28181Server

news/2024/12/2 23:47:17/

目录

  • 一、简绍
  • 二、项目依赖的第三方库
    • 2.1 jrtplib
      • 2.1.1 编译JRTPLIB
    • 2.2 mxml
      • 2.2.1 编译mxml
    • 2.3 osip2/exosip2
      • 2.3.1 编译osip2
      • 2.3.2 编译exosip2
    • 2.4 ffmpeg
    • 2.5 提示
  • 三、修改GB28181Server
    • 3.1 修改GB28181Server.pri
    • 3.2 修改AppConfig.cpp
    • 3.3 修改GB28181Server.cpp
    • 3.4 修改RtpReciever.cpp
    • 3.5 修改main.cpp
  • 四、小提示
    • 4.1 运行时找不到第三方库
    • 4.2 中文乱码

一、简绍

GB28181Server是基于Qt+ffmpeg+exosip+jrtplib 实现的GB28181服务器
项目地址:GB28181Server

项目的开发者(云天之巅-音视频技术中心)只适配了Windows系统,在Linux系统上并没有过多的进行适配。

二、项目依赖的第三方库

2.1 jrtplib

项目地址:JThread(可选)
项目地址:JRTPLIB

jrtplib是一个基于C++、面向对象的RTP封装库。

2.1.1 编译JRTPLIB

需要安装cmake,需要使用JThread需要先编译,编译方式跟JRTPLIB一样的(这个项目中没有用到jthread)

sudo apt install cmake
# 进入目录源代码目录后
mkdir build && cd build
cmake ..
make -j
sudo make install

2.2 mxml

项目地址:mxml
Mini-XML是一个小型的XML解析库,你可以用来在你的应用程序中读取XML数据文件或字符串,而不需要大型的非标准库。

2.2.1 编译mxml

./configure
make -j
sudo make install

2.3 osip2/exosip2

参考:ubuntu 安装osip2/eXosip2

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

2.3.1 编译osip2

./configure
make -j
sudo make install

2.3.2 编译exosip2

编译这个有报一个错,关于ssl的。如果报错了安装

sudo apt install libssl1.0-dev
./configure
make -j
sudo make install

2.4 ffmpeg

ffmpeg我就不进行编译了,我直接使用apt install 下来的开发包

sudo apt install libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libpostproc-dev libswscale-dev -y

2.5 提示

该项目的作者有提供第三库的源码,你也可以直接使用作者提供的第三方库源码进行编译。

三、修改GB28181Server

3.1 修改GB28181Server.pri

在最后面追加

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帮你把路径添加上来也是可以的。

3.2 修改AppConfig.cpp

提示:看注释

#include "AppConfig.h"#if defined(WIN32)
#include <winsock2.h>
#include <windows.h>
#include <direct.h>
#include <io.h>
#else
#include <sys/time.h>
#include <stdio.h>
#include <unistd.h>
//添加cstring
#include <cstring>void Sleep(long mSeconds)
{usleep(mSeconds * 1000);
}
#endif

3.3 修改GB28181Server.cpp

从14行看

#if defined(WIN32)#include <winsock2.h>#include <windows.h>
#else#include <pthread.h>//添加 sys/socket.h 和 netinet/in.h#include <sys/socket.h>#include <netinet/in.h>
#endif

注释掉下面这句,因为这句是作者修改了exosip的代码加的,我使用的是原生的,所以呢这句话我没用到

 //int udpSsocketFd = eXosip_event_getUdpSocket(eCtx, remoteIpAddr, &remotePort);

3.4 修改RtpReciever.cpp

修改一下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"

3.5 修改main.cpp

这里有个大小写的问题

#include "MainWindow.h"

四、小提示

4.1 运行时找不到第三方库

运行程序的时候出现类似以下错误:

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
在这里插入图片描述
添加完成后,接下来去检查一下,看下图,检查一下有灭有
在这里插入图片描述

4.2 中文乱码

这个项目是在windows上开发的文本格式应该是GBK,打开项目也正常,运行程序也正常,OK
在这里插入图片描述

要看一下GB28181的有关参考吗?看看?
有关GB28181的参考


http://www.ppmy.cn/news/347587.html

相关文章

Ubuntu 18.04.5 LTS INCISIVE15 Installation

Thanks for the tuturial from YYP_8020 ("在Ubuntu 18.04下安装INCISIVE151_YYP_8020的博客-CSDN博客_incisive安装") edit the apt source.list " sudo cp /etc/apt/sources.list /etc/apt/sources_init.list "[ comment the deb-src source ]Ubuntu …

L718

L718 SDK mrc 网络操作 mdc 数据业务操作 inps 内置业务操作 mcc 语音电话 基础配置、场景及APN配置、SIM初始化和检测、GPRS网络状态和注册、PDP场景激活、连接建立 程序调试 1、硬件连接&#xff1a; 开发板USB连接电脑&#xff0c;安装L718驱动&#xff0c;然后通过串口工…

Ubuntu16.04 LTS 安装qt4

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Ubuntu16.04安装qt4.8.7 前言一、原材料1.虚拟机软件2.虚拟机镜像镜像名下载地址 3.qt压缩包对应文件名下载链接 二、安装步骤1.vmware装好虚拟机2.将压缩包下载到ubuntu上3.…

Ubuntu18.04 qt5.14安装

1.下载qt5.14.2 链接Index of /archive/qt 2.安装 打开终端&#xff0c;进入安装包目录&#xff0c;给安装包rwx权限 chmod 777 qt-opensource-linux-x64-5.14.2.run 可以查看权限 输入命令进行qt安装&#xff0c;执行后会跳出安装界面 sudo ./qt-opensource-linux-x64-5.…

如何进行条件语句和循环结构的编写?

在Java中&#xff0c;你可以使用条件语句&#xff08;如if语句和switch语句&#xff09;和循环结构&#xff08;如for循环、while循环和do-while循环&#xff09;来控制程序的执行流程。下面是它们的基本用法&#xff1a; 条件语句&#xff1a; if语句&#xff1a; javaCopy …

mysql中SQL语句查询字段相加的和,以及更改小数精确位。和查询SQL语句结果相减的SQL查询

最近在工作中碰到了SQL进行查询&#xff0c;用户缴费以及退费信息的工作&#xff0c;以及查询完后需要修改SQL结果后小数位的需求&#xff0c;整理结果如下: 首先&#xff0c;看内容&#xff1a; 如图&#xff0c;operate_type代表缴费与退费&#xff0c;分别用0和1区别。 #…

Java面试题之在ssm项目中如何同时连接两个数据库

ssm项目中如何同时连接两个数据库 在 SSM 项目中&#xff0c;可以通过配置多个数据源来连接多个数据库。下面以 Spring Boot 为例&#xff0c;介绍如何同时连接两个数据库。 首先需要在配置文件&#xff08;application.properties 或 application.yml&#xff09;中配置多个…

CMU 15-445 Project #1 - Buffer Pool(Task #2 - LRU-K Replacement Policy)

Task #2 - LRU-K Replacement Policy 一、题目链接二、准备工作三、部分实现四、自定义测试用例 一、题目链接 二、准备工作 见 CMU 15-445 Project #0 - C Primer 中的准备工作。 三、部分实现 LRU-K的提出是为了更好地解决传统LRU中的缓存污染问题。所谓缓存污染&#xff0…