- 博客(456)
- 资源 (50)
- 收藏
- 关注
转载 如何正确复制CSDN文章到自己的博客
1.f12打开控制台2.找到文章正文对应的 html 元素 (含 "article_content"标签头)3.在该元素源代码上右键 “Copy”->“Copy element”4.保持格式操作新建一个txt文件,把复制内容保存后改为.html结尾的文章然后浏览器打开后ctrl+a复制全部,再复制到typora编辑器中(因为typora自带把html转换为md格式的内容)然后再复制typora的内容再到你的csdn编辑器中即可。小问题代码块的序号会显示在代码块的下方,不过不影响
2022-05-31 11:53:45 1580
转载 RabbitMQ 心跳检测(翻译)
网络在很多情况下会失败,有时情况很微妙(比如 丢包率很高)。操作系统检测到 TCP 断开是一个适中的时间(在 Linux 中默认时长是 11 分钟)。AMQP 0-9-1 提供心跳检测功能来确保应用层及时发现中断的连接(或者是完全没有工作的连接)。心跳检测还能保护连接不会在一段时间内没有活动而被终止。
2024-02-20 16:06:40 195
原创 UTF8在windows控制台乱码问题
仅仅这么处理会导致乱码,因为控制台默认是ASCI编码,显示UTF8的编码会乱码。此时需要把UTF8转ASCI,然后在控制台显示。
2023-12-21 09:52:45 680
原创 MQTT性能分析
测试发现推送数据量比较大的时候,消费端消费的数据不及时。分析:wait()函数是个阻塞函数,会等待服务器发送ack消息后才会往下继续执行,发送下一条指令。使用wireshark抓包可以看出。临时解决方案:删除wait()函数,不需要等待服务器的ack返回。
2023-11-16 16:55:43 206
原创 使用ffmpeg调用电脑自带的摄像头和扬声器录制音视频
3、打开windows系统的"打开声音设置"–“麦克风隐私设置”–"允许应用访问你的麦克风"点击开启。,修改cmd的编码格式为utf8,避免乱码。,查看当前window的音频和视频名称。1、打开cmd,执行。
2023-11-08 19:32:13 1615
原创 gstreamer的I420转jpeg格式数据产生耗时
测试发现插件rate产生耗时(gstreamer在同步时间产生耗时), 并且一个输入会产生多个输出。##1、将I430数据转化为jpg数据。jpeg数据转化为I420。
2023-10-20 16:12:22 299
原创 SRS GB28181相关文章
https://blog.csdn.net/wdx1632/article/details/125428929https://blog.csdn.net/u011374856/article/details/107487363https://github.com/ossrs/srs/tree/5.0releasehttps://ossrs.net/lts/zh-cn/docs/v5/doc/gb28181http://www.guoxiaolong.cn/blog/?id=11085
2023-04-17 18:02:45 207 1
转载 sip命令与音视频rtp通话完整流程分析
7 客户端A收到sdp后,得到其中的两个端口,然后本地也创建两个端口,分别向服务器的两个端口发数据,(也可以直接向对方的IP和端口发,但对方是内网的,可能收到,也可能收不到,稍后再讨论怎么P2P)。如果要做到两客户端之间直接点对点,AB双方的音视频端口,应该先连stun,取到自己的外网IP和端口后,再发INVITE,这时SDP中带的是自己的外网IP和端口,双方直接传很大可能是收的到的。2 服务器收到后,转发给客户端B时,先创建两个音视频端口port1,port2,加到客户端A sdp中,然后发给B。
2023-02-24 10:07:21 1286
转载 流媒体服务器之rtp协议,rtcp协议,rtsp协议,sdp协议,sip协议简析
上面又提到了sip协议,这里顺带说一下,sip协议的全称是会话初始协议(Session Initiation Protocol)是一种信令协议,最早是用于ip电话交互的,也是一种会话协商协议,不过提供更好的灵活性与交互性,简单的交互就是invite,200ok,ack三步交互,最重要的就是sip的offer-answer模型,国内的gb28181标准就引用了sip协议作为其会话协商的标准协议。一般提到rtp总会提到rtcp协议,它们是配套的一套协议,国内交通部也有的只要rtp协议,不要rtcp协议的。
2023-02-24 09:58:13 1336
转载 视频流PS打包方式详解
PS流: Program Stream(节目流),简称PS流,将一个或多个分组但有共同的时间基准的基本数据流(PES)合并成一个整体流,由PS包组成,而一个PS包又由若干个PES包组成(到这里,ES经过了两层的封装)。PS包的包头中包含了同步信息与时钟恢复信息。一个PS包最多可包含具有同一时钟基准的16个视频PES包和32个音频PES包。ES流: Elementary Stream(基本码流),是由编码器输出的原始基础码流,它只含有解码器所必需的、并与原始图象或原始音频相接近的信息。
2023-02-16 16:00:01 962
转载 技术解码 | GB28181 协议简介及实践
GB28181 协议指的是国家标准 GB/T 28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》1,该标准规定了公共安全视频监控联网系统的互联结构, 传输、交换、控制的基本要求和安全性要求, 以及控制、传输流程和协议接口等技术要求,是视频监控领域的国家标准。
2023-02-16 14:44:06 2729
转载 萃取(traits)编程技术的介绍和应用
我们知道, C++自定义类型有很多特性(traits), 比如拥有构造函数, 拷贝构造函数, 析构函数. 另一方面, C++内置类型入整形int, long, 就没有构造函数, 拷贝构造函数, 析构函数. 根据这些特性, 我们就可以采用最有效的措施进行构造和赋值, 比如对内置类型, 根本就不需要调用构造函数和拷贝构造函数, 而直接采用内存处理操作(malloc(), memcpy()), 从而获得最高效率, 这对于大规模而且操作频繁的容器, 有显著的性能提升.
2023-02-07 14:16:35 902
转载 有关C++ Traits编程技法
真是不得不佩服C++知识内容的庞大,最近在啃侯捷的《STL源码剖析》这本书,看到第三章迭代器知识有关 traits 的部分一脸蒙蔽,无奈只能向度娘寻求帮助。C++ STL 泛化,全特化,偏特化。模板的特化和偏特化以及相关理解。关于模板的泛化、全特化和偏特化。C++模板之特化与偏特化详解。C++模板的全特化和偏特化。C++模板全特化、偏特化。C++模板的特化详解。模板的全特化和偏特化。
2023-02-07 14:03:09 119
转载 【C++模版之旅】神奇的Traits
现在需求变了,需要在T为int类型时,Compute方法的参数为int,返回类型也为int,当T为float时,Compute方法的参数为float,返回类型为int,而当T为其他类型,Compute方法的参数为T,返回类型也为T,怎么做呢?介绍traits的文章很多,但感觉大部分文章的说明都很晦涩难懂,把一个并不很复杂的C++模板的应用描述的过于复杂。假设有这样的需求,类Test中的某部分处理会随着类型T的不同而会有所不同,比如希望判断T是否为指针类型,当T为指针类型时的处理有别于非指针类型,怎么做?
2023-02-07 13:55:14 90
转载 原子操作,内存屏障,锁
内存屏障还有两种隐式的屏障变种:LOCK和UNLOCK操作(表面上这两个操作的实际用途和原子操作里面的Lock解释有区别,原子操作里面的lock是锁内存总线,这里面的lock是保证执行的执行顺序严格按照lock前,lock中,lock后的顺序执行)5.锁:从上面可以看出内存屏障并不是锁,而锁是使用了内存屏障实现的一种用户层的同步处理方式,锁使用的汇编原语有LOCK,UNLOCK等是内存屏障的一种隐式形式,它们都是LOCK操作和UNLOCK操作的变种,所以几乎所有的锁都使用了内存屏障,
2023-02-03 09:31:50 672
原创 基于UDP的可靠性传输协议-KCP简介
TCP超时计算是RTOx2,这样连续丢三次包就变成RTOx8了,十分恐怖,而KCP启动快速模式后不x2,只是x1 .5(实验证明1 .5这个值相对⽐较好),提高了传输速度。TCP丢包时会全部重传从丢的那个包开始以后的数据, KCP是选择性重传,只重传真正丢失的数据包。...............
2022-09-01 15:08:26 1410
转载 什么是内存屏障?具有什么作用?
小陈:老王,上一篇你引出了volatile底层是通过内存屏障来解决可见性和有序性问题的。首先我想问一下什么是内存屏障?老王:内存屏障啊,本质上也是一种指令,只不过它具有屏障的作用而已。小陈:额,这怎么说…老王:首先内存屏障是一种指令,无论是在JAVA内存模型还是CPU层次,都是有具体的指令对应的,是一种特殊的指令。小陈:嗯嗯,它是一种特殊的指令。还是不明白…小陈:然后呢?老王:然后这种指令*具有屏障的作用*,所谓屏障,也就是类似关卡,类似栅栏,具有隔离的作用。小陈:那它是怎么实现隔离作用的,能否搞个例子讲一
2022-08-25 15:33:00 478
原创 实现上下文保存和恢复的一种方式--setjmp与longjmp
longjmp函数中的参数envbuf是由setjmp函数所保存的堆栈环境,参数val设置setjmp函数的返回值。longjmp函数本身是没有返回值的,它执行后跳转到保存envbuf参数的setjmp函数调用,并由setjmp函数调用返回,此时setjmp函数的返回值就是val。上面的说明有点拗口,通俗的解释是:先调用setjmp,用变量envbuf记录当前的位置,然后调用longjmp,返回envbuf所记录的位置,并使setjmp的返回值为val。当时用longjmp时,envbuf的内容被销毁了。.
2022-08-24 17:07:10 621
转载 CPU缓存:怎样写代码让CPU执行更快?
我们先从主机最重要的部件 CPU 开始,聊聊如何通过提升 CPU 缓存的命中率来优化程序的性能。任何代码的执行都依赖 CPU,通常,使用好 CPU 是操作系统内核的工作。然而,当我们编写计算密集型的程序时,CPU 的执行效率就开始变得至关重要。由于 CPU 缓存由更快的 SRAM 构成(内存是由 DRAM 构成的),而且离 CPU 核心更近,如果运算时需要的输入数据是从 CPU 缓存,而不是内存中读取时,运算速度就会快很多。所以,了解 CPU 缓存对性能的影响,便能够更有效地编写我们的代码,优化程序性能。然
2022-08-23 15:21:37 789
转载 如何高效的传输文件 -- 零拷贝技术
第二,高并发下传输大文件,我们上文提到过,大文件难以命中 PageCache 缓存,又带来额外的内存拷贝,同时还挤占了小文件使用 PageCache 时需要的内存,因此,这时应该使用直接 IO。通常,你会选择最直接的方法:从网络请求中找出文件在磁盘中的路径后,如果这个文件比较大,假设有 320MB,可以在内存中分配 32KB 的缓冲区,再把文件分成一万份,每份只有 32KB,这样,从文件的起始位置读入 32KB 到缓冲区,再通过网络 API 把这 32KB 发送到客户端。当然,直接 IO 也有一定的缺点。
2022-08-23 14:55:25 884
转载 系统如何实现高并发服务 -- 协程的原理及实现
上一讲谈到,零拷贝通过减少上下文切换次数,提升了文件传输的性能。事实上高并发服务也是通过降低切换成本实现的,这一讲我们来看看它是如何做到的。如果你需要访问多个服务来完成一个请求的处理,比如实现文件上传功能时,首先访问 Redis 缓存,验证用户是否登陆,再接收 HTTP 消息中的 body 并保存在磁盘上,最后把文件路径等信息写入 MySQL 数据库中,你会怎么做?用阻塞 API 写同步代码最简单,但一个线程同一时间只能处理一个请求,有限的线程数导致无法实现万级别的并发连接,过多的线程切换也抢走了 CPU
2022-08-23 14:03:07 501
原创 网络编程一些问题总结
只要有listen执行,服务器就可以完成跟客户端的三次握手,然后将客户端的fd放到SYNC半连接队列中,等待accept执行中从SYNC半连接队列中取出放到Accept全连接队列。首先判断是否有新的客户端连接,如果没有这个事件,那就调用for循环,从非listenfd开始遍历(客户端的fd大小时根据连接的先后递增的)到最大的(最新)客户端fd,然后判断每个连接的可读和可写事件。DDOS攻击:客户端只发送SYN信号,不给服务器回复ACK信号,三次握手只进行第一步,会导致服务器的syn半连接队列溢出。...
2022-08-20 18:18:36 1031
原创 epoll与reactor浅析
边沿触发:当buffer从没有数据到有数据的这个时间点触发,除非buffer再恢复到从无到有数据的过程,否则不再触发(只有从地平面到高平面的瞬间才触发)。水平触发:有数据在buffer缓存就会一直触发,直到用户取完数据才结束。(高平面一直触发,地平面不触发).........
2022-08-18 22:53:06 294
原创 wireshark抓包KCP包
https://www.likecs.com/show-205307389.htmlhttps://blog.huati365.com/72573c5a8dcdf333
2022-08-17 23:28:24 651
转载 listen函数backlog参数的一点探讨
今年上半年的时候, 因为自己工作的失误, 导致程序的TCP三次握手非常缓慢, 存在大量syn_recv状态连接. 查了很多资料(尤其是listen的相关资料)都无法完美解决问题, 虽然调大了backlog参数, 但是连接数达到一定值(backlog)后, 三次握手同样非常缓慢. 后面才发现是自己代码的原因, 具体来讲, 就是我那部分代码阻塞了进程, 相当于sleep了下(虽然不是真的sleep). 后面我把这部分代码给删除了, 程序恢复了正常..........
2022-08-15 19:16:48 543
转载 通信之listen函数
第一个参数sockfd为创建socket返回的。第二个参数backlog为建立好连接处于ESTABLISHED状态的的长度。
2022-08-15 18:19:20 1463
原创 VS2017编译TarsCpp测试工程
一般情况下编译可以正常。如果安装出现各种问题,可以重装系统和VS2017试试。。。编译安装完成后,默认会在C盘下生成Tars的库以及头文件。
2022-07-30 12:25:26 914 1
原创 rtsp-simple-server + srs搭建流媒体服务器
1、下载rtsp-simple-server我下载的是windows版本的。下载完后直接运行exe文件即可启动。2、ubuntu 16.04环境下载、编译、运行SRS3、使用ffmpeg给rtsp-simple-server推流4、使用ffmpeg从rtsp-simple-server拉取rtsp流并转换为rtmp流后推送到srs服务器5、从srs服务器拉流或者用VLC打开RTMP直播流......
2022-07-29 17:45:45 7131 3
原创 cmake入门学习笔记
cmake是kitware公司以及一些开源开发者在开发几个工具套件(VTK)的过程中衍生品,最终形成体系,成为一个独立的开放源代码项目。CMake可以编译源代码、制作程序库、产生适配器(wrapper)、还可以用任意的顺序建构执行档。CMake支持in-place建构(二进档和源代码在同一个目录树中)和out-of-place建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake也支持静态与动态程式库的建构。...............................
2022-07-25 09:34:32 590
转载 超详细MP4格式分析
这⾥先给出来的是视频的stts,Numberofentries,这个参数需要注意并不是sample的个数,sample的实际数量需要将每个entry的samplecount进⾏累加才是真正的sample个数。下面的解释就是chunk1-84,都是一一对应1个sample,chunk85,一一对应2个sample,chunk86-88,一一对应一个sample,chunk89,一一对应2个sample,chunk90,一一对应一个sample。,并没有给出每个sample在⽂件中的偏移。...
2022-07-23 06:04:58 1877
原创 ffmpeg笔记(三)ffmpeg指令总结
使用[0v][1v][2v][3v]将输入的4个视频流去除,分别进行缩放处理,然后基于nullsrc生成的画布进行视频平铺,命令中自定义upperleft,upperright,lowerleft,lowerright进行不同位置平铺。在FFmpeg中加入图片水印有两种方式,一种是通过movie指定水印文件路径,另外一种方式是通过filter读取输入文件的流并指定为水印。图片logo.png将会打入到input.mp4视频中,显示在x坐标50、y坐标20的位置。修改字体透明度,修改字体颜色。........
2022-07-18 14:43:43 1278
原创 ffmpeg笔记(一)音视频基础
YUV的"Y"分量表示亮度(也就是灰阶值)、"UV"分量表示色度。其中“u”偏蓝色调,“v”偏红色调。YUV将亮度Y和UV分开进行表示的好处1、避免互相干扰,单靠Y也可以完整显示一张黑白图片,解决了黑白电视与彩色电视的兼容问题。2、降低色度(UV)的采样率而不会对图像质量影响太大降低了视屏信号传输时对频宽带宽的要求。可以通过对UV的采样频率修改降低带宽,节省网络流量,间接降低了视频延时问题。............
2022-07-17 10:36:05 992 1
rtmp+ngix推流.7z
2020-08-02
Windows下RabbitMQ服务器安装.zip
2020-06-25
windows的kafka配置及c++工程.zip
2019-09-11
vs2017_community__1464315958.1583822625.zip
2022-07-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人