JRtplib开发笔记(一):JRtplib简介、JThread库编译

简介: JRtplib开发笔记(一):JRtplib简介、JThread库编译

原博主博客地址:https://blog.csdn.net/qq21497936

本文章博客地址:https://blog.csdn.net/qq21497936/article/details/84785284

目录

前话

2019年12月6日补充

JRTPLIB介绍

CMake介绍

JThread编译

步骤一:下载JThread1.3.1并解压,如下图:

步骤二:新建jthread-1.3.1_build文件夹,打开CMake设置好源码路径和编译路径,如下图:

步骤三:点击Configure配置编译环境和环境变量(笔者使用环境为VS2017)

步骤四:点击Generate、打开工程

步骤五:编译release和debug


无线同屏技术开发支撑技术

JRtplib开发笔记(一):JRtplib简介、JThread库编译》: https://blog.csdn.net/qq21497936/article/details/84785284

JRtplib开发笔记(二):JRtplib库编译、示例演示》: https://blog.csdn.net/qq21497936/article/details/84785593

JRtplib开发笔记(三):JRtplib库编程使用说明》: https://blog.csdn.net/qq21497936/article/details/84957120

JRtplib开发笔记(四):JRtplib的VS开发环境搭建以及Demo》: https://blog.csdn.net/qq21497936/article/details/84957708

 

                 JRtplib开发笔记(一):JRtplib简介、JThread库编译

 

前话

       项目中局域网AP需要达到60个点的同屏,经过多方实测,最终根据实际效果采用rtp+fec,帧率可以达到每秒5-15帧(实测)。

