自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

evsqiezi

多媒体工程师,从事ffmpeg,gstreamer,h264开发,做做笔记。

  • 博客(774)
  • 资源 (34)
  • 收藏
  • 关注

原创 gstBuffer的 data 和 meta

GstMetatypedef struct _GstMeta GstMeta;struct _GstMeta { GstMetaFlags flags; const GstMetaInfo *info;};typedef struct _GstMetaItem GstMetaItem;struct _GstMetaItem { GstMetaItem *next; guint64 seq_num; GstMeta meta;};可以看到GstMe...

2022-04-15 23:16:26 4557

原创 deepstream例子的pipeline

deepstream-apppipeline

2022-04-02 14:21:29 3272 11

原创 NVIDIA Isaac GR00T:从视觉与语言到机器人动作

模型周围,平台还提供数据、仿真、训练、运行时和部署组件,帮助从研究checkpoint走向可工作的机器人。- [NVIDIA GR00T开发工作流](https://developer.nvidia.com/blog/develop-humanoid-robot-policies-end-to-end-with-nvidia-isaac-gr00t/)难的工程在于让这个闭环可靠:采集正确的示教、把模型适配到本体、在仿真和现实中验证、集成确定性控制,并落实安全。合理的第一个项目不是不受约束的人形机器人部署。

2026-08-30 23:17:14 391

原创 在NVIDIA Jetson上从`NvBufSurface`获取CUDA访问

当`NvBufSurface`来自`GstBuffer`时,在CUDA使用该surface期间,应保持`GstBuffer`处于已映射和被引用状态。在Jetson上,`NVBUF_MEM_DEFAULT`通常解析为`NVBUF_MEM_SURFACE_ARRAY`,但应根据分配器返回的实际`surface->memType`进行分派,而不是假定“默认”意味着什么。两个平面的行都可能包含填充,因此`pitch[p]`不一定等于`width[p] * bytesPerPix[p]`。这是CUDA设备内存分配。

2026-08-28 15:27:24 272

原创 使用 TensorRT-Edge-LLM 0.9.0 在端侧测试 Qwen3-Omni

本文介绍了如何使用NVIDIA TensorRT-Edge-LLM v0.9.0在嵌入式设备上部署Qwen3-Omni-30B-A3B-Instruct多模态大模型。主要内容包括:1) TensorRT-Edge-LLM的特点,作为面向Jetson等嵌入式平台的C++高性能推理运行时;2) Qwen3-Omni模型的部署流程,从HuggingFace权重到ONNX再到TensorRT引擎的转换,包括量化(NVFP4)和引擎构建;3) 通过C++ API实现多模态推理,同时处理视频帧序列和音频PCM输入,并输

2026-08-09 23:20:30 418

原创 Deepstream 使用 REST API 动态管理视频流

DeepStream的deepstream-server-app示例展示了如何构建支持动态视频流管理的服务化应用。该示例核心组件是nvmultiurisrcbin,它集成了视频源处理、多路流合并和REST API服务功能,支持通过HTTP请求实时添加/删除视频流(支持本地文件、RTSP等协议)。默认pipeline包含预处理、推理、分析、显示等标准处理环节,同时提供丰富的运行时控制能力,包括参数调整、ROI更新、状态查询等。示例支持两种REST服务模式:内置于nvmultiurisrcbin或由应用独立管理

2026-05-28 23:04:46 256

原创 DeepStream9.0 在 Windows 上使用

本文介绍了在Windows系统上通过WSL2和Docker运行DeepStream的方法。主要内容包括:1)推荐使用WSL2+Docker方式而非原生Windows安装;2)详细的环境配置步骤,包括安装Ubuntu 24.04 WSL、Docker Engine和NVIDIA Container Toolkit;3)DeepStream 9.0镜像的拉取和容器运行方法;4)解码/编码测试和deepstream-app验证;5)常见问题解决方案。该方法适用于Windows用户进行视频分析、AI推理等开发测试,

2026-05-26 11:20:53 506

原创 DeepStream Single-View 3D Tracking

