- 博客(472)
- 资源 (41)
- 收藏
- 关注
原创 使用avx2 指令集加速向量算法运算
我们使用向量加,为什么函数是0 到 8 的计算,因为avx2 寄存器为256位,同时设置启动增强指令集猜猜以上代码会怎么样,如果是在debug下,明显avx2 指令集会快,在release下,普通代码立刻甩开了avx2指令,所以一定要判断数据量,下面重写代码来测试。
2024-04-13 08:43:07 371
原创 使用vulkan 和 glsl来渲染 yuv nv12
1.1 编写一个顶点着色器(Vertex Shader),用于处理顶点数据(通常用于几何变换)。1.2 编写一个片段着色器(Fragment Shader),用于处理像素级别的颜色转换。使用着色器编译器(如glslc)将GLSL源代码编译为SPIR-V二进制格式。Vulkan运行时能够直接加载和执行SPIR-V代码。在Vulkan中创建着色器模块,将SPIR-V代码加载到这些模块中。创建描述符集和描述符集布局,用于向着色器提供输入数据(如YUV纹理)和输出数据(如转换后的RGB图像)。
2024-04-11 22:01:52 313
原创 ffmpeg cuda硬件解码后处理使用opengl渲染,全硬件流程
整个流程是一旦数据到了cuda内核,就不要轻易下载到内存,直接在cuda里面进行操作,一直到渲染完毕,后面在给出完整的代码示例。
2024-04-08 21:12:08 478
原创 解码视频流在opengl中的贴图投影计算
我们把视频当成纹理,首先要确定贴入的坐标,原始坐标如下所示实际上我们要确定的是opengl的投影视窗,视窗大小就是位置,相当于把解码图像放到窗口中的什么位置,这里并不是纹理位置,纹理位置是具体取到那一块的纹理,涉及到放大缩小,我们写一个顶点着色器,如下所示330没有任何约束,放出来的贴图会随着窗口的变化而变化,问题是不成比例,视频展现失比例拉伸,对展现并不友好。我们要使用向量的运算来修改投影视窗。
2024-03-28 21:58:54 527 1
原创 基于cuda和opengl高性能处理渲染多阵列摄像头8K画面(一)
科学!=技术,非常有同感,接触过很多博士,硕士,博士的科学理论化和想象力更多一些,用于指导技术,而一些硕士和本科的技术的实践性更强一些,用于反向传播科学的参数,从而显现偏差,再来纠偏,这就和业务部门必须指导技术部门一样的道理,业务部门可以想象自己的处理方式,最后技术部门必须落地。我有一个比较映像深刻的地方就是闫令其老师在讲课图形学的时候,底下一个学生问体积着色的问题,一下把老师整蒙了,把底下听课的我也整笑了,就像你再问总统说我家里的拖把如何拖地的问题一样,事实上,这种细节问题显然不是图像学的基础,而是在工业
2024-03-28 09:37:12 650
原创 如何解决新版的anaconda notebook 打不开浏览器
先安装nodejs,删除其他源头,留下默认,重新安装notebook,修改配置,最后选择浏览器
2024-03-10 11:14:31 323
原创 RTP工具改进(五)--使用qt
第四篇前面使用的工具一直为mfc,今天将使用qt 来做界面,使用qt 来进行程序和协议的编写,qt部分目前还不包括rtp ps流和rtmp,暂时只有rtp 直接传输,关于rtmp协议和ps流协议,先使用vs的mfc。增加和改变的模块为rtp,和 rtp_recv,如下图,以前的vs MFC版本都放到vs下面,有关于qt的 gb28181 的sip server 和 rtp 发送接收等都放到qt下面,所有可执行都放到外层的bin下面代码地址。
2024-01-27 14:47:18 732
原创 RTP工具改进(四) - rtmp协议推送
前面写了rtsp ps 流推送,为了把软件提高使用的实用性,准备将rtp协议扩展到rtmp 和 rtsp。rtsp 扩展是必然的,因为rtsp的核心协议是rtp,rtmp协议实际上在封包的原理上借鉴了rtp。代码地址RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变。
2024-01-25 13:02:38 953
原创 RTP 接发ps流工具改进(三)
代码地址注:两种方式发送,一种直接rtp方式,一种ps over rtp方式代码里面有直接rtp方式发送,可以修改代码成为直接的rtp方式也是可以的。
2024-01-21 12:41:39 466
原创 论rtp协议的重要性
对于tcp来说,是流式协议,不作他讲。无论是tcp还是udp都是可行的做法,rtp over tcp 和 rtp over udp 都可以放入rtsp 或者 sip 协议中,其中另外一个指明交换的文本协议叫做sdp协议,中文名为会话描述协议,可以直接rtp传输吗,可以,但是关键帧之前一定要有sps,pps,h265 之前再加个vps,因为一般来说,sps,pps这种信息会放到sdp中,没有了sdp的加持,那么我们的接收程序必须要约定一些内容。
2024-01-20 00:15:57 455
原创 jetson deepstream 解码接入编码输出
在jetson主板上安装gstreamer工具链,编译opencv上面的opencv 肯定是少编译了很多东西,尤其是cuda的编译,需要大家自己去写参数编译,jetson上编译挺费时间的,耐心做就行了。
2024-01-06 15:05:37 968
原创 rtsp超分推流流程(一)
播放一个RTSP的流需要如下的RTSP请求命令:OPTIONS -> DESCRIBE -> SETUP -> PLAY 然后就是接收RTP包、播放了最开始也不太清楚推流到底应该怎么来推,后来使用ffmpeg的推流命令,然后抓包分析出来,推流的RTSP请求命令如下:OPTIONS -> ANNOUNCE -> SETUP -> RECORDEASYPUSHER安卓ANDROID手机直播推送之MEDIACODEC 硬编码H264格式https://www.fr
2024-01-04 13:58:39 1128
原创 yolov8 tracking编码为web 和 rtsp流输出
使用python pytorch yolov8 track进行reid 识别后将识别后的图片通过websocket 协议和内存共享发送到web端和 rtsp server端,可通过web显示或者通过rtsp 客户端拉流
2023-12-31 19:45:37 1443
原创 使用tesla gpu 加速大模型,ffmpeg,unity 和 UE等二三维应用
我们知道tesla gpu 没有显示器接口,那么在windows中怎么使用加速unity ue这种三维编辑器呢,答案就是改变注册表来加速相应的三维渲染程序.
2023-12-25 21:32:12 2114
原创 ffmpeg 解码文件时的时间戳问题
实时流编码时,我们一般不进行b帧编码,但是文件存储时为了减小大小,会增加b帧,实时流只带了I,P帧,那就会好很多很多文件带了b帧,所以要使用解码时间去同步,如果使用pts,很多人一定会被其时间搞混。
2023-12-25 16:51:15 659
原创 ffmpeg 硬件解码零拷贝unity 播放
ffmpeg 在硬件解码,一般来说,我们解码使用cuda方式,当然,最好的方式是不要确定一定是cuda,客户的显卡不一定有cuda,windows 下,和linux 下要做一些适配工作,最麻烦的不是这个,二是ffmpeg解码后,颜色空间的转换,如果使用cuda,那么可以使用cuda去在gpu中直接转码,如果没有cuda,那么我们希望的是不要转颜色空间。ffmpeg 硬件解码相信下面这一段代码是大家比较熟悉的如下我们在解码的时候,gpu 一个tesla p40 都占用了42%,实际上是unity渲染占用。
2023-12-22 16:10:41 1100
原创 rtsp视频在使用unity三维融合播放后的修正
我们使用unity UE 等三维渲染引擎中使用c++编写插件来接入rtsp 视频。同时做融合的时候,和背景的三维颜色要一致,这就要使用视频融合修正技术。包括亮度,对比度,饱和度的修正。在单纯颜色上的修正可以简单使用rgb->hsv去修改,这里不做累赘说明了。
2023-12-21 17:41:42 761 1
原创 arm linux 平台 打开摄像头矫正
v4l 意思为 video for Linux, 是linux驱动链接摄像头的软件应用部分,当然先要安装好v4l-utils看完以后基础信息以后就可以使用jetson等主板工具打开查看使用gstreamer 工具。
2023-12-04 07:38:28 522
原创 unity 控制玩家物体
放上一个plane,放上一个球 sphere,假定我们的球就是我们的玩家,使用控制键w a s d 来控制球也就是玩家移动。增加一个材质,把颜色改成绿色,把材质赋给plane,区分我们增加的白球。
2023-10-06 22:22:13 299
原创 unity gb28181 rtsp 视频孪生图像拉流和矫正插件(一)
目的是为了视频孪生,将视频放到三维里面,如果使用自己写的插件,有更好的灵活性,同时断线重连等等都更好控制了。
2023-09-18 22:47:53 542
原创 unity 接收拼接数据进行纹理替换且保存相机纹理到rtsp server(一)
rtsp协议的问题就是,拼接完成后,还需要编码,而unity里面再需要解码,需要的过程多了一步编码再解码,大大加重了。
2023-09-12 16:17:36 476
原创 如何写http mjpeg server
是为了让unity ue 等三维引擎直接读取mjpeg图像进行纹理贴图使用qt,opencv等等,因为经常要进行图像处理。
2023-09-11 21:26:39 324
原创 rtsp 拉流 gb28181 收流 经AI 算法 再生成 rtsp server (一)
必备工具必备工具player 使用tcp 拉流,不自己写的话,使用ffmpeg 去写一个播放器就行编译好live555, 将live555的参数修改以下,主要是缓存大小文章使用c++ 来写一个server,目的主要是为了gb28181 接收ps流, 主动拉rtsp 流,经过AI 算法以后 ,再将AI 结果 转成wsflv 和 rtsp 流。为了对比live555的过程,编译live555,本身live是一个非常好的服务端和客户端,测试非常方便。这里AI 使用libtorch。
2023-09-01 21:19:43 643
原创 python rtsp 硬件解码 二
上次使用了python的opencv模块述说了使用PyNvCodec 模块,这个模块本身并没有rtsp的读写,那么读写rtsp是可以使用很多方法的,我们为了输出到pytorch直接使用AI程序,简化rtsp 输入,可以直接使用ffmpeg的子进程。
2023-08-20 17:23:06 1615
原创 FFmpeg中硬解码后深度学习模型的图像处理dnn_processing(一)
ffmpeg硬件解码可以使用最新的vulkan来做,基本上来说,不挑操作系统是比较重要的,如果直接使用cuda也是非常好的选择。下面的class 是我封装了一些功能,只是示例,读者可以自行修改,读的是rtsp 流,后面准备推流到gb28181上。0110。
2023-08-05 19:16:18 966
原创 boost beast http server 测试
boost beast 是一个非常好用的库,带上boost的协程,好很多东西是比较好用的,以下程序使用四个线程开启协程处理进入http协议处理。协议支持http get 和 http post。
2023-08-04 20:55:08 1058
原创 opencv rtsp 硬件解码
硬件解码的方案有太多种,如果使用ffmpeg硬件解码是最方便的,不方便的是把解码过后的GPU 拉到 CPU 上,再使用opencv的Mat 从cpu 上上载到gpu上,是不是多了两个过程,应该是直接从GPU mat 直接去处理, 最后一步再从GPU mat 上下载到cpu,render显示。GPU 硬件解码是nv12 格式,我们为了显示和cpu使用直接转成了RGB或者BGR, 使用opencv再映射封装,最后又上载到cuda,这个过程很耗时间,而且不是必要的。
2023-07-30 16:27:15 2502
原创 opencv hand openpose
使用opencv 得dnn 模块调用 caffemodel得程序,图片自己输入就行,不做过多得解释,看代码清单。const int POSE_PAIRS[20][2] ={{0,1}, {1,2}, {2,3}, {3,4}, // thumb{0,5}, {5,6}, {6,7}, {7,8}, // index{0,9}, {9,10}, {10,11}, {11,12}, // middle{0,13}, {13,14}, {14,15}, {15,1
2023-07-26 08:55:45 1573
原创 视频拼接得AI三维生成方案-开端(一)
想使用二维得图像生成三维得空间图像,英伟达有完整得方案,开源,但是三维拼接不一样,只需要二维,并且要实时,如何生成是我每天都在思考得东西。
2023-07-21 08:45:48 432
websocket c语言实现
2022-10-07
qt websocket 客户端 多线程使用
2022-09-16
udp tunnel 转udp 到 tcp
2022-07-19
qt c++ dialog 异形窗口+半透明窗体制作
2022-05-24
qt下写的内存池和线程调用
2022-04-26
vue+nodejs 将canvas发布到dlna投屏服务
2022-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人