- 博客(165)
- 资源 (19)
- 收藏
- 关注
原创 跨域资源共享CORS
1、背景 在前后端分离的开发模式中,数据的获取并非同源,所有就出现了跨域的问题。什么时候产生跨域呢?广义的跨域是值浏览器为了一定的安全因素,增加了同源策略。有违同源策略的操作都是被禁止的,这个时候就会发生我们所说的跨域。如果有没有同源策略,则会发送请求发出去了,数据没回来。狭义的跨域是指ajax请求无法完成。2、简介 CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。允许浏览器向跨源服务器,发出XMLHt...
2021-04-07 16:40:10
9
原创 http解析库http-parser
一、http-parser简介1、简介 http-parser是一个用C编写的HTTP消息解析器,可以解析请求和响应,被设计用于高性能HTTP应用程序。它不会进行任何系统调用及内存分配,它不会缓冲数据,它可以被随时中断。根据你的体系结构,每个消息流只需要大约40个字节的数据(在每个连接的web服务器中。2、特征不依赖第三方库 处理持续流 分块解码 支持Upgrade 防止缓冲区溢出攻击3、可以从HTTP消息中解析下列信息报头域及值(Header fields and...
2021-04-07 16:29:13
22
原创 C++11之lambda回调设置与应用
在程序中有时候我们需要实现回调效果,比如先设置监听,然后在后面具体执行完某个操作后再将该操作的结果通知给前面监听中。这种机制实际很常用,比如window底下的消息机制,Qt中的信号槽的机制都有类似的效果。但是在C++中并没有类似机制,那么我们应如何实现呢? 实际上在C++中我们可以使用模板、函数指针、抽象类、和lambda就可实现回调的效果,本文重点讲解如何使用lambda和function在同步线程中实现回调的效果。关于lambda介绍可参我前面的博客:https://blo...
2021-03-22 14:53:49
27
转载 开源流媒体SRS
一、SRS简介1、SRS简介 SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。SRS提供了丰富的接入方案将RTMP流接入SRS, 包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRS。 SRS还支持将接入的RTMP流进行各种变换,譬如将RTMP流转码、流截图、 转发给其他服务器、转封装成HTTP-FLV流、转封装成HLS、 转封装成HDS、转封装成DASH、录制成FLV/MP4。SRS包含支大规模集群如CDN业务的关键特性, 譬...
2021-03-22 14:48:00
34
原创 实时通信之RTC
1、RTC简介 RTC(Real-time Communications),实时通信。泛指各种数据的实时传输,包括音频,视频,文本,图片等媒体和非媒体数据的实时传输。2、RTC 和 WebRTC 的区别 实时通信(RTC)最容易和 WebRTC 混淆,实际上,二者并不相等。一次RTC通信的简要流程如下图所示: RTC 从功能流程上来说,包含采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节,上图展现了一次 RTC 通信的简要流程。每一个细分环...
2021-03-19 10:15:10
29
原创 音频格式之AAC(高级音频编码技术)
1、简介 ACC(Advanced Audio Coding,高级音频编码)是杜比实验室为音乐社区提供的技术。,出现于1997年,基于MPEG-2的音频编码技术。2000年,MPEG-4标准出现后,AAC重新集成了其特性,加入了SBR技术和PS技术,为了区别于传统的MPEG-2 AAC又称为MPEG-4 AAC。 AAC号称「最大能容纳48通道的音轨,采样率达96 KHz,并且在320Kbps的数据速率下能为5.1声道音乐节目提供相当于ITU-R广播的品质」。和MP3比起来,...
2021-03-15 16:45:49
120
原创 视频传输协议之MPEG-DASH
1、简介 DASH的全称是Dynamic Adaptive Streaming over HTTP。DASH是一种新的视频传输协议,由微软、苹果、Adobe等公司共同主导完成,该标准于2012年制定完成,是一种自适应码率的流媒体技术,其主要特点是视频切片和基于HTTP传输,可以利用现有的HTTP网络架构(专门的服务器和CDN等)传输流媒体。 MPEG-DASH(HTTP上的动态自适应流传输,ISO / IEC 23009-1)是由MPEG和ISO批准的独立于供应商的国际标准,...
2021-03-12 16:06:56
71
原创 RTMP协议之AMF数据
一、RTMP组成1、RTMP包头 RTMP协议封包 由一个包头和一个包体组成,包头可以是4种长度的任意一种:12, 8, 4, 1 byte(s)。完整的RTMP包头应该是12bytes,包含了时间戳,Head_Type,AMFSize,AMFType,StreamID信息,,8字节的包头只纪录了时间戳,Head_Type,AMFSize,AMFType,,4个字节的包头记录了时间戳,Head_Type。1个字节的包头只记录了Head_Type 。包体最大长度默认为128字节,通过ch...
2021-03-12 16:04:04
27
原创 视频编码之GOP
1、简介 GOP(Group of Pictures)策略影响编码质量,所谓GOP,意思是画面组,一个GOP就是一组连续的画面。GOP是序列中的一个图片集,用来辅助随机存取。GOP的第一个图像必须为I帧,这样就能保证GOP不需要参考其他图像,可以独立解码。2、MPEG MPEG编码将画面(即帧)分为I、P、B三种,I是内部编码帧,P是前向预测帧,B是双向内插帧。简单地讲,I帧是关键帧,可以理解为一个完整的画面,而P帧和B帧记录的是相对于I帧的变化,P帧表示跟前一帧的...
2021-03-11 09:36:26
30
原创 Java之maven中pom.xml字段详解
<modules>:子模块项目<properties>:属性,包括系统属性、自定义属性<dependencies>:依赖 <groupId>,<artifactId>, <version>:描述了依赖的项目唯一标志。 <groupId> :创建项目的组织或团体的唯一 Id。 <artifactId>:项目唯一id,可视为项目名。 <version...
2021-03-11 09:32:14
13
原创 国标GB28181入门
1、GB/T28181-2016由来 在GB28181协议处理之前,各个摄像头厂商都有各自的标准不能形成统一。因此公安部科技信息化局提出,由全国安全防范报警系统标准化技术委员会(SAC/TC100)归口,公安部一所等多家单位共同起草了一部国家标准,《公共安全视频监控联网系统信息传输、交换、控制技术要求》。 该标准规定了公共安全视频监控联网系统(以下简称联网系统)的互联结构,传输、交换,控制的基本要求和安全性要求,以及控制﹑传输流程和协议接口等技术要求。2、术语(...
2021-03-10 15:12:53
162
原创 SIP一般用户代理行为
一、UAC(用户代理客户端)特性1、产生一个请求 一个合法的 SIP 请求必须至少包含如下头域:TO, FROM, Cseq, Call-ID, MaxForwards, Via;这些字段在所有 SIP 请求中必须包含。这 6 个字段是 SIP 消息的基本组成部分,他们提供了用于路由用的核心信息,包含了消息的地址,响应的路由,消息传递次数,详细的顺序,事务的唯一标志。这些头域字段是必须包含在请求行之后的,请求行包含了请求的方法,RequestURI,SIP 的版本号码。(1)Requ...
2021-03-09 11:20:51
31
原创 SIP协议消息
1、SIP消息 SIP 协议是一个基于文本的协议,使用 UTF-8 字符集(RFC2279[7])。一个 SIP 消息既可以是一个从客户端到服务器端的请求,也可以是一个从服务器端到客户端的一个应答。 消息类型都由一个起始行,一个或者多个包头域,一个可选的消息中文组成。 起始行、每一个包头行,空行、都必须由回车换行组成(CRLF)。即使消息正文没有,也必须有一个空行跟随。2、请求 SIP 请求是根据起始行中的 Request-Lin...
2021-03-09 11:14:32
13
原创 SIP(会话发起协议)
1、简介 SIP(Session Initiation Protocol,会话初始协议)是由IETF(Internet Engineering Task Force,因特网工程任务组)制定的多媒体通信协议。它是一个应用层的信令控制协议。用于创建、修改和释放一个或多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或多媒体分发。会话的参与者可以通过组播(multicast)、网状单播(unicast)或两者的混合体进行通信。 SIP与负责语音质量的资源预留协议(...
2021-03-09 11:09:25
70
原创 utest测试框架
一、utest测试框架简介1、简介 utest(unit test)是 RT-Thread 开发的单元测试框架。设计 utest 的初衷是方便 RT-Thread 开发者使用统一的框架接口编写测试程序,实现单元测试、覆盖测试以及集成测试的目的。2、utest 应用框图 如上图所示,测试用例基于测试框架 utest 测试框架提供的服务接口进行程序设计,支持将多个测试用例编译到一起进行测试。另外从图中可以看到,一个测试用例对应唯一的 testcase 函数,在 tes...
2021-03-09 10:58:54
11
原创 跨平台C++单元测试框架——GTest
1、简介 GTest是google公司发布的一个跨平台的(Liunx、Mac OS X、Windows、Cygwin、Windows CE and Symbian)C++单元测试框架。它提供了丰富的断言、致命和非致命判断、参数化、死亡测试等等。 使用gtest时,就是编写断言(assertions),断言语句会检测条件是否为真。一个断言可存在三种结果:success(成功),nonfatal failure(非致命失败),或 fatal failure(致命失败)。当出现致命...
2021-03-02 17:12:02
28
原创 Onvif协议之服务端开发基本流程
1、onvif开发流程发现设备 ==》 获取能力 ==》 获取媒体信息 ==》 获取视频编码配置 ==》 设置视频编码配置 ==》 获取URI ==》 ONVIF完成 ==》 RTSP播放 ==》 解码2、原理 Onvif协议要求实现Onvif协议服务的设备支持设备发现以及探测,也就是discovery和probe。如,客户端向网段内的组播地址为239.255.255.250,端口为3702发送广播消息,等待网内Onvif协议设备响应。响应消息的设备会返回自己的IP、UUI...
2021-02-09 17:21:01
116
原创 Onvif之代码框架生成
wsdl自动生成源代码可分为本地配置和在线配置。1、利用wsdl2h工具生成onvif.h文件 利用wsdl2h工具生成ovnif.h文件的过程如下图所示: 查看gsoap目录下的typemap.dat文件: 搭建ONVIF客户端代码框架,按照ONVIF Profile S标准需要支持下面所示的基本服务:功能模块 Wsdl文件地址 设备发现 https://www.onvif.org/ver10/n...
2021-02-09 17:16:44
44
原创 Onvif协议之gSOAP工具
1、简介 gSOAP的编译器能够自动的将用户定义的本地化的C或C++数据类型转变为符合XML语法的数据结构,反之亦然。这样,只用一组简单的API就将用户从SOAP细节实现工作中解脱了出来,可以专注与应用程序逻辑的实现工作了。gSOAP编译器可以集成C/C++和Fortran代码(通过一个Fortran到C的接口),嵌入式系统,其他SOAP程序提供的实时软件的资源和信息;可以跨越多个操作系统,语言环境以及在防火墙后的不同组织。gSOAP一种跨平台的C和 C++软件开发工具包。生成C/C++...
2021-02-09 16:55:28
53
原创 ONVIF Conformance Test测试工具的使用
1、摄像头设置 一般摄像头中默认是没有开启onvif功能,需要我们配置并添加用户。配置==》网络==》高级配置==》集成协议==》勾选开启ONVIF 添加onvif用户,角色包括视频用户、操作员和管理员,后续用到的账号和密码即为此账号和密码。2、搜索并配置设备 配置完后就可用ONVIF Conformance Test测试工具来搜索设备。NIC选择可IPC同网段的网卡==》点击Discover Devices,搜索设备==》在搜索出的...
2021-02-08 17:05:03
36
原创 AMF(Action Message Format)简介
1、AMF简介(1)简介 AMF(Action Message Format),即操作消息格式,基于http方式传输,是一种二进制的数据格式。主要用于数据交互和远程过程调用。它的设计是为了把actionscript里面的数据(包括Object, Array, Boolean, Number等)序列化成二进制数据,然后把这段数据随意发送给其他接收方程序,比如发给远程的服务器,在远程服务器那边,可以把这段数据给还原出来,以此达到一个数据传输的作用。(2)AMF0和AMF3的历史...
2021-02-04 11:37:38
42
原创 纤程
1、定义 纤程是 fiber , 是由操作系统实现的一种轻量化线程上的一个执行结构。 通常是多个fiber共享一个固定的线程, 然后他们通过互相主动切换到其他fiber来交出线程的执行权.。各个子任务之间的关系非常强。 在Windows2000/XP中,纤程(fiber)相当于用户级别的线程或轻进程.纤程由Win32库函数支持,对核心是不可见的.纤程可以通过SwitchToFiber切换至另一合作纤程,以实现合作纤程之间的协同。2、优缺点(1)优点消耗小,切...
2021-01-29 16:08:22
26
原创 C++中协程——State Threads
一、协程简介1、简介 协程(coroutine)不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。一个程序可以包含多个协程,可以对比与一个进程包含多个线程。我们知道多个线程相对独立,有自己的上下文,切换受系统控制。而协程也相对独立,有自己的上下文,但是其切换由自己控制,当前协程切换到其他协程由当前协程来控制。 协程调度单位减小到函数,上下文切换不需要内核参与,不存在系统调用。上下文切换开销降到最低,系统调用降到最低,没有锁竞争,没有信号处理。保留了程序...
2021-01-26 17:18:23
84
1
转载 C++中虚继承
一、虚继承和虚基类1、多继承产生的冲突 在C++中多继承时很容易产生命名冲突,即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字,命名冲突依然有可能发生,比如典型的是菱形继承,如下图所示: 类 A 派生出类 B 和类 C,类 D 继承自类 B 和类 C,这个时候类 A 中的成员变量和成员函数继承到类 D 中变成了两份,一份来自 A-->B-->D 这条路径,另一份来自 A-->C-->D 这条路径。 在一个派生类中...
2021-01-06 09:25:14
45
原创 Linux中inotify详解及实例
1、inotify简介 用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,包括了hotplug、udev 和 inotify。Hotplug 是一种内核向用户态应用通报关于热插拔设备一些事件发生的机制,桌面系统能够利用它对设备进行有效的管理,udev 动态地维护 /dev 下的设备文件, Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建,以及卸载等操作,还可以跟踪活动的源头和目标等细节。即文件系统变化通知...
2021-01-05 17:21:00
97
原创 Visual Studio2017开发linux程序之管理已有makefile工程
后端的很多程序都是运行在linux上面,因此对于许多用C++编写的后端程序其编译和运行基本都是在linux平台上面的,而对于编写程序来说直接在linux不是很方便,通常都需要借助ide在windows平台上来进行编写和调试。对于在windows上编写和调试程序,而在linux上面编译和运行,在visual studio通常可将项目构造成cmake项目,然后通过配置远程linux平台可实现远程调试。 远程调试可参考:https://blog.csdn.net/King_weng/...
2020-12-04 16:39:46
182
原创 windows10家庭版和Ubuntu18.04使用Samba共享文件
一、在Ubuntu上安装Samba1、更新apt包索引:sudo apt update2、安装Samba软件包:sudo apt install samba3、安装完成后,Samba服务将自动启动。 要检查Samba服务器是否正在运行,请键入:sudo systemctl status nmbd//或者service smbd status输出应如下所示,表示Samba服务处于活动状态并正在运行:二、创建共享的文件位置和创建用户1、创建要共享的文件位.
2020-12-04 16:32:34
98
原创 Onvif协议快速入门
1、简介 ONVIF最初的名称来自Open Network Video Interface Forum(开放网络视频接口论坛)的首字母缩写。由于标准的范围扩展到视频应用程序之外,因此删除了(开放网络视频接口论坛)的名称。ONVIF网络视频协议的出现,解决了不同厂商之间开发的各类设备不能融合使用的难题,提供了统一的网络视频开发标准,即最终能够通过ONVIF这个标准化的平台实现不同产品之间的集成。 ONVIF主要为网络视频产品提供标准化网络开放式接口。ONVIF利用IT技术,例如...
2020-11-19 17:08:32
902
原创 Hadoop安装配置与三种启动模式详解
1、Hadoop简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data ...
2020-11-09 16:10:22
72
原创 Redis快速入门
一、Redis基础1、Redis简介 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。特点:Redis支持数据的持久化,可以将内存中的数...
2020-10-24 23:18:43
27
1
原创 gdb调试之快速入门
一、gdb调试1、gdb调试的三种方式目标板直接使用GDB进行调试。 目标板使用gdbserver,主机使用xxx-linux-gdb作为客户端。 目标板使用ulimit -c unlimited,生成core文件;然后主机使用xxx-linux-gdb ./test ./core。例子:(1)main.cpp#include "sum.h"using namespace std;int main(int argc, char *argv[]){ if(a
2020-10-14 17:22:22
58
原创 FFmpeg快速入门
一、FFMpeg1、FFMPEG简介(1)MPEG FFMPEG 全称Fast Forward MPEG,MPEG系列标准是由ISO/IEC制定的,主要应用于视频存储(DVD)、广播电视、因特网或无线网上的流媒体。ITU-T与ISO/IEC是制定视频编码标准的两大组织,ITU-T的标准包括H.261、H.263、H.264,两个组织也共同制定了一些标准,H.262标准等同于MPEG-2的视频编码标准,而最常用的H.264标准则被纳入MPEG-4的第10部分也叫AVC编码。(2)F...
2020-09-18 16:35:23
202
原创 Mp4文件格式解析
1、简介 MP4(或称MPEG-4 Part 14)是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定 MP4文件封装格式,对应的标准为ISO/IEC 14496-12,即信息技术 视听对象编码的第12部分:ISO 基本媒体文件格式(Information technology Coding of audio-visual object...
2020-09-04 16:55:35
516
1
原创 HLS协议
1、简介 HLS (HTTP Live Streaming)是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。HLS 协议编码格式要求视频的编码格式:H264 音频的编码格式:AAC、MP3、AC-3 视频的封装格式:ts 保存 ts 索引的 m3u8 文件HLS 协议优势HLS 相对于 RTMP 来讲使用了标准的 HTTP 协议来传输数据,可以避免在一些特殊的网络环境下被屏蔽。...
2020-09-01 11:22:34
106
原创 WebSocket协议
1、简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。2、背景 很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发...
2020-08-27 17:15:50
83
原创 H.264中SPS、PPS和IDR
1、简介 H.264码流第一个 NALU是 SPS(序列参数集Sequence Parameter Set),对应H264标准文档 7.3.2.1 序列参数集的语法进行解析。 H.264码流第二个 NALU是 PPS(图像参数集Picture Parameter Set),对应H264标准文档 7.3.2.2 序列参数集的语法进行解析。 H.264码流第三个 NALU 是 IDR(即时解码器刷新),对应H264标准文档 7.3.3 序列参数集的语法进行解析。...
2020-08-27 16:55:49
129
原创 RTMP协议详解及实例分析
1、简介 RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。实现通常对不同类型的消息分配不同的优先级,当运载能力有限时,这会影响等待流传输的消息的次序。 RTMP协议是应用层协议,是要靠底层可靠的传输层协议(通常是TCP)来保证信息传输的可靠性的。在基于传输层协议的链接建立完成后,RTMP...
2020-08-17 17:19:54
1031
原创 RTSP协议详解及实例分析
1、RTSP简介 RTSP(Real-Time Stream Protocol)协议是一个基于文本的多媒体播放控制协议,属于应用层。RTSP以客户端方式工作,对流媒体提供播放、暂停、后退、前进等操作。该标准由IETF指定,对应的协议是RFC2326。 RTSP作为一个应用层协议,提供了一个可供扩展的框架,使得流媒体的受控和点播变得可能,它主要用来控制具有实时特性的数据的发送,但其本身并不用于传送流媒体数据,而必须依赖下层传输协议(如RTP/RTCP)所提供的服务来完成流媒体数...
2020-07-29 16:43:12
666
原创 流媒体之SDP
1、SDP简介 SDP(Session Description Protocol),会话描述协议。是描述流媒体初始化参数的格式,由IETF作为RFC 4566颁布。主要用于两个会话实体之间的媒体协商。 什么叫会话呢,比如一次网络电话、一次电话会议、一次视频聊天,这些都可以称之为一次会话。那为什么要去发这个描述文本呢,主要是为了解决参与会话的各成员之间能力不对等的问题,如果参加本次通话的成员都支持高质量的通话,但是我们没有去进行协议,为了兼容性,使用的都是普通质量的通话格式...
2020-07-29 16:32:09
163
原创 RTP和RTCP
一、RTP1、RTP简介 实时传输协议(Real-time Transport Protocol或简写RTP)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的。RTP协议常用于流媒体系统(配合RTSP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议(RTCP)一起使用,而且它是创建在UDP协议上的。2、特征 RTP 本身并没有提供按时...
2020-07-29 16:28:24
186
MFC Windows程序设计(第2版)修订版+源代码
2019-03-31
Kinect2.0API
2019-04-22
官方Kinect10.dll
2019-04-21
VC++深入详解源代码.孙鑫
2019-03-23
Win32多线程程序设计.侯捷.超清完美版+配套代码
2019-03-22
npp.7.8.4.Installer.exe
2020-02-08
跟我一起学makefile
2018-11-05
VC++深入详解.孙鑫(完整版)
2019-03-23
Visual Assist VS2017 2015 2013 2010 +通用版.zip
2019-09-11
Windows核心编程(第五版)+源码
2019-03-31
Visual C++ 2013入门经典(第7版)
2019-03-31
深入浅出MFC(第2版)
2019-03-31
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