DeepStream的Single-View 3D Tracking(SV3DT)通过将目标跟踪从2D图像平面扩展到3D物理世界,有效解决了传统多目标跟踪在遮挡、部分可见等情况下的ID切换问题。该系统利用静态摄像头的投影矩阵和3D目标模型,结合PeopleNet检测器和NvDCF跟踪算法,实现了更稳定的目标跟踪。关键配置包括3D状态估计器、目标模型投影和姿态估计器,输出包含3D边界框、脚部位置等元数据。该技术特别适用于零售、仓库等固定摄像头场景,通过相机几何感知显著提升了跟踪的连续性和准确性。

2026-05-24 09:35:57 460

原创 DeepStream9.0 inference_builder

很多模型需要特殊的输入处理或输出解析。Inference Builder 支持通过自定义 Python 类实现 processor。类变量name初始化方法调用方法返回 tuple,和配置里的output对应配置文件里只需要引用 processor 的名字、输入、输出和配置。生成器会扫描自定义模块,把符合规范的类注册到生成应用中。这使得通用框架和业务模型逻辑可以保持清晰边界。

2026-05-21 22:52:24 448

原创 DeepStream9.0 Smart Recording

NVIDIA DeepStream的SmartRecording技术解决了传统视频录制方式的高存储成本和关键事件遗漏问题。该技术通过持续缓存编码后的音视频流,仅在事件触发时保存事件前后指定时长的片段(如事件前5秒和后10秒),而非全天候录制。其核心在于利用GStreamer框架实现滑动时间窗口缓存,等待关键帧后开始写入文件,支持MP4/MKV格式。该技术适用于安防、交通等场景,既能降低存储压力,又能确保事件前后关键画面的完整性。使用需注意缓存时长、关键帧间隔等配置参数,并避免重叠录制。

2026-05-21 22:40:31 386

原创 DeepStream9.0 service-maker

摘要:NVIDIA DeepStream ServiceMaker是构建在DeepStream SDK上的高层抽象工具,旨在降低多媒体处理和AI推理应用的开发复杂度。它提供三种API:C++ API封装GStreamer为对象化操作;Python Pipeline API保留精细控制;Python Flow API采用声明式写法简化任务链构建。此外,ServiceMaker支持Runtime Module机制,可将自定义功能模块化复用。该工具显著缩短开发时间,同时保留DeepStream的性能优势,适用于视

2026-05-21 22:24:46 447

原创 DeepStream9.0 Multi-View 3D Tracking

多路视频需要同步所有视频最好有相同分辨率每个相机需要 calibration file可选:用于 BEV 的地图map.png可选:world coordinate 到 BEV image coordinate 的示例提供自动生成配置。扫描videos/和camInfo/生成 DeepStream pipeline config生成 tracker config生成 Kafka/message config生成 camera pub/sub 通信配置。

2026-05-20 22:39:31 741 2

原创 DeepStream9.0 masktracker

摘要:MaskTracker是DeepStream 9.0中优化的多目标跟踪方案,结合目标检测与分割功能。它通过SAM2视觉基础模型,在传统bbox跟踪基础上增加高质量mask输出,实现更精确的目标轮廓表示。该方案适用于复杂遮挡场景、多类别目标跟踪等需要精细分割的应用,但计算开销较高。配置时需配合检测器(如PeopleNet)使用,输出包含跟踪ID、bbox和segmentation mask的可视化结果及元数据。MaskTracker在工业监控、零售分析等场景中展现出优势,为视频分析提供更鲁棒的目标级理解

2026-05-20 22:29:13 439

原创 DeepStream9.0 nvdsosd 新特性:Mask Blur 与 OBB 旋转框绘制

DeepStream 9.0的nvdsosd新增两项实用功能:1) 基于mask的局部模糊功能,支持精确模糊目标实例区域而非整个bbox,提升隐私保护效果;2) OBB旋转框绘制能力,可准确显示带角度的检测结果。前者通过blur-bbox=2参数实现mask区域模糊,后者通过rotation_angle参数绘制旋转矩形。两项功能均需GPU模式(process-mode=1)支持,适用于实例分割和旋转目标检测等场景,使OSD显示更贴合现代视觉AI模型的复杂输出需求。

