当前位置: 首页 > news >正文

DeepStream9.0 service-maker

service-maker在前几个版本就推出了,DeepStream9.0做了增强:

  • Added Pyservice maker support for Smart-Recording(就是实时录制码流)

如果你用过 NVIDIA DeepStream,应该很熟悉它的典型开发方式:围绕 GStreamer 元素搭建 pipeline,配置nvstreammuxnvinfernvtrackernvmsgconvnvmsgbroker等插件,再处理 metadata、pad、probe 和生命周期问题。它性能强,但上手成本并不低。

DeepStream Service Maker 正是为了解决这个问题而出现的。根据 NVIDIA 官方介绍,Service Maker 是构建在 DeepStream SDK 之上的高层抽象层,目标是把实时多媒体处理和 AI 推理应用的开发复杂度降下来,让开发者把更多精力放在业务逻辑上,而不是底层 GStreamer/GLib 细节上。官方文档甚至将开发时间的变化描述为“从数天缩短到数小时”:What is Deepstream Service Maker。

本地service-maker目录也印证了这一点。它提供了 C++ 示例、Pythonpipeline_api示例、Pythonflow_api示例,以及一组可复用的 runtime modules,比如 FPS 测量、延迟测量、消息 metadata 注入、Smart Recording 动作、视频 feeder/receiver 等。

1. C++:把 GStreamer 封装成对象化 API

Service Maker 的 C++ API 不是让你直接操作裸 GStreamer pipeline,而是通过PipelineBufferProbe、metadata observer 等对象封装常见操作。

例如本地sources/apps/cpp/deepstream_test1_app中,应用可以用链式方式添加元素、连接元素、挂载 probe:

Pipeline pipeline("deepstream-test1");

pipeline.add("filesrc", "src", "location", file)

.add("h264parse", "parser")

.add("nvv4l2decoder", "decoder")

.add("nvstreammux", "mux", "batch-size", 1)

.add("nvinfer", "infer", "config-file-path", CONFIG_FILE_PATH)

.link("src", "parser", "decoder")

.attach("infer", new BufferProbe("counter", new ObjectCounter))

.start()

.wait();

这种写法保留了 DeepStream 原有插件体系的能力,但减少了很多样板代码。

2. Python Pipeline API:保留控制力,同时更易写

Pythonpipeline_api更像是 C++ Pipeline API 的 Python 绑定。它适合熟悉 DeepStream pipeline 结构、但希望用 Python 快速开发的人。

sources/apps/python/pipeline_api/deepstream_test1_app中,示例既支持直接用代码拼 pipeline,也支持从 YAML 配置加载 pipeline。你仍然可以明确添加filesrch264parsenvv4l2decodernvstreammuxnvinfernvosdbin、sink 等元素,并手动控制 link、probe 和属性。

这类 API 的优势是控制粒度高,适合需要精细调参、接入自定义模型、调试 metadata 或复刻传统 DeepStream sample app 的场景。

3. Python Flow API:面向任务的“声明式”写法

Service Maker 最值得关注的是 Python Flow API。它把 pipeline 进一步抽象成任务链,让代码更接近“我要做什么”,而不是“每个 GStreamer 元素怎么接”。

比如本地flow_api/deepstream_test1_app中,一个检测、计数、渲染流程可以写成:

pipeline = Pipeline("deepstream-test1")

flow = Flow(pipeline).batch_capture([stream_file_path]).infer(CONFIG_FILE_PATH)

flow.attach(what=Probe("counter", ObjectCounterMarker())).render()()

到了deepstream_test2_app,同样可以自然扩展为检测、跟踪、二级分类和渲染:

flow = Flow(pipeline).batch_capture([stream_file_path]).infer(PGIE_CONFIG_FILE_PATH)

flow = flow.track(ll_config_file=TRACKER_LL_CONFIG_FILE, ll_lib_file=TRACKER_LL_LIB_FILE)

flow = flow.infer(config=SGIE1_CONFIG_FILE_PATH)

flow = flow.infer(config=SGIE2_CONFIG_FILE_PATH)

flow.attach(what=Probe("counter", ObjectCounterMarker())).render()()

这就是 Flow API 的核心价值:用更 Pythonic 的方式表达视频 AI 任务。

4. 不只是推理:还覆盖生产级能力

