Gst-nvvideotestsrc#

Gst-nvvideotestsrc 插件使用 CUDA 生成各种格式和模式的视频测试数据,这些数据直接写入使用 video/x-raw(memory:NVMM) 数据类型的 GPU 输出缓冲区。

该插件还可以用于输入原始视频并在输出端生成 GPU 缓冲区。该插件提供属性来引入缓冲区延迟抖动,这可以用于在本地模拟网络条件。

注意

Gst-nvvideotestsrc 插件目前仅在 X86 上受支持。

输出#

本节总结了 Gst-nvvideotestsrc 插件的输出。

  • 输出

    • 带有测试模式的 Gst 缓冲区

    • 视频格式:NV12、I420、RGBA (NVMM)

  • 控制参数

    • gpu-id

    • animation-mode

    • memtype

    • blocksize

    • pattern

Gst 属性#

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

nvvideotestsrc 插件属性#

属性

含义

类型和范围

示例注释

animation-mode

对于动画模式,控制动画的计数器。

枚举 “GstNvVideoTestSrcAnimationMode” 默认值:0,“frames”

(0): frames - 帧计数

(1): wall-time - 挂钟时间

(2): running-time - 运行时间

animation-mode=0

blocksize

每个缓冲区要读取的大小(字节为单位)(-1 = 默认值)

无符号整数。范围:0 - 4294967295 默认值:4096

blocksize=4096

gpu-id

分配缓冲区的 GPU ID

无符号整数。范围:0 - 2147483647 默认值:0

gpu-id=0

num-buffers

在发送 EOS 之前要输出的缓冲区数量(-1 = 无限制)

整数。范围:-1 - 2147483647 默认值:-1

num-buffers=300

pattern

要生成的测试模式类型

枚举 “GstNvVideoTestSrcPattern” 默认值:0,“smpte”

(0): smpte - SMPTE 彩条

(1): mandelbrot - Mandelbrot 集

(2): gradient - 渐变

pattern=1

memtype

用于分配缓冲区的内存类型

枚举 “NvBufSurfaceMemType” 默认值:2,“Device CUDA memory”(设备 CUDA 内存)

(1): Host/Pinned CUDA memory - host(主机/固定 CUDA 内存 - 主机)

(2): Device CUDA memory - device(设备 CUDA 内存 - 设备)

(3): Unified CUDA memory - unified(统一 CUDA 内存 - 统一)

memtype=2

do-timestamp

将当前流时间应用于缓冲区

布尔值。默认值:false

do-timestamp=true

is-live

是否充当实时源。根据 src caps 上的 FPS 设置引入延迟

布尔值。默认值:false

is-live=true

location

原始视频文件输入的文件位置。当未指定文件位置时,将使用模式。

字符串。默认值:NULL

location=test.rgba

file-loop

循环遍历输入文件,直到达到 num-buffers(如果指定)或无限循环

布尔值。默认值:false

file-loop=true

max-jitter

可以应用于每个缓冲区的最大抖动(以毫秒为单位)。仅当 is-live=true 时适用。应用于每个缓冲区的随机抖动范围高达“max-jitter”。

整数,≥0 默认值:0

max-jitter=100

fixed-jitter

固定抖动值列表(以毫秒为单位)。列表将在整个序列中循环使用。仅当 is-live=true 时适用。如果指定了“fixed-jitter”,则忽略“max-jitter”(如果指定)。

分号分隔的整数数组。所有值 ≥0。默认值:“”

fixed-jitter=30;40;100;0;0

如何测试#

nvvideotestsrc 当前仅支持 X86。尚不支持 “Jetson + dGPU”。

在 DGPU 设置上运行以下参考 gst-launch-1.0 pipeline

  1. 默认 SMPTE 模式 - 720p 60Hz

gst-launch-1.0 nvvideotestsrc ! queue ! nveglglessink -e
  1. Mandelbrot 模式 - 1080p 60Hz

    gst-launch-1.0 nvvideotestsrc pattern=mandelbrot ! 'video/x-raw(memory:NVMM), width=1920, height=1080, framerate=60/1' ! queue ! nveglglessink -e
    
  2. Gradient 模式 - 720p 60Hz

gst-launch-1.0 gst-launch-1.0 nvvideotestsrc pattern=2 ! queue ! nveglglessink -e