2026-05-20 22:04:45 373

原创 DeepStream9.0 在DeepStream中使用VLM

DeepStream与vLLM结合实现视频语义理解 摘要:NVIDIA推出的deepstream-vllm-plugin示例展示了如何将DeepStream视频处理框架与vLLM大语言模型相结合。该方案通过nvvllmvlm插件将视频帧送入视觉语言模型(VLM),使系统能够输出自然语言描述。DeepStream负责视频解码和预处理,vLLM负责模型推理,支持多路视频共享单个模型实例。系统采用分段处理策略,每5秒采样关键帧进行推理,平衡性能与语义理解。配置支持多种输入格式(PyTorch/PIL/NumPy)

2026-05-20 21:18:58 471

原创 DeepStream9.0 Coding Agent

DeepStream 9.0引入AI编程代理支持,提供两种开发路径:InferenceBuilder/MCP路径让代理调用实际工具完成模型准备、容器构建等任务;Skills路径则通过领域知识库指导代理生成更准确的代码。新版本通过结构化工具和专业知识,有效解决了传统DeepStream开发中配置复杂、容易出错的问题,使开发者能快速构建包含完整工程文件的应用,显著提升开发效率。

2026-05-19 23:09:45 409

原创 LLM的相关概念

MCP旨在解决AI工具开发中的适配层重复问题。当开发者创建基础功能(如查询模型信息)时,需要为不同Agent框架(LangChain、Semantic Kernel等)编写特定的包装代码,导致开发效率低下。MCP提出统一协议方案,使工具只需一次开发就能被多种Agent客户端调用,消除为每个平台单独开发适配层的需求,从而提升工具复用性和开发效率。

2026-05-17 22:00:08 237

原创 GstAggregator的aggregate

GstAggregator的同步机制分析:当处理三个输入时,aggregate函数会严格同步执行。关键机制在于: gst_aggregator_check_pads_ready会检查所有非EOS的sink pad是否都有buffer,任一pad无数据即返回FALSE gst_aggregator_wait_and_check在pad未就绪时会阻塞(SRC_WAIT),直到收到SRC_BROADCAST信号 主循环gst_aggregator_loop必须等待所有pad数据就绪才会调用aggregate()

2026-03-29 17:02:06 381

原创 batch-size对推理的影响

摘要:测试了DeepStream中不同batch-size配置对推理性能的影响。使用batch-size=1的模型时帧率约为1143fps,而改用batch-size=16的模型后帧率降至864fps左右。结果表明,模型engine的batch-size需要与输入源的个数保持一致才能获得最佳性能。测试通过修改配置文件和GStreamer管道命令完成,验证了batch-size匹配的重要性。

2026-03-26 15:30:57 267

原创 Issac sim 做测试视频

如果不修改参数,就直接点Set Up Events, 再点播放,就可以看到模型视频,如果需要修改参数,切到Event Scene Tagger页,选中目标,点UntagLooseItems,就是取消,再选中目标,点NavMesh,就是确定。点Stage,输入camera,点回车,选中要操作的摄像头,下面编辑框的Translate就是x,y,z的位置。切到Actor SDG 点播放,点 Start Data Generation,就生成PNG文件,在Replicator下可以修改路径。

2025-12-18 23:08:20 919

原创 DeepStream推理dewarped所有surfaces

opt\nvidia\deepstream\deepstream-7.1\sources\apps\sample_apps\deepstream-dewarper-test例子只是将nvdewarper拆分的视频进行显示,并没有做推理,pipeline是source->dewarper->nvstreammux->tiler->sink.命令如下:deepsteram-app -c source2_dewarper_test.yml。

2025-03-08 19:36:58 725

原创 pipeline状态的变化

这个函数会调用element的gst_element_set_state_func函数,set_state会保存element的当前,下一个,最终状态。set_state会调gst_element_change_state函数去改状态。从备注上看,gst_bin_iterate_sorted 函数返回一个从后往前的迭代, 然后依次设置子插件的状态。在插件创建,链接之后会调用该函数。

2025-03-02 23:31:40 533

