- 博客(470)
- 资源 (50)
- 收藏
- 关注

转载 如何正确复制优快云文章到自己的博客
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
1653
原创 deepseek API开发简介
此处API_KEY的值(your_api_key_here)用第一步复制的Key替代。2、安装python、pip,然后安装requests。创建API Key,并复制Key。功能:将文本翻译为目标语言。功能:将语音文件转换为文本。功能:生成自然语言文本。4、常见 API 接口。功能:对文本进行分类。
2025-02-08 12:21:28
533
1
原创 Boost Asio TCP异步服务端和客户端
注意,Linux和Windows平台使用setopt设置超时参数的方式是不同的。在Linux上,你可以使用setsockopt来设置套接字选项,包括读取和写入超时。具体的选项是SO_RCVTIMEO和SO_SNDTIMEO。在Windows上,setsockopt同样用于设置套接字选项,但超时时间是以毫秒为单位的整数,而不是timeval结构体。你需要使用SO_RCVTIMEO和SO_SNDTIMEO选项,并传递一个DWORD类型的值。
2025-01-15 19:00:44
721
原创 Boost序列化小结
增加string、vector、map、boost::variant等变量后,为了序列化这些标准库的类型的对象,头文件必须相应添加#include 、#include 、#include 、 。register_type () 的优点是只有需要序列化的类才注册。
2025-01-08 10:39:26
806
原创 windows下使用WSL
点击Ubuntu,然后拖动到左侧的"此电脑"下,就可以创建文件的磁盘映射。下载完成后,打开cmd命令行,执行wsl就可以开启wsl。重新导入并安装分发版在D:\wsl\ubuntu。以后就可以直接用vscode打开此目录了。就可以进入wsl映射的文件路径。导出分发版为tar文件到D盘。2、wsl备份以及恢复。首先查看所有分发版本。3、打开文件夹,输入。
2024-11-29 21:17:59
1498
原创 音视频好文总结
RTSP play同步ffplay播放器研究分析RTSP RTP RTCP SDP基础知识flv格式分析与解复用TS格式详解m3u8格式详解FLV格式详解MP4格式详解HLS协议详解RTMP协议详解HTTP-FLV协议详解H.264 SPS、PPS详解H.264 NALU详解ffmpeg帧率计算
2024-10-10 19:20:51
523
原创 H264重点笔记记录
它的原理是在NALU 前面添加固定字节(可能是1字节、2字节或4字节,其中4字节较常见),这几个字节组成一个整数(大端字节序)表示整个 NALU 的长度,在读取的时候,先把这个整数读出来(例如ffmpeg从extradata获取),拿到这个 NALU 的长度,再按照长度读取整个 NALU。对于这两种格式,不同的厂商支持程度也不太一样,例如,Android硬解码MediaCodec只接受annexB格式的数据,而Apple的VideoToolBox,只支持avcC的格式。用于mp4、flv、mkv等封装中。
2024-10-10 17:16:47
1112
原创 PaddleOCR基础入门
参考文档:https://zhuanlan.zhihu.com/p/525114489。将模型放到interface下并解压。5、创建一个inference目录。6、下载下方的检测模型和识别模型。2、新建conda虚拟环境。3、激活conda虚拟环境。1、下载paddle源码。
2024-09-06 18:08:28
497
原创 anaconda简单命令汇总
安装jupyter notebook。关闭当前虚拟环境test_env。切换虚拟环境到test_env。新建python虚拟环境。
2024-09-04 09:20:19
242
原创 python创建虚拟环境并在vscode中使用
打包虚拟环境 tar czf venv.tar.gz myenv/,将压缩包拷贝到目标机器,在目标机器上的适当位置解压该文件,激活新环境:myenv\Scripts\activate。现在,当你在这个激活的虚拟环境中安装任何包时,这些包将只存在于这个环境中,而不会影响系统的全局Python安装。你可以选择任何你喜欢的名字,而且这个文件夹将会包含所有必要的文件来作为一个独立的Python环境。这将恢复到系统的全局环境。如果你想要删除一个不再需要的虚拟环境,只需删除创建虚拟环境时生成的文件夹即可。
2024-09-03 17:28:26
446
原创 yolov5入门
打开命令行或终端,然后导航到你希望存放虚拟环境的位置。4、python命令行实现图片识别。5、python命令行实现视频识别。3、python代码实现图片识别。1、创建python虚拟环境。2、进入yolo下载地址。下载yolov5源码。
2024-09-03 17:11:22
401
原创 python虚拟环境设置
现在,当你在这个激活的虚拟环境中安装任何包时,这些包将只存在于这个环境中,而不会影响系统的全局Python安装。这里,test-env是你创建的虚拟环境的名称。你可以选择任何你喜欢的名字,而且这个文件夹将会包含所有必要的文件来作为一个独立的Python环境。这将恢复到系统的全局环境。如果你想要删除一个不再需要的虚拟环境,只需删除创建虚拟环境时生成的文件夹即可。打开命令行或终端,然后导航到你希望存放虚拟环境的位置。首先,确保你已经在你的机器上安装了Python。你可以通过在命令行或终端中输入。
2024-09-02 16:39:29
546
转载 RabbitMQ 心跳检测(翻译)
网络在很多情况下会失败,有时情况很微妙(比如 丢包率很高)。操作系统检测到 TCP 断开是一个适中的时间(在 Linux 中默认时长是 11 分钟)。AMQP 0-9-1 提供心跳检测功能来确保应用层及时发现中断的连接(或者是完全没有工作的连接)。心跳检测还能保护连接不会在一段时间内没有活动而被终止。
2024-02-20 16:06:40
384
原创 UTF8在windows控制台乱码问题
仅仅这么处理会导致乱码,因为控制台默认是ASCI编码,显示UTF8的编码会乱码。此时需要把UTF8转ASCI,然后在控制台显示。
2023-12-21 09:52:45
803
原创 MQTT性能分析
测试发现推送数据量比较大的时候,消费端消费的数据不及时。分析:wait()函数是个阻塞函数,会等待服务器发送ack消息后才会往下继续执行,发送下一条指令。使用wireshark抓包可以看出。临时解决方案:删除wait()函数,不需要等待服务器的ack返回。
2023-11-16 16:55:43
272
原创 使用ffmpeg调用电脑自带的摄像头和扬声器录制音视频
3、打开windows系统的"打开声音设置"–“麦克风隐私设置”–"允许应用访问你的麦克风"点击开启。,修改cmd的编码格式为utf8,避免乱码。,查看当前window的音频和视频名称。1、打开cmd,执行。
2023-11-08 19:32:13
1970
原创 gstreamer的I420转jpeg格式数据产生耗时
测试发现插件rate产生耗时(gstreamer在同步时间产生耗时), 并且一个输入会产生多个输出。##1、将I430数据转化为jpg数据。jpeg数据转化为I420。
2023-10-20 16:12:22
397
原创 SRS GB28181相关文章
https://blog.youkuaiyun.com/wdx1632/article/details/125428929https://blog.youkuaiyun.com/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
282
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
1547
转载 流媒体服务器之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
1501
转载 视频流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
1266
转载 技术解码 | GB28181 协议简介及实践
GB28181 协议指的是国家标准 GB/T 28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》1,该标准规定了公共安全视频监控联网系统的互联结构, 传输、交换、控制的基本要求和安全性要求, 以及控制、传输流程和协议接口等技术要求,是视频监控领域的国家标准。
2023-02-16 14:44:06
3381
转载 萃取(traits)编程技术的介绍和应用
我们知道, C++自定义类型有很多特性(traits), 比如拥有构造函数, 拷贝构造函数, 析构函数. 另一方面, C++内置类型入整形int, long, 就没有构造函数, 拷贝构造函数, 析构函数. 根据这些特性, 我们就可以采用最有效的措施进行构造和赋值, 比如对内置类型, 根本就不需要调用构造函数和拷贝构造函数, 而直接采用内存处理操作(malloc(), memcpy()), 从而获得最高效率, 这对于大规模而且操作频繁的容器, 有显著的性能提升.
2023-02-07 14:16:35
1097
转载 有关C++ Traits编程技法
真是不得不佩服C++知识内容的庞大,最近在啃侯捷的《STL源码剖析》这本书,看到第三章迭代器知识有关 traits 的部分一脸蒙蔽,无奈只能向度娘寻求帮助。C++ STL 泛化,全特化,偏特化。模板的特化和偏特化以及相关理解。关于模板的泛化、全特化和偏特化。C++模板之特化与偏特化详解。C++模板的全特化和偏特化。C++模板全特化、偏特化。C++模板的特化详解。模板的全特化和偏特化。
2023-02-07 14:03:09
177
转载 【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
136
转载 原子操作,内存屏障,锁
内存屏障还有两种隐式的屏障变种:LOCK和UNLOCK操作(表面上这两个操作的实际用途和原子操作里面的Lock解释有区别,原子操作里面的lock是锁内存总线,这里面的lock是保证执行的执行顺序严格按照lock前,lock中,lock后的顺序执行)5.锁:从上面可以看出内存屏障并不是锁,而锁是使用了内存屏障实现的一种用户层的同步处理方式,锁使用的汇编原语有LOCK,UNLOCK等是内存屏障的一种隐式形式,它们都是LOCK操作和UNLOCK操作的变种,所以几乎所有的锁都使用了内存屏障,
2023-02-03 09:31:50
813
原创 基于UDP的可靠性传输协议-KCP简介
TCP超时计算是RTOx2,这样连续丢三次包就变成RTOx8了,十分恐怖,而KCP启动快速模式后不x2,只是x1 .5(实验证明1 .5这个值相对⽐较好),提高了传输速度。TCP丢包时会全部重传从丢的那个包开始以后的数据, KCP是选择性重传,只重传真正丢失的数据包。...............
2022-09-01 15:08:26
1645
转载 什么是内存屏障?具有什么作用?
小陈:老王,上一篇你引出了volatile底层是通过内存屏障来解决可见性和有序性问题的。首先我想问一下什么是内存屏障?老王:内存屏障啊,本质上也是一种指令,只不过它具有屏障的作用而已。小陈:额,这怎么说…老王:首先内存屏障是一种指令,无论是在JAVA内存模型还是CPU层次,都是有具体的指令对应的,是一种特殊的指令。小陈:嗯嗯,它是一种特殊的指令。还是不明白…小陈:然后呢?老王:然后这种指令*具有屏障的作用*,所谓屏障,也就是类似关卡,类似栅栏,具有隔离的作用。小陈:那它是怎么实现隔离作用的,能否搞个例子讲一
2022-08-25 15:33:00
516
原创 实现上下文保存和恢复的一种方式--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
681
转载 CPU缓存:怎样写代码让CPU执行更快?
我们先从主机最重要的部件 CPU 开始,聊聊如何通过提升 CPU 缓存的命中率来优化程序的性能。任何代码的执行都依赖 CPU,通常,使用好 CPU 是操作系统内核的工作。然而,当我们编写计算密集型的程序时,CPU 的执行效率就开始变得至关重要。由于 CPU 缓存由更快的 SRAM 构成(内存是由 DRAM 构成的),而且离 CPU 核心更近,如果运算时需要的输入数据是从 CPU 缓存,而不是内存中读取时,运算速度就会快很多。所以,了解 CPU 缓存对性能的影响,便能够更有效地编写我们的代码,优化程序性能。然
2022-08-23 15:21:37
925
rtmp+ngix推流.7z
2020-08-02
vs2017_community__1464315958.1583822625.zip
2022-07-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人