DeepStream插件指南-Gst-nvstreammux

       Gst-nvstreammux插件从多个输入源生成一批帧。当将一个源连接到nvstreammux (muxer)时,必须使用gst_element_get_request_pad()和pad模板sink_%u从muxer请求一个新的pad。有关更多信息,请参阅DeepStream应用程序源代码中的link_element_to_streammux_sink_pad()。muxer形成批量大小帧的批量缓冲区。(batch-size使用GST对象属性指定。)如果muxer的输出格式和输入格式相同,muxer将来自该源的帧作为muxer输出批处理缓冲区的一部分转发。当muxer返回它的输出缓冲区时,帧被返回到源。如果分辨率不相同,muxer将帧从输入缩放到批处理缓冲区,然后将输入缓冲区返回给上游组件。当批被填充时,muxer将批推到下游,或者达到批生成超时batch -push -timeout。当收集新批处理的第一个缓冲区时,超时开始运行。muxer使用循环算法从源中收集帧。它尝试从每个源(如果所有源都是实时的并且它们的帧速率都相同)中收集每批(batch-size/num-source)帧的平均值。不过,这个数字因每个源而异,取决于源的帧速率。muxer输出单一分辨率(即批处理中的所有帧都具有相同的分辨率)。这个分辨率可以使用width和height属性指定。muxer将所有输入帧缩放到此分辨率。enable-padding属性可以设置为true来保留输入宽高比,同时使用黑色带进行填充。对于DGPU平台,用于缩放和内存分配的GPU可以通过GPU -id属性指定。对于每个需要缩放到muxer输出分辨率的源,muxer创建一个缓冲池,并分配四个大小为:

output width*output height*f

       其中,NV12格式的f为1.5,RGBA格式的f为4.0。内存类型由nvbuf-memory-type属性决定。将live-source属性设置为true以通知muxer源是活动的。在这种情况下,muxer将最后一个复制的输入缓冲区的PTS附加到批处理的Gst缓冲区的PTS上。如果该属性设置为false, muxer将根据第一次与muxer协商能力的源的帧速率计算时间戳。muxer将NvDsBatchMeta元数据结构附加到输出批处理缓冲区。这个元数据包含了关于复制到批处理中的帧的信息(例如帧的源ID,输入帧的原始分辨率,输入帧的原始缓冲PTS)。连接到Sink_N pad的源将在NvDsBatchMeta中有pad_index N。muxer支持在运行时添加和删除源。当muxer从一个新源接收到一个缓冲区时,它会发送一个GST_NVEVENT_PAD_ADDED事件。当一个muxer接收垫被移除时,muxer会发送一个GST_NVEVENT_PAD_DELETED事件。两个事件都包含要添加或删除的源的源ID(参见sources/includes/gst- event.h)。下游元素在接收到这些事件时可以重新配置。此外,muxer还发送一个GST_NVEVENT_STREAM_EOS来指示来自源的EOS。muxer支持计算源帧的NTP时间戳。支持两种模式。在系统时间戳模式下,muxer将当前系统时间附加为NTP时间戳。在RTCP时间戳模式下,muxer使用RTCP发送者报告(RTCP Sender Report)计算帧在源端生成时的NTP时间戳。NTP时间戳设置在NvDsFrameMeta的ntp_timestamp字段中。可以通过设置attachment -sys-ts属性来切换模式。详情请参见DeepStream中的NTP时间戳。

输入和输出

  • 输入

  • NV12/RGBA缓冲来自任意数量的源

  • 控制参数

  • 批量大小

  • batched-push-timeout

  • 宽度

  • 高度

  • enable-padding

  • gpu-id(仅限dGPU)

  • live-source

  • nvbuf-memory-type

  • num-surfaces-per-frame

  • 缓冲池大小

  • attach-sys-ts

  • frame-duration

  • 输出

  • NV12/RGBA批处理缓冲区

  • GstNvBatchMeta(包含批处理缓冲区中各个帧的信息的元)

特性

       下表总结了插件的特性。

Gst-nvstreammux插件特性

功能

描述

版本

可配置批量大小

DS 2.0

可配置的批处理超时

DS 2.0

允许不同分辨率的多个输入流

DS 2.0

允许多个输入流与不同的帧速率

DS 2.0

在muxer中缩放到用户决定的分辨率

DS 2.0

缩放,同时保持宽高比与填充

DS 2.0

多GPU支持

DS 2.0

输入流DRC支持

DS 3.0

用户可配置的CUDA内存类型(固定/设备/统一)输出缓冲区

DS 3.0

为个别源,自定义消息通知应用程序的EOS

DS 3.0

支持添加和删除运行时接受垫(输入源),并发送自定义事件以通知下游组件

DS 3.0

在输出时支持RGBA数据处理

DS 3.0