原创 DeepStream--图像的等比例填充缩放

利用Gstreamer的videoconvertscale插件。缺点:装的gstreamer可能没有这个插件,也搞不清videoconvertscale,videoscale,videoconvert有什么区别.利用nvstreammux的等比例填充缩放功能,参数是enable-padding。利用nvvideoconvert的dest-crop功能,缺点是需要计算。图像的尺寸是640x420,怎么等比例填充缩放成320x480。先等比率缩放,再用videobox填黑边。

2025-02-25 13:55:13 454

原创 tee发送query

如果有个如上的pipeline,element是个自定义的插件,如果element在响应query时,执行“return 1”, 而没有执行“return gst_pad_query_default (pad, parent, query);”, query就不会往下传,tee src0就收到1,按gst_pad_forward的逻辑,while (!done) 就会提前结束,query消息就不会往src1发送。

2025-01-22 15:16:32 214

原创 Issac ROS navigation测试

下载Omniverse Launcher, 然后执行./omniverse-launcher-linux.AppImage,从EXCHANGE里依次安装Isaac Sim Compatibility Checker,Omniverse Nucleus Navigator,Omniverse Cache, Isaac Sim. 有安装问题,参考。要注意的是“sudo apt upgrade” 这一步可能会升级Nvidia 驱动,所有没有继续执行,改为1.2的docker启动。遇到的问题,等以后再分析下。

2024-12-24 16:37:15 911

原创 拷贝NvBufSurface到新的buffer

以下代码是,在Jetson,先将buffer映射到cpu,再用cudaMemcpy2DAsync拷贝到新的buffer. 在dgpu,不用映射,直接拷贝到buffer。NvBufSurface是一个batch数据,以n12为例,怎么batch的nv12数据拷贝的新的buffer.在Jetson上,为了提高效率,可以不做内存映射,直接进行gpu拷贝。

2024-10-31 17:02:29 662

原创 串联两个检测模型

比如第一个模型检测汽车,第二个模型检测车牌,如果将两个模型串联起来。

2024-10-29 16:19:41 446 2

原创 归一化的数据转RGB

有时需要检查归一化后的数据是否正确,那就要把数据在转回rgb格式,这里以系数为1为例。如下代码把rrr.....ggg......bbb......转回rgbrgbrgb......。

2024-10-28 14:13:15 351

原创 DGPU共享内存的问题

上说“If the memory handle has already been opened by the current context, the reference count on the handle is incremented by 1 and the existing device pointer is returned.”, 那就是在同一个进程,如果已经打开过一次,就会将引用加1,208可能是打开的时候有冲突。208怎么能快速重现?那既然同时调用有冲突,那可以加个锁,如上注释部分。

2024-07-19 17:49:06 971

原创 DGPU上用共享内存

进程间,有时候想共用硬件内存。如下代码,服务端分配了硬件内存,客户端共享逻辑内存得到一些信息,再读取硬件内存。sharedMemoryCreate是对shm_open的封装。

2024-05-24 17:53:09 450

原创 DeepStream-测试发送MQTT

到/opt/nvidia/deepstream/deepstream/sources/libs/mqtt_protocol_adaptor目录下,执行make -f Makefile.test进行编译,执行./test_mqtt_proto_async进行测试。到/opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test5/configs下,设置完后,到上一层目录,执行。

2024-04-29 23:15:42 1080 2

原创 DeepStream做对象模糊的几种方法

deepstream-test1是DeepStream最简单的一个例子,这个例子跑了一个对象检测模型,完整的管道是“file-source -> h264-parser -> nvh264-decoder -> pgie -> nvvidconv -> nvosd -> video-renderer”。源代码用的是opencv的高斯模糊, 当然也可以改成填充,导出sgie的输入tensor,发现也被填充了,所以这里的填充是对frame的buffer做in-place的更改。下面介绍几种模糊的办法。

2024-04-09 14:37:51 1029

原创 DeepStream--调试代码

【代码】DeepStream--调试代码。

2024-01-09 10:44:14 569

原创 DeepStream--调试Gstreamer