因为应用层使用wpf开发(C#),方案选型时使用了微软提供的rtp库,在项目上线前的实测阶段发现该库存在重大bug(rtpSession会话掉线后,无法再加入,重启软件、重新连接网络都不行,只能重启,且同一时刻启动电脑50台固定随机3-5台出现),该库是微软高度封装的rtp库,无法解决,最终依据之前几个项目的经验,核心库功能库除非必须使用微软提供的库(C#)或者组件。

往后笔者将会尽量使用C、C++和平台编程开发,不论是cpu占用率,内存管控和效率,都有大量的提升,还能移植不同平台。

 

2019年12月6日补充

该方案在2018年11月最终成功同屏,60台在一个AP局域网下,真同屏效果预期达到原先预期,且已经跨windows、linux、android,优化了库底层源码、压缩比以及其他细节,2019年3月至11月随项目改进优化几个版本,优化已超预期效果,目前得到行业内各大客户好评,公开课常用,且仅因为同屏,多客户选择使用我司系统而放弃其他中大厂同类产品。

 

JRTPLIB介绍

       JRtplib是一个用C++编写的面向对象的库,旨在帮助开发人员使用RFC3550中描述的实时传输协议(RTP),该库可以提供接口给开发者实现RTP发送和接收数据,而无需担心SSRC冲突、调度和传输RTCP数据等。用户只需要向库提供发送的有效负载数据,并且味苦提供访问传入的RTP和RTCP数据即可。

       编译JRtplib封装了多平台的多线程,使用起来只需要固定的几个类即可实现跨平台,此处提到JThread库是因为JRtplib中可以支持使用JThread库。

 

CMake介绍

       笔者使用的开发环境是VS2017, JRTPLIB封装到C库中给C#调用,我们先编译JThread库,需要使用到CMake。

       CMake是一个工程文件生成工具。用户可以使用预定义好的CMake脚本,根据自己配置选择开发环境(像是Visual Studio, Code::Blocks, Eclipse)生成不同IDE的工程文件。

       Cmake下载地址:http://download.csdn.net/download/qq21497936/10154545

       解压后直接运行cmake-gui.exe

     

      解压后直接运行cmake-gui.exe

     

JThread编译

       当前版本最新的是1.3.1版本:

       官网地址:http://research.edm.uhasselt.be/jori/page/CS/Jthread.html

       CSDN地址:https://download.csdn.net/download/qq21497936/10826029

步骤一:下载JThread1.3.1并解压,如下图:

       

步骤二:新建jthread-1.3.1_build文件夹,打开CMake设置好源码路径和编译路径,如下图:

       

       

步骤三:点击Configure配置编译环境和环境变量(笔者使用环境为VS2017)

       

       

       点击Finished,等待配置:

       

      修改环境变量,并确认使用静态编译,如下图

       

(补充:笔者为什么使用静态编译?情景一:项目测试时,50台设备,同样的硬件设备,同样的ghost系统,同样的初始化步骤,存在几台总是出现运行无反应,实际时起来了,但是c/c++库挂了;情景二:此台开发机编译后可直接exe运行,另外一台开发机却exe不行,搭建环境步骤一样,本质原因是C/C++以及系统dll等问题;综合以上原因,直接使用静态编译,避免出现这种因环境造成的运行问题)。

 

步骤四:点击Generate、打开工程

       

步骤五:编译release和debug

       

   分别生成debug和release版本

     

       

 

JRtplib开发笔记(一):JRtplib简介、JThread库编译》: https://blog.csdn.net/qq21497936/article/details/84785284

JRtplib开发笔记(二):JRtplib库编译、示例演示》: https://blog.csdn.net/qq21497936/article/details/84785593

JRtplib开发笔记(三):JRtplib库编程使用说明》: https://blog.csdn.net/qq21497936/article/details/84957120

JRtplib开发笔记(四):JRtplib的VS开发环境搭建以及Demo》: https://blog.csdn.net/qq21497936/article/details/84957708

 

原博主博客地址:https://blog.csdn.net/qq21497936

本文章博客地址:https://blog.csdn.net/qq21497936/article/details/84785284


相关文章
|
5月前
|
C++
jrtplib开源库系列之一:jrtplib介绍、安装和测试(window 10环境介绍)
关于jrtplib库网上已经有很多介绍,而且目前jrtplib作者已经停止更新(Apr 18, 2020),最新版本为v3.11.2。本系列内容也以该版本进行介绍。 相信你已经对RTP/RTCP协议有一定的了解,并想更深入的了解RTP协议的具体实现,jrtplib就是使用使用C++实现的RTP/RTCP协议。具体标准为RFC3550,如果想仔细阅读原文,但是对英文又有点吃力,可以参考我的博客RTP/RTCP中英文对照,在博客的后面有百度链接,是对RFC3550的中文翻译,可能很多地方不太准确,有些内容是自己添加进去的,希望不会影响你的阅读。
98 0
|
12月前
|
网络协议 Linux iOS开发
【100天精通python】Day40:GUI界面编程_PyQt 从入门到实战(完)_网络编程与打包发布
【100天精通python】Day40:GUI界面编程_PyQt 从入门到实战(完)_网络编程与打包发布
139 0
|
4月前
|
Python Windows
Python基础教程(第3版)中文版 第18章 程序打包 (笔记)
Python基础教程(第3版)中文版 第18章 程序打包 (笔记)
|
3月前
|
Linux
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
《FFmpeg开发实战》书中介绍了直播的RTSP和RTMP协议,以及新协议SRT和RIST。SRT是安全可靠传输协议,RIST是可靠的互联网流传输协议,两者于2017年发布。腾讯视频云采用SRT改善推流卡顿。以下是Linux环境下为FFmpeg集成libsrt和librist的步骤:下载安装源码,配置、编译和安装。要启用这些库,需重新配置FFmpeg,添加相关选项,然后编译和安装。成功后,通过`ffmpeg -version`检查版本信息以确认启用SRT和RIST支持。详细过程可参考书中相应章节。
62 1
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
|
4月前
|
编解码 Linux
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
XviD是开源的MPEG-4视频编解码器,曾与DivX一起用于早期MP4视频编码,但现在已被H.264取代。要集成XviD到Linux上的FFmpeg,首先下载源码,解压后配置并编译安装libxvid。接着,在FFmpeg源码目录中,重新配置FFmpeg以启用libxvid,然后编译并安装。成功后,通过`ffmpeg -version`检查是否启用libxvid。详细步骤包括下载、解压libxvid,使用`configure`和`make`命令安装,以及更新FFmpeg配置并安装。
64 2
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
|
5月前
|
编解码 Linux
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
在《FFmpeg开发实战》一书中,介绍了如何在Linux环境下为FFmpeg集成libopus和libvpx,以支持WebM格式的Opus和VP8/VP9编码。首先,下载并安装libopus。接着,下载并安装libvpx。最后,在FFmpeg源码目录下,重新配置FFmpeg,启用libopus和libvpx,编译并安装。通过`ffmpeg -version`检查版本信息,确认libopus和libvpx已启用。
128 1
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
|
5月前
|
编解码 并行计算 JavaScript
Nodejs 第十六章(ffmpeg)
Nodejs 第十六章(ffmpeg)
145 0
|
5月前
jrtplib开源库系列之二:jrtplib库example1分析说明
这个官方example还是比较简单的,主要是测试发一个数据包,然后自己接收发出的包,注意,这里需要注意将目的地址的端口和基端口(portbase)设置为相同,同时需要将这个参数设置为真sessparams.SetAcceptOwnPackets(true);
91 0
|
XML 网络协议 Linux
POCO库的安装与基础知识说明
一、POCO简单介绍 POCO(Portable Components)是一个轻量级的 C++ 类库,提供了许多基本的、可移植的 C++ 组件和工具。它包含了很多模块,例如网络、XML、加密、多线程等等,可帮助 C++ 开发人员快速构建高效、可靠、可扩展的应用程序。 1.1 基本模块 Foundation:提供了许多基本的 C++ 类和函数,例如字符串、文件、日期时间、异常处理、日志等等。 Net:提供了网络编程的支持,包括 TCP、UDP、HTTP、HTTPS、SMTP、POP3、FTP、DNS 等等。 Util:提供了各种工具和辅助函数,例如配置文件、命令行解析、正则表达式、JS
556 0
|
安全 API 调度
Qt开发笔记:QGLWidget、QOpenGLWidget详解及区别
Qt开发笔记:QGLWidget、QOpenGLWidget详解及区别
Qt开发笔记:QGLWidget、QOpenGLWidget详解及区别