DeepStream9.0 service-maker

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

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

如果你用过 NVIDIA DeepStream,应该很熟悉它的典型开发方式:围绕 GStreamer 元素搭建 pipeline,配置 nvstreammux、nvinfer、nvtracker、nvmsgconv、nvmsgbroker 等插件,再处理 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,而是通过 Pipeline、BufferProbe、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。你仍然可以明确添加 filesrc、h264parse、nvv4l2decoder、nvstreammux、nvinfer、nvosdbin、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 展示了 BufferProvider 和 BufferRetriever:前者可以把用户数据注入 DeepStream pipeline,后者可以从 pipeline 中取出 buffer 数据。这对接入自定义前处理、外部算法、PyTorch tensor 或跨进程处理都很有用。

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

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

这些模块通过 CMake 链接 nvds_service_maker 和 nvds_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 的性能和插件生态,同时显著降低开发复杂度。

相关推荐
2603_965148112 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
LiuPig刘皮哥2 小时前
2026年开源3D陪玩对比:xiaoke.ai、AIRI、Open-LLM-VTuber、Amica 有什么、没有什么
人工智能·3d·开源
西柚小萌新3 小时前
【岗位面试】--成都博维数孪 - 工业 AI 解决方案顾问
人工智能·面试·职场和发展
Luminbox紫创测控3 小时前
车载LiDAR强光测试的实验设计方法与数据分析
人工智能·数据挖掘·数据分析·车载系统·安全性测试·太阳光模拟器
建筑工程企业管理系统4 小时前
工程进度统计管理系统自动化汇总数据,解决施工企业手工对账误差难题
大数据·人工智能·自动化
唠点键盘之外的4 小时前
27 存量系统接大模型:旁挂一个 AI 微服务,老架构一行不改
人工智能·微服务·架构
kaixin_啊啊4 小时前
【用于更准确 G×E 基因组预测的大规模作物数据集与基于深度学习的多模态融合框架】论文学习
人工智能·深度学习·学习
GOWIN革文品牌咨询4 小时前
工业测量品牌系统化搭建指南:从内容架构到长期治理的全流程
大数据·人工智能·架构
拿本唠嗑AI研究5 小时前
本体工程实战指南:从建模到可维护的完整落地路径
java·人工智能·python·jena·ontology
deepseek235 小时前
AI 模型隐藏任意能力拆解:把加密神经网络塞进宿主权重,能力评估为什么在密码学上抓不到
人工智能·深度学习·神经网络·密码学·模型安全