Loading...
Loading...
Compare original and translation side by side
Source → Stream Muxer → Inference → [Tracker] → OSD → Renderer[brackets]| Stage | Role | Key Element(s) | Required? |
|---|---|---|---|
| Source | Input from files, RTSP, cameras | | Yes |
| Stream Muxer | Batches streams for inference | | Yes |
| Inference | TensorRT model execution | | Yes |
| Tracker | Multi-object tracking across frames | | Only if requested |
| OSD | Draws bounding boxes, labels, overlays | | Yes (for visualization) |
| Renderer | Display or save output | | Yes |
Source → Stream Muxer → Inference → [Tracker] → OSD → Renderer[]| 阶段 | 作用 | 核心元素 | 是否必需? |
|---|---|---|---|
| Source | 从文件、RTSP、摄像头输入 | | 是 |
| Stream Muxer | 批量处理流以进行推理 | | 是 |
| Inference | TensorRT模型执行 | | 是 |
| Tracker | 跨帧多目标追踪 | | 仅在用户要求时添加 |
| OSD | 绘制边界框、标签、叠加层 | | 是(用于可视化) |
| Renderer | 显示或保存输出 | | 是 |
memory:NVMMvideo/x-raw(memory:NVMM), format=NV12memory:NVMMvideo/x-raw(memory:NVMM), format=NV12nvtrackernvdsanalyticsnvmsgbrokernvmsgconvnvurisrcbinnvurisrcbinfile://filesrcqtdemuxlive-source=1nvstreammuxsync=0"file://" + os.path.abspath(path).frame_items.object_itemslen()"sink_%u"pipeline.link(("decoder", "mux"), ("", "sink_%u")) # CORRECT
# pipeline.link(("decoder", "mux"), ("", "sink_0")) # WRONG - will failimport platform
sink_type = "nv3dsink" if platform.processor() == "aarch64" else "nveglglessink"tensor = buffer.extract(0).clone() # CRITICALqueue.Queuethreading.Threadmultiprocessing.Queuemultiprocessing.Processproperty:model:key: value[property]key=valuepropertytee# When using tee splits OR dynamic sources, ALL sinks MUST have async=0
pipeline.add("nveglglessink", "sink", {
"sync": 0, "qos": 0,
"async": 0 # CRITICAL - prevents state transition deadlock
})measure_fps_probenvinfernvosdbinRuntimeError: Probe failureinfer-dimsdynamic=Trueinfer-dims=C;H;W-1setDimensions: Error Code 3infer-dims=3;640;640infer-dims=3;416;416infer-dims=3;1280;1280cluster-mode| Model generation | Output tensor shape | Fields | |
|---|---|---|---|
| v8 / v11 | | | |
| v10 / v26+ | | | |
inferDims.d[0]inferDims.d[1]d={84, 8400}d={300, 6}cluster-mode: 2[N, 6]rotation_anglereferences/nvinfer_config.mdNvDsInferObjectDetectionInfoobj{}rotation_angle = 0NvDsInferObjectDetectionInfo obj;pyservicemakerpyservicemakerpyyamlpython3 -m venv venv
source venv/bin/activate
pip install /opt/nvidia/deepstream/deepstream/service-maker/python/pyservicemaker*.whl pyyaml
pip install -r requirements.txt # other dependenciesModuleNotFoundError: No module named 'pyservicemaker'nvtrackernvdsanalyticsnvmsgbrokernvmsgconvnvurisrcbinnvurisrcbinfile://filesrcqtdemuxnvstreammuxlive-source=1sync=0"file://" + os.path.abspath(path).frame_items.object_itemslen()"sink_%u"pipeline.link(("decoder", "mux"), ("", "sink_%u")) # 正确
# pipeline.link(("decoder", "mux"), ("", "sink_0")) # 错误 - 会失败import platform
sink_type = "nv3dsink" if platform.processor() == "aarch64" else "nveglglessink"tensor = buffer.extract(0).clone() # 关键步骤queue.Queuethreading.Threadmultiprocessing.Queuemultiprocessing.Processproperty:model:key: value[property]key=valuepropertytee# 当使用tee拆分或动态源时,所有Sink必须设置async=0
pipeline.add("nveglglessink", "sink", {
"sync": 0, "qos": 0,
"async": 0 # 关键 - 防止状态转换死锁
})measure_fps_probenvinfernvosdbinRuntimeError: Probe failureinfer-dimsdynamic=Trueinfer-dims=C;H;W-1setDimensions: Error Code 3infer-dims=3;640;640infer-dims=3;416;416infer-dims=3;1280;1280cluster-mode| 模型版本 | 输出张量形状 | 字段 | |
|---|---|---|---|
| v8 / v11 | | | |
| v10 / v26+ | | | |
inferDims.d[0]inferDims.d[1]d={84, 8400}d={300, 6}[N, 6]cluster-mode: 2references/nvinfer_config.mdrotation_angleobj{}NvDsInferObjectDetectionInforotation_angle = 0NvDsInferObjectDetectionInfo obj;pyservicemakerpyservicemakerpyyamlpython3 -m venv venv
source venv/bin/activate
pip install /opt/nvidia/deepstream/deepstream/service-maker/python/pyservicemaker*.whl pyyaml
pip install -r requirements.txt # 其他依赖ModuleNotFoundError: No module named 'pyservicemaker'/opt/nvidia/deepstream/deepstream/samples/models//opt/nvidia/deepstream/deepstream/samples/models/Primary_Detector/resnet18_trafficcamnet_pruned.onnx/opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so/opt/nvidia/deepstream/deepstream/lib/libnvds_kafka_proto.so/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app//opt/nvidia/deepstream/deepstream/samples/models//opt/nvidia/deepstream/deepstream/samples/models/Primary_Detector/resnet18_trafficcamnet_pruned.onnx/opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so/opt/nvidia/deepstream/deepstream/lib/libnvds_kafka_proto.so/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/| Document | Use When |
|---|---|
| references/gstreamer_plugins.md | Looking up plugin properties, ALL properties listed |
| references/service_maker_api.md | Using Pipeline/Flow API, metadata access, probes, EventMessageUserMetadata |
| references/use_cases_pipelines.md | Building pipelines: simple playback, multi-inference, cascaded GIE |
| references/kafka_messaging.md | Kafka/message broker setup, nvmsgconv/nvmsgbroker config, msg2p-newapi |
| references/best_practices.md | Design patterns, common pitfalls, anti-patterns |
| references/buffer_apis.md | BufferProvider/Feeder (injection), BufferRetriever/Receiver (extraction) |
| references/media_extractor_advanced.md | MediaExtractor, MediaChunk, FrameSampler |
| references/utilities_config.md | PerfMonitor, EngineFileMonitor, SourceConfig, SensorInfo, SmartRecordConfig |
| references/nvinfer_config.md | nvinfer config file format, ALL parameters |
| references/tracker_config.md | nvtracker config, NvDCF/IOU/DeepSORT/NvSORT |
| references/troubleshooting.md | Error messages and solutions |
| references/rest_api_dynamic.md | REST API, dynamic source add/remove, nvmultiurisrcbin |
| references/metamux_config.md | nvdsmetamux config, parallel multi-model inference, metadata merging, source ID filtering |
| references/docker_containers.md | Docker images, Dockerfile examples, pyservicemaker install, container run commands |
| 文档 | 使用场景 |
|---|---|
| references/gstreamer_plugins.md | 查询插件属性,所有属性均已列出 |
| references/service_maker_api.md | 使用Pipeline/Flow API、元数据访问、探针、EventMessageUserMetadata |
| references/use_cases_pipelines.md | 构建流水线:简单播放、多推理、级联GIE |
| references/kafka_messaging.md | Kafka/消息中间件设置、nvmsgconv/nvmsgbroker配置、msg2p-newapi |
| references/best_practices.md | 设计模式、常见陷阱、反模式 |
| references/buffer_apis.md | BufferProvider/Feeder(注入)、BufferRetriever/Receiver(提取) |
| references/media_extractor_advanced.md | MediaExtractor、MediaChunk、FrameSampler |
| references/utilities_config.md | PerfMonitor、EngineFileMonitor、SourceConfig、SensorInfo、SmartRecordConfig |
| references/nvinfer_config.md | nvinfer配置文件格式、所有参数 |
| references/tracker_config.md | nvtracker配置、NvDCF/IOU/DeepSORT/NvSORT |
| references/troubleshooting.md | 错误消息及解决方案 |
| references/rest_api_dynamic.md | REST API、动态源添加/移除、nvmultiurisrcbin |
| references/metamux_config.md | nvdsmetamux配置、并行多模型推理、元数据合并、源ID过滤 |
| references/docker_containers.md | Docker镜像、Dockerfile示例、pyservicemaker安装、容器运行命令 |
| Error | Solution |
|---|---|
| Iterate to count, don't use |
| Use |
| Queue data loss | Use |
| Config parse failed | Use |
| Use |
| Use |
| Secondary GIE inactive | Set |
| Tee/dynamic source stuck PAUSED | Set |
| RTSP no data/reconnecting | Test URL with ffplay, check credentials |
| |
| Add |
| |
| Use |
| 错误 | 解决方案 |
|---|---|
| 通过迭代计数,不要使用 |
| 使用 |
| 队列数据丢失 | 将 |
| 配置解析失败 | 在YAML中使用 |
| 对于分类器,使用 |
| 在 |
| Secondary GIE未激活 | 设置 |
| Tee/动态源停留在PAUSED状态 | 在所有sink元素上设置 |
| RTSP无数据/重连 | 使用ffplay测试URL,检查凭据 |
| |
| 为动态ONNX模型添加 |
虚拟环境中出现 | 在虚拟环境中执行 |
| 在pyservicemaker中使用 |