从结果中可以看到,rtpjitterbuffer插件的源码是gst-plugins-good,版本是1.16,在/usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstrtpmanager.so中.1. 将GST_ERROR_OBJECT (jitterbuffer, "in gst_rtp_jitter_buffer_chain");加到gst_rtp_jitter_buffer_chain函数里,再执行。如下步骤是搭环境,下代码,编译。如下步骤是加日志,编译。

2023-12-12 16:04:49 744

原创 DeepStream--测试PCB-Defect-Detection

这里的步骤,将pt文件直接转成onnx模型。最终转的命令是:python3 export_yoloV5.py -w best.pt。但是这个代码有个问题,工程缺少custom_yolov5s.yaml 文件,这一步将失败,生成不了wts和cfg文件。从结果来看,能识别部分点,但是有些分类是错误,都标成了"missing_hole"。我参考了了这个代码,作者基于YoloV5,训练一个电路板检测的模型,训练数据集来自。Spurious copper 杂铜。Open circuit 开路。

2023-12-01 18:06:05 560

原创 DeepStream--保存NvBufSurface图片

NvBufSurface的memorytype有很多种,今天主要说的是DGPU上的NVBUF_MEM_CUDA_DEVICE类型,因为类型不一样,获取的方式也不一样。流程主要是用cudaMemcpy将Device内存拷贝到CPU内存,再根据颜色格式,保存为nv12/rgba/rgb。保存的数据是原始数据,可以用ffplay进行预览。

2023-11-24 15:20:23 2114 12

原创 DeepStream--测试lpdnet车牌检测模型

模型格式已经从加密的etlt格式变为onnx格式。这个模型用于从汽车图片上检测出车牌位置,模型有两个,一个用于美国车,一个用于中国车。

2023-11-21 17:23:42 494

原创 DeepStream--测试TrafficCamNet检测模型

测试图片:/opt/nvidia/deepstream/deepstream/samples/streams/sample_720p.jpg。目前模型是nvidia的加密格式etlt。nvinfer的配置。

2023-11-21 17:10:57 498

原创 DeepStream--测试resnet50分类模型

在/opt/nvidia/deepstream/deepstream/sources/libs/nvdsinfer/nvdsinfer_context_impl_output_parsing.cpp加点打印之后,发现的到的分类是对的,索引462在label文件里就是broom,只是没有取到分类的标签字符串。nvinfer的label解析函数InferPostprocessor::parseLabelsFile,要求文件是以分号相隔的,而这个label不是的。执行命令后,发现生成的图片也没有分类的字符串。

2023-11-19 21:51:31 1054 15

原创 DeepStream--测试代码

编译:gcc -o 1 1.cpp -I/usr/local/cuda-12.2/include -I/opt/nvidia/deepstream/deepstream/sources/includes -lcudart -lnvbufsurface -lnvbufsurftransform -L/usr/local/cuda-12.2/lib64 -L/opt/nvidia/deepstream/deepstream/lib。

2023-11-16 15:47:51 270

rgb2yuv.rar

查表法进行,RGB跟YUV之间转换,效率很高。

2013-06-18

图片转换icon

png,gif,jpg,bmp转换成icon,

2012-09-14

ffmpeg的SDK

ffmpeg是一个很好用的开源编解码库,编译也是个麻烦的过程,先提供编译好的SDK,版本号为3.2。

2013-10-24

nasm和yasm

nasm.exe和yasm.exe是汇编工具,在编译ffmpeg时会用到。

2013-05-29

rgb,yuv查看器

一个很好用图像播放器,支持rgb,yuv的各种格式。

2012-11-20

字符转utf8

汉字等字符有时候在网络传输时候要转成UTF8格式,此资源即实现C++下的转化。

2013-07-10

桌面录像+摄像头录像

两个软件,一个是截桌面成录像,一个是采集摄像头成录像。

2011-11-26

ICE_helloword.rar

使用ICE做一个简单的例子,客户端给服务端发送helloword,如果不在一个电脑要加上-h IP,对初学ICE帮助很大。

2013-07-04

nasm与ndisasm

编译X264等源码时,经常会用到这两个工具。

