本文介绍了视频数据流编排中可供选择的输入、处理和输出算子。编排视频数据流的过程中,您可以参考本文了解不同算子的用途及其所包含控制参数的含义。
输入算子
算子名称 | 适用于 DeepStream | 适用于 DLStreamer | 算子描述 |
---|---|---|---|
✅ | ✅ | 以摄像头设备的视频流数据作为输入。 | |
✅ | ✅ | 通过 RTSP 协议拉取视频流作为输入。 | |
✅ | ✅ | 通过 RTMP 协议拉取视频流作为输入。 | |
✅ | ✅ | 以摄像头设备的视频流数据作为输入,同时支持对象分析(包含 ROI 检测和越线检测)。 | |
✅ | ✅ | 通过 RTSP 协议拉取视频流作为输入,同时支持对象分析(包含 ROI 检测和越线检测)。 | |
✅ | ✅ | 通过 RTMP 协议拉取视频流作为输入,同时支持对象分析(包含 ROI 检测和越线检测)。 |
输出算子
算子名称 | 适用于 DeepStream | 适用于 DLStreamer | 算子描述 |
---|---|---|---|
✅ | ✅ | 输出到虚拟时序设备。 | |
✅ | ❌ | 通过 RTSP 协议推流。 | |
✅ | ❌ | 输出到虚拟视频设备。 | |
✅ | ✅ | 将消息元数据与 base64 编码的图片发送到边缘智能的数据流事件中心。 | |
✅ | ✅ | 将消息元数据推送到 Kafka 服务器。 | |
✅ | ❌ | 将消息元数据推送到 Redis 服务器。 | |
✅ | ❌ | 通过 RTMP 协议发送 FLV 流数据。 | |
✅ | ❌ | 将消息元数据作为 Http 请求推送至指定的 URL。 | |
✅ | ✅ | 将消息元数据推送到同一个边缘节点上的 Ekuiper 时序数据流实例。 |
处理算子
算子名称 | 适用于 DeepStream | 适用于 DLStreamer | 算子描述 |
---|---|---|---|
✅ | ❌ | 对输入的视频数据进行 H.264 编码。 | |
✅ | ❌ | 对输入的视频数据进行 H.264 解码。 | |
✅ | ❌ | 对输入的视频数据进行 H.265 编码。 | |
✅ | ❌ | 对输入的视频数据进行 H.265 解码。 | |
❌ | ✅ | 对输入的视频数据进行解码。 | |
✅ | ❌ | 从一个或多个输入源形成一批帧。 | |
✅ | ✅ | 将模型服务的处理结果(视频流)转换为 JSON 格式的消息元数据,以便推送到下游的消息接收方。 | |
✅ | ❌ | NVIDIA DeepStream RPC 推理服务插件。 | |
✅ | ✅ | 使用对象跟踪插件跟踪视频中出现的各种对象。 | |
✅ | ✅ | 使用边界框绘制插件在视频帧上绘制处理结果,例如物体检测边界框、分类标签,以及物体追踪信息等。 | |
✅ | ✅ | 使用对象分析插件对检测到的对象进行进一步的空间分析。这个插件包含了两个重要的功能:ROI(Region of Interest)检测和越线(Line Crossing)检测。 | |
✅ | ❌ | 将一个输入的视频流复制并生成多个与原视频流相同的数据流作为输出。 | |
✅ | ✅ | 通过图像分类模型服务,对输入的视频流进行推理,并完成图像分类。 | |
✅ | ✅ | 通过物体检测模型服务,对输入的视频流进行推理,并完成目标物体检测。 | |
✅ | ✅ | 通过大模型推理服务,对输入的视频流进行推理,并完成图像分类。 |
算子描述
以摄像头设备的视频流数据作为输入。
使用说明
要使用该算子,您必须先在边缘算子上接入摄像头设备。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
device | String | 是 | 从边缘节点已经接入的设备实例中选择一个摄像头设备。支持兼容 ONVIF 或 GB28181 协议的摄像头设备,以及 USB 摄像头等。 |
|
device-tag | String | 否 | 设备的标签。 |
|
identifier | String | 否 | 为该摄像头设备添加一个标识符。建议您使用能够明确标识视频流来源的名称。 说明 消息转换算子将推理结果转换为消息元数据时,会采用 |
|
latency | Integer | 否 | 指定要缓冲的毫秒数。取值范围:0~4294967295。默认值:2000。 |
|
算子描述
通过 RTSP 协议拉取视频流作为输入。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
location | String | 是 | 指定要读取的 RTSP 流的 URL。 |
|
identifier | String | 否 | 为该 RTSP 流添加一个标识符。建议您使用能够明确标识视频流来源的名称。 说明 消息转换算子将推理结果转换为消息元数据时,会采用 |
|
latency | Integer | 否 | 指定要缓冲的毫秒数。取值范围:0~4294967295。默认值:2000。 |
|
算子描述
通过 RTMP 协议拉取视频流作为输入。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
location | String | 是 | 指定要读取的 RTMP 流的 URL。 |
|
identifier | String | 否 | 为该 RTMP 流添加一个标识符。建议您使用能够明确标识视频流来源的名称。 说明 消息转换算子将推理结果转换为消息元数据时,会采用 |
|
算子描述
以摄像头设备的视频流数据作为输入,同时自带对象分析能力(包含 ROI 检测和越线检测)。
使用说明
要使用该算子,您必须先在边缘节点上接入摄像头设备。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
device | String | 是 | 从边缘节点已经接入的设备实例中选择一个摄像头设备。支持兼容 ONVIF 或 GB28181 协议的摄像头设备,以及 USB 摄像头等。 |
|
device-tag | String | 否 | 设备的标签。 |
|
identifier | String | 否 | 为该摄像头设备添加一个标识符。建议您使用能够明确标识视频流来源的名称。 说明 消息转换算子将推理结果转换为消息元数据时,会采用 |
|
latency | Integer | 否 | 指定要缓冲的毫秒数。取值范围:0~4294967295。默认值:2000。 |
|
roi-filters | N/A | 否 | 绘制 ROI 区域。详见对象分析算子的说明。 | N/A |
line-crossings | N/A | 否 | 绘制绊线。详见对象分析算子的说明。 | N/A |
算子描述
通过 RTSP 协议拉取视频流作为输入,同时自带对象分析能力(包含 ROI 检测和越线检测)。
说明
该算子不支持获取截图作为样例图片,以进行 ROI 和 LC 绘制。更多信息,请参见使用 RTSP/RTMP 流作为输入时,如何才能在输入算子上获取截图以进行 ROI 和 LC 绘制?
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
location | String | 是 | 指定要读取的 RTSP 流的 URL。 |
|
identifier | String | 否 | 为该 RTSP 流添加一个标识符。建议您使用能够明确标识视频流来源的名称。 说明 消息转换算子将推理结果转换为消息元数据时,会采用 |
|
latency | Integer | 否 | 指定要缓冲的毫秒数。取值范围:0~4294967295。默认值:2000。 |
|
roi-filters | N/A | 否 | 绘制 ROI 区域。详见对象分析算子的说明。 | N/A |
line-crossings | N/A | 否 | 绘制绊线。详见对象分析算子的说明。 | N/A |
算子描述
通过 RTMP 协议拉取视频流作为输入,同时自带对象分析能力(包含 ROI 检测和越线检测)。
说明
该节点不支持获取截图作为样例图片,以进行 ROI 和 LC 绘制。更多信息,请参见使用 RTSP/RTMP 流作为输入时,如何才能在输入算子上获取截图以进行 ROI 和 LC 绘制?
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
location | String | 是 | 指定要读取的 RTMP 流的 URL。 |
|
identifier | String | 否 | 为该 RTMP 流添加一个标识符。建议您使用能够明确标识视频流来源的名称。 说明 消息转换算子将推理结果转换为消息元数据时,会采用 |
|
roi-filters | N/A | 否 | 绘制 ROI 区域。详见对象分析算子的说明。 | N/A |
line-crossings | N/A | 否 | 绘制绊线。详见对象分析算子的说明。 | N/A |
算子描述
输出到虚拟时序设备。
使用说明
要使用该算子,您必须先在边缘节点上接入虚拟时序设备。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
device | String | 是 | 从边缘节点已经接入的设备实例中选择一个虚拟时序设备。 |
|
算子描述
通过 RTSP 协议推流到指定 URL。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
location | String | 是 | 指定要写入的 RTSP 流服务器的 URL。 |
|
latency | Integer | 否 | 指定要缓冲的毫秒数。取值范围:0~4294967295。默认值:2000。 |
|
protocols | String | 否 | 选择推送视频流的协议。可选值:tcp、udp、http。默认值:tcp。 |
|
算子描述
输出到虚拟视频设备。
使用说明
要使用该算子,您必须先在边缘节点上接入虚拟视频设备。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
device | String | 是 | 从边缘算子已经接入的设备实例中选择一个虚拟视频设备。 |
|
latency | Integer | 否 | 指定要缓冲的毫秒数。取值范围:0~4294967295。默认值:2000。 |
|
算子描述
将消息元数据与 base64 编码的图片发送到边缘智能的数据流事件中心。
使用说明
在数据流中,该算子的前置算子应包含 消息转换 算子。
控制参数
无
算子描述
将消息元数据推送到 Kafka 服务器。
使用说明
在数据流中,该算子的前置算子应包含 消息转换 算子。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
kafka-brokers | String | 是 | 指定 Kafka 服务器的访问地址(包含端口号)。格式: |
|
topic | String | 是 | 指定消息的主题。 |
|
算子描述
将消息元数据推送到 Redis 服务器。
使用说明
在数据流中,该算子的前置算子应包含 消息转换 算子。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
redis-address | String | 是 | 指定 Redis 服务器的访问地址(包含端口号)。格式: |
|
topic | String | 是 | 指定消息的主题。 |
|
算子描述
通过 RTMP 协议发送 FLV 流数据。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
location | String | 是 | 指定要写入的 RTMP 流服务器的 URL。 |
|
算子描述
将消息元数据作为 Http 请求推送至指定的 URL。
使用说明
在数据流中,该算子的前置算子应包含 消息转换 算子。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
url | String | 是 | 指定接收数据的 URL。格式为: |
|
算子描述
将消息元数据推送到同一个边缘节点上的 Ekuiper 时序数据流实例。
控制参数
无
算子描述
对输入的视频数据进行 H.264 编码。
控制参数
无
算子描述
对输入的视频数据进行 H.264 解码。
控制参数
无
算子描述
对输入的视频数据进行 H.265 编码。
控制参数
无
算子描述
对输入的视频数据进行 H.265 解码。
控制参数
无
算子描述
对输入的视频数据进行解码。
控制参数
无
算子描述
从一个或多个输入源形成一批帧。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
batch-size | Integer | 是 | 批处理大小。取值范围:0~1024, 默认值:1。 |
|
enable-padding | Boolean | 否 | 对帧进行缩放时,是否使用黑色边条填充以保持输入纵横比。默认:false。 |
|
height | Integer | 是 | 输出的视频帧的高度,以像素为单位。取值范围:0~4294967295,默认值:0。 |
|
width | Integer | 是 | 输出的视频帧的宽度,以像素为单位。取值范围:0~4294967295,默认值:1280。 |
|
算子描述
将模型推理服务的处理结果(视频流)转换为 JSON 格式的消息元数据,以便推送到下游的消息接收方。
使用说明
在数据流中,该算子的前置算子应包含推理服务类型算子(包含 推理服务、图像分类、物体检测)及与推理服务相关的分析算子(包含 对象跟踪、对象分析、结果绘制)。
注意
该算子前包含的算子对转化得到的消息元数据有影响。例如,只有当该算子前有 对象分析 算子时,消息元数据中的 ROI 或 LC 相关字段才会有数据。更多信息,请参见数据流事件。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
frame-interval | Integer | 是 | 生成有效载荷的帧间隔。取值范围:1~4294967295。默认值:30。 |
|
conditions | String | 否 | 使用 JSON Path 语法,针对消息元数据设置过滤条件。关于消息元数据的参数结构,请参见数据流事件。 | 见表格下方的示例说明 |
actions | String | 否 | 条件满足时需要执行的操作。可选项:
|
|
send_image | Boolean | 是 | 是否发送图像数据。默认值:false。 |
|
enable_extra_info | Boolean | 是 | 是否发送额外信息。默认值:false。 |
|
示例
conditions 示例:$.ROI.current.ROI1 < 10 and $.ROI.current.ROI1 > 3
这个条件表示只有在 ROI1 区域内检测到的对象数量大于 3 并小于 10 时才发送或不发送该消息。
算子描述
NVIDIA DeepStream RPC 推理服务插件。
使用说明
要使用该算子,您必须先在边缘节点上部署模型服务。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
batch-size | Integer | 否 | 指定推理的最大批处理大小。取值范围:0~1024。默认值:0。 |
|
model-service | String | 是 | 选择要使用的模型服务。 |
|
config-file-path | String | 是 | nvinferserver 实例的配置详情。具体参数说明,请参见 Gst-nvinferserver Configuration File Specifications。 | 见表格下方的示例说明 |
labelfile-path | String | 是 | config-file-path 中包含的 nvinferserver 实例的标签列表。 | 见表格下方的示例说明 |
interval | Integer | 否 | 指定在开始推理前要跳过的连续的批次数。取值范围:0~2147483647。默认值:0。 |
|
示例
config-file-path 示例
infer_config { unique_id: 1 gpu_ids: [0] max_batch_size: 1 backend { triton { model_name: "m-2100055467-mmljp" version: -1 grpc { url: "10.37.xx.xx:40001" } } } preprocess { network_format: MEDIA_FORMAT_NONE tensor_order: TENSOR_ORDER_LINEAR tensor_name: "input_1" maintain_aspect_ratio: 0 frame_scaling_hw: FRAME_SCALING_HW_DEFAULT frame_scaling_filter: 1 normalize { scale_factor: 0.0039215697906911373 channel_offsets: [0, 0, 0] } } postprocess { labelfile_path: "${labelfile_path}" detection { num_detected_classes: 1 per_class_params { key: 0 value { pre_threshold: 0.4 } } nms { confidence_threshold:0.2 topk:20 iou_threshold:0.5 } } } extra { copy_input_to_host_buffers: false output_buffer_pool_size: 2 } } input_control { process_mode: PROCESS_MODE_FULL_FRAME operate_on_gie_id: -1 interval: 0 }
labelfile-path 示例
car bicycle person road_sign
算子描述
使用对象跟踪插件跟踪视频中出现的各种对象。
对象跟踪插件在检测到对象后能够跟踪该对象在视频帧之间的移动,它通过连续的视频帧输入,输出跟踪后的对象(包括其位置和ID等信息)。
控制参数
该算子在不同框架下的控制参数有区别。
DeepStream 框架下该算子包含以下控制参数:
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
display-tracking-id | Boolean | 否 | 是否在对象文本中显示跟踪 ID。默认值:true。 |
|
enable-batch-process | Boolean | 否 | 是否启用跨多个流的批处理。默认值:true。 |
|
enable-past-frame | Boolean | 否 | 是否启用将过去的帧轨迹添加到用户元信息中。默认值:false。 |
|
tracking-algorithm | String | 是 | 选择一种 NVDCF 跟踪算法。
| |
tracker-height | Integer | 否 | 跟踪器应当操作的帧高度,以像素为单位。取值范围:0~4294967295,默认值:384。 |
|
tracker-width | Integer | 否 | 跟踪器应当操作的帧宽度,以像素为单位。取值范围:0~4294967295,默认值:640。 |
|
DLStreamer 框架下该算子包含以下控制参数:
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
tracking-type | String | 是 | 选择一种跟踪算法。可选项:
|
|
算子描述
使用边界框绘制插件在视频帧上绘制处理结果,例如物体检测边界框、分类标签,以及物体追踪信息等。
结果绘制插件的输入是前面各种处理阶段的输出,包括物体识别、分类、追踪等阶段的输出结果。这些输出结果包含了物体的位置、大小、类别、跟踪ID等信息。结果绘制插件会读取这些信息,并在相应的视频帧上绘制相应的标记,如矩形框、文字标签等。
控制参数
该算子在不同框架下的控制参数有区别。
DeepStream 框架下该算子包含以下控制参数:
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
display-bbox | Boolean | 否 | 是否显示边界框。默认值:true。 |
|
display-clock | Boolean | 否 | 是否显示时钟。默认值:false。 |
|
display-mask | Boolean | 否 | 是否显示实例掩码。默认值:false。 |
|
display-text | Boolean | 否 | 是否显示文字。默认值:true。 |
|
DLStreamer 框架下该算子不包含控制参数。
算子描述
使用对象分析插件对检测到的对象执行进一步的空间分析。这个插件包含了两个功能:ROI(Region of Interest)检测和越线(Line Crossing)检测。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
roi-filters | N/A | 否 | 绘制 ROI 区域。见表格下方的操作说明。 | N/A |
line-crossings | N/A | 否 | 绘制绊线。见表格下方的操作说明。 | N/A |
操作说明
说明
注意
上传的图片必须是 .jpg 格式,并且图片大小不能超过 1MB。
说明
注意
上传的图片必须是 .jpg 格式,并且图片大小不能超过 1MB。
算子描述
将一个输入的视频流复制并生成多个与原视频流相同的数据流作为输出。
使用说明
该算子最多允许连接 4 个算子的输入。
控制参数
无
算子描述
通过图像分类模型服务,对输入的视频流进行推理,并完成图像分类。
使用说明
要使用该算子,您必须先在边缘节点上部署 图像分类 类型的模型服务。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
model-service | String | 是 | 从运行中的模型服务中选择一个图像分类类型的模型服务。 |
|
input-process-mode | String | 是 | 在处理视频流中的对象时使用的输入处理方式。可选项:
在选择使用哪种模式时,您可以根据具体需求来决定。如果您的数据流中有多个模型服务算子,您可以在首个算子中采用 Full_Frame 模式(例如,检测行人或车辆等),而在后续算子中采用 Clip_Object 模式(例如,识别检测到的行人或车辆有何具体特征等)。 |
|
interval | Integer | 否 | 指定连续跳过进行推理的批次数量。取值范围:0~2147483647,默认值:10。 |
|
算子描述
通过物体检测模型服务,对输入的视频流进行推理,并完成目标物体检测。
使用说明
要使用该算子,您必须先在边缘节点上部署 物体检测 类型的模型服务。
控制参数
该算子在不同框架下的控制参数有区别。
DeepStream 框架下该算子包含以下控制参数:
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
model-service | String | 是 | 从运行中的模型服务中选择一个物体检测类型的模型服务。 |
|
input-process-mode | String | 是 | 在处理视频流中的对象时使用的输入处理方式。可选项:
在选择使用哪种模式时,您可以根据具体需求来决定。如果您的数据流中有多个模型服务算子,您可以在首个算子中采用 Full_Frame 模式(例如,检测行人或车辆等),而在后续算子中采用 Clip_Object 模式(例如,识别检测到的行人或车辆有何具体特征等)。 |
|
interval | Integer | 否 | 指定连续跳过进行推理的批次数量。取值范围:0~2147483647,默认值:10。 |
|
DLStreamer 框架下该算子包含以下控制参数:
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
model-service | String | 是 | 从运行中的模型服务中选择一个物体检测类型的模型服务。 |
|
inference-region | String | 是 | 指定进行推理的区域。可选项:
|
|
inference-interval | Integer | 否 | 指定连续跳过进行推理的批次数量。取值范围:0~2147483647,默认值:5。 |
|
算子描述
通过大模型推理服务,对输入的视频流进行推理,并完成图像分类。
使用说明
要使用该算子,您必须先在边缘节点上部署 大模型 类型的模型服务。
控制参数
名称 | 类型 | 是否必选 | 说明 | 示例值 |
---|---|---|---|---|
model-service | String | 是 | 从运行中的模型服务中选择一个大模型类型的模型服务。 |
|
llm-resize-height | Integer | 是 | 设置上传给大模型的图像帧的高度(单位为像素)。取值范围:1~10240。默认值:720。 |
|
llm-resize-width | Integer | 是 | 设置上传给大模型的图像帧的宽度(单位为像素)。取值范围:1~10240。默认值:1280。 |
|
prompt | String | 是 | 设置输入给大模型的提示词。 |
|
label-mapping | String | 是 | 设置标签映射规则,采用 JSON 格式。 |
|
input-process-mode | String | 是 | 指定进行推理的区域。可选项:
|
|
interval | Integer | 否 | 指定连续跳过进行推理的批次数量。取值范围:0~2147483647,默认值:30。 |
|