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++ 示例、Python pipeline_api 示例、Python flow_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:保留控制力,同时更易写

Python pipeline_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 的性能和插件生态,同时显著降低开发复杂度。

相关推荐
人工智能AI技术6 小时前
失控AI代码问题丛生,Harness管控方案实战解析
人工智能
佳杰云星6 小时前
如何给大模型集群选“大脑”?智算调度与管理平台 10 维选型指南(附选型评分表)
人工智能·kubernetes·大模型·云计算·gpu·算力调度·智算中心
lilihuigz6 小时前
易服客工作室:WordPress 7.0 “Armstrong”发布
人工智能
美团技术团队6 小时前
美团跑腿 Skill:一句话,骑手来帮忙
人工智能
五度易链-区域产业数字化管理平台6 小时前
招商尽调报告自动化实战:五度妙笔AI模块的技术与场景解析
人工智能
Agent手记7 小时前
安全生产巡检全流程自动化与隐患预警方案:2026工业Agent落地实战指南
数据库·人工智能·安全·ai·自动化
SEO_juper7 小时前
语音搜索 GEO 优化,口语化英文短句布局玩法
人工智能·seo·geo·谷歌优化·2026·谷歌算法更新·口语化
szxinmai主板定制专家7 小时前
RK3568 + CODESYS+实时系统运动控制器PLC,支持 AI 视觉目标检测,预测性维护,混合多系统部署,多路模拟量采集
arm开发·人工智能·嵌入式硬件·fpga开发
大囚长7 小时前
自由能原理与预测处理的理论解析及其跨领域启示
人工智能·数学建模