本地样例并不只停留在“视频输入 + 模型推理 + 显示结果”。deepstream_test5_app展示了更接近生产环境的能力组合:

  • 多路视频输入与 batch 处理
  • 主检测模型和二级分类模型
  • 多目标跟踪
  • FPS、延迟、OSD 等监控 probe
  • Kafka 消息发布
  • Smart Recording
  • 静态源和动态源管理

此外,deepstream_appsrc_test_app展示了BufferProviderBufferRetriever:前者可以把用户数据注入 DeepStream pipeline,后者可以从 pipeline 中取出 buffer 数据。这对接入自定义前处理、外部算法、PyTorch tensor 或跨进程处理都很有用。

5. Runtime Module:让自定义能力模块化

Service Maker 还提供 runtime module 机制。本地sources/modules目录下可以看到多个共享库模块,例如measure_fps_probemeasure_latency_probeadd_message_meta_probekitti_dump_probesample_video_feeder等。

这些模块通过 CMake 链接nvds_service_makernvds_service_maker_utils,并使用 Service Maker 的自定义工厂宏注册能力。这样应用可以像使用标准组件一样加载自定义 probe、feeder、receiver 或 action。

这对于团队开发尤其重要:底层 C++ 高性能逻辑可以封装成模块,上层 Python 应用只负责组合业务流程。

结语

DeepStream Service Maker 并不是替代 DeepStream,而是给 DeepStream 加了一层更适合工程开发的抽象。

如果你需要极致控制,可以使用 C++ API 或 Python Pipeline API;如果你更关注快速实现业务,可以使用 Python Flow API;如果你要把自定义处理逻辑沉淀成可复用能力,可以使用 runtime module。对于视频分析、智能交通、工业视觉、边缘 AI 和多路流媒体推理应用来说,Service Maker 的价值在于:保留 DeepStream 的性能和插件生态,同时显著降低开发复杂度。

http://www.zskr.cn/news/1349278.html

相关文章:

  • 龙州县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 百考通智能降重——为原创保驾护航 ��️
  • yolo26 语义分割特征融合:全网首发--使用 ERM 模块改进 Neck 多尺度特征融合能力 ✨
  • 隆安县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 告别vcvars.bat!在VS2022中创建一键配置编译环境的快捷方式(支持所有终端)
  • taotoken 的 openai 兼容协议让模型切换几乎无需修改代码
  • 数据迁移避坑指南:从Oracle到国产数据库的兼容性问题
  • DeepSeek私有化不是“装完就跑”!——2024Q3最新《私有化SLA保障协议》核心条款拆解(含RTO<3min、模型热切换等6项硬指标)
  • DeepSeek VL视觉语言大模型实战手册:从环境配置、数据预处理到微调部署的7大关键步骤
  • AI Agent驱动智能投顾升级(2024监管沙盒实测数据全披露):AUM提升23.6%背后的3层认知革命
  • 【NotebookLM关键词提取黄金标准】:基于127份实测文档验证的4级置信度评估体系
  • 家长必看!给孩子选电钢琴,这份2026年启蒙用琴清单帮你省3000元
  • 为团队配置统一的Taotoken CLI工具,提升开发效率与密钥管理安全
  • 3PEAK思瑞浦 TPA6551U-S5TR SOT23-5 运算放大器
  • Nginx 静态资源挂载与前端部署实战笔记
  • ElevenLabs江西话语音生成延迟高达3.8s?性能优化实战:从HTTP/2复用到边缘缓存的4层加速架构
  • FlashAttention 为什么在昇腾 NPU 上这么快?聊清楚硬件亲和性这件事
  • 电影学院不教的真相:AI视频生成已重构分镜脚本标准(含2024戛纳获奖短片分镜→AI提示词双向映射表)
  • AI Agent不是锦上添花——而是生存刚需:一线房企区域总亲述“无Agent不开工”的3个临界点预警
  • Nginx反向代理404?彻底搞懂 proxy_pass带斜杠与不带斜杠的路径拼接规则
  • 手机如何和电脑连接 手机连接电脑的方法
  • 告别懵圈!用Python脚本一键解析汽车UDS诊断的DTC故障码(附完整代码)
  • 告别视频孤岛:3分钟让B站缓存视频重获新生 [特殊字符]
  • 学校采购智慧校园平台时怎样避免功能堆砌的误区
  • PXI便携式测控系统设计:从硬件选型到软件集成的工程实践
  • 渭源县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • Lean引擎:如何用开源量化交易框架解决策略开发三大痛点
  • 如何安全擦除硬盘数据:开源工具的完整指南
  • 武山县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 抖音下载终极指南:免费无水印批量保存完整方案