2013-01-05

VC6在64下退不出缺少的库

VC6在64位下断点调试,经常会退步出来,从任务管理器中关,也退不出,替换这连个库就解决了。

2013-11-07

23种设计模式

23种设计模式详解,比如单例模式,状态模式等。

2012-04-20

MySourceFilter

写第一个简单的filter,功能是:循环显示3张图片。

2012-11-21

gsoap实现的加法实例

gsoap的入门例子,实现两个数字相加。

2013-12-03

coreavc2.0

coreavc,版本2.0,据说是最快的软解码。

2012-09-14

udp通信的静态库

封装的一个UDP库,在windows,linux下都可以使用。

2012-11-06

base64_live555

从live555抠出来的base64,使用的是查表法。

2012-11-13

CVS使用方法

CVS和VSS一样都是版本控制软件。与VSS不同,CVS是在Unix下发展起来的。目前也有面向Windows操作系统的版本(包括服务端和客户端)。 以下将介绍CVS中的基本术语。

2011-12-31

windows下用mingw编译ffmpeg

window下搭mingw环境,mingw下编译ffmpeg都比较麻烦,参考文档又旧又杂,本文档采用的方法简单有效,可以很快实现编译。

2014-02-20

IPCCapture

onvif协议不提供直接获取抓拍图片到本地的功能,只提供获取图片的地址(如:http://172.16.200.24/cgi-bin/jpg/image.cgi),必须通过HTTP的GET方式得到图片,此代码为C++编写,稍作改动即可完成图片获取到本地。

2014-03-12

win7下配置IIS

此文档,详细讲解了windows下配置iis,图文并茂,很容易理解,操作。

2014-03-13

aac头解析.docx

aac头解析.

2016-08-26

signcode.rar

数字签名可以讲CAB标为安全,数字签名的时候,要用到此软件。

2014-08-29

VC2008工程下的解析TS出ES的例子

在VC2008工程下,一个TS的解析例子,含有一个视频文件test.264,解析出来的文件为1.264。 解析步骤为: 1 取得PAT. 2 取得PMT. 3 取得PES. 4 取得ES. 参考文档见:http://blog.csdn.net/evsqiezi/article/details/11960733。

2014-02-10

VC2008下用ATL开发windows服务

VC2008下用ATL开发windows服务,服务的特点:开机启动,无界面。

2014-07-24

codeblocks主题

codeblocks的主题设置,常有用,其中vim主题非常好,看起来很好看。

2017-11-18

c99下的stdint.h

stdint.h是c99中引进的一个标准C库的头文件。 比如在使用X264的时候会用到此头文件。

2014-03-09

ffmpeg解码视频

此代码用ffmpeg来解码视频码率,本人亲自测过AVI,h264,mpeg2,使用时要加入必要的头文件,库文件。

2014-02-24

tigervnc-1.3.1.rar

TigerVNC is a high-performance, platform-neutral implementation of VNC (Virtual Network Computing), a client/server application that allows users to launch and interact with graphical applications on remote machines. TigerVNC provides the levels of performance necessary to run 3D and video applications, and it attempts to maintain a common look and feel and re-use components, where possible, across the various platforms that it supports. TigerVNC also provides extensions for advanced authentication methods and TLS encryption.

2014-10-16

路由器的三种上网方式

本文档详细介绍了三种上网模式,PPPOE,静态IP,动态IP。

2014-07-14

msado60_Backcompat

Win7上编译的ADO程序无法在低版本系统上运行,创建ADO时提示错误:0x80004002.

2014-12-10

pexports-0.43

有时候,编译只生成了动态库,没有生成lib文件,pexports能够把DLL解释称DEF文件,在利用VC的lib.exe就可以解释出lib文件。

2014-03-09

codeblocks绿豆色主题

codeblocks的一个主题,绿豆色主题,很好看,我自己喜欢的一个主题。

2018-01-10

13818 1 ts ps

此文档是一个ISO文档,主要介绍TS,PS,PES的格式。

2014-08-01

Windows下如何编译OpenSSL.docx

Windows下如何编译OpenSSL.docx.

2015-09-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除