Gst属性

       下表描述了Gst-nvstreammux插件的Gst属性。

Gst-nvstreammux的gst属性

属性

含义

类型和范围

示例

batch-size

批处理的最大帧数。

整型

0 ~ 4294967295

batch-size=30

batched-push-timeout

即使尚未形成完整的批处理,在第一个缓冲区可用以推送批处理后等待的超时(以微秒为单位)。

有符号整型

-1 ~ 2,147,483,647

batched-push-timeout= 40000 40 msec

width

如果非零,muxer将输入帧缩放到此宽度。

整型

0 ~ 4294967295

width=1280

height

如果非零,muxer将输入帧缩放到此高度。

整型

0 ~ 4294967295

height=720

enable-padding

当缩放输入帧时,通过填充黑色边框来维持纵横比。

布尔型

enable-padding=1

gpu-id

分配用于复制或缩放缓冲区的设备或统一内存的GPU的ID。(只dGPU。)

整型

0 ~ 4294967295

gpu-id=1

live-source

向muxer指示来源是实时的,例如实时馈送,如RTSP或USB摄像头。

布尔型

live-source=1

nvbuf-memory-type

要分配的内存类型。dGPU:

0 (nvbuf-mem-default):默认内存,cuda-device

1 (nvbuf-mem-cuda-pinned):固定的/主机CUDA内存

2 (nvbuf-mem-cuda-device)设备CUDA内存

3 (nvbuf-mem-cuda-unified):统一CUDA内存

杰森:

0 (nvbuf-mem-default):默认内存,表面数组

4 (nvbuf-mem-surface-array):表面阵列内存

整型

0 ~ 4

nvbuf-memory-type=1

num-surfaces-per-frame

每帧的最大表面数

整型

1 ~ 4

num-surfaces-per-frame=4

buffer-pool-size

输出缓冲池中的缓冲区数量

整型

<=1024

buffer-pool-size=4

attach-sys-ts

附加系统时间戳作为ntp时间戳,否则从RTCP发送方报告中计算ntp时间戳

布尔型

attach-sys-ts=TRUE

compute-hw

用于缩放的计算引擎。

0 -默认

1 - GPU

2 - VIC(仅限Jetson)

整型

0 ~ 2

compute-hw=1

interpolation-method

设置插值方法

整型

有效值参考nvbufsurftransform.h中的枚举类型 NvBufSurfTransform_Inter

interpolation-method=1

sync-inputs

使用PTS同步输入帧的布尔属性

布尔型

sync-inputs=1

frame-duration

输入帧的持续时间(以毫秒为单位),用于基于帧速率的NTP时间戳校正。如果设置为0(默认),帧持续时间将自动从RTP抖动缓冲区中看到的PTS值推断出来。当RTP抖动缓冲区和nvstreammux之间的帧持续时间发生变化时,这个属性可以用来指示nvstreammux的正确帧速率,例如,当管道中的nvstreammux之前有一个audiobuffersplit GstElement时。如果设置为-1,将禁用基于帧速率的NTP时间戳校正。

有符号整型

-1 ~ - 147483647

frame-duration=10

drop-pipeline-eos

当所有接收垫都在EOS时,控制从nvstreammux向下游的EOS传播的布尔属性。(实验)

布尔型

drop-pipeline-eos=0(default) for dGPU/Jetson

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "jb-qb-gst9000"是一种产品或者设备的型号或代号。根据提供的信息有限,目前我无法得知具体是什么样的产品或设备。 "jb-qb-gst9000"可能是一种机器人、电器、或者其他一种特定的产品。"jb"和"qb"可能是代表品牌名称或者是设备的关键字。而"gst9000"可能代表产品的系列型号。 然而,根据提供的信息有限,我不能给出更具体的解释或描述。如果能够提供更多关于这个型号的背景信息,我可以给出更详细的答复。 ### 回答2: JB-QB-GST9000是一种产品型号或者是某公司的产品命名。根据这个命名,可以推测它可能是一种电子设备或者机器。关于它的具体功能和用途,缺乏详细的信息,所以无法给出确切的答案。 然而,从字母组合来看,我可以进行一些猜测。"JB"有可能代表产品的品牌或者公司的名称;"QB"可以是产品型号或者规格的标识;"GST9000"可能是产品的系列号或者特定版本的标识。 在电子设备领域,JB-QB-GST9000可能指的是一种新型的手机、电脑、摄像机或其他消费电子产品。由于缺少具体信息,无法推断出其具体功能和特点。 在机械设备领域,JB-QB-GST9000可能是一种激光切割机、汽车配件或者其他机械设备的型号。 总之,根据提供的信息有限,无法给出对JB-QB-GST9000具体是什么产品的准确回答。如果有更多详细信息,我可以给出更具体的解释。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值