VST 配置#

下表描述了 VST 配置文件中的参数

VST 配置文件#

描述

典型值

network

定义所有网络相关参数的部分

“http_port”

用于访问 VST Web 服务的 HTTP 端口号

“30000”

“server_domain_name”

服务器域名

“vst-service”

“stunurl_list”

STUN 服务器地址

[“stun.l.google.com:19302”]

“static_turnurl_list”

TURN 服务器地址

[]

“coturn_turnurl_list_with_secret”

带有密钥的 Coturn Turnurl 列表

[]

“use_coturn_auth_secret”

启用/禁用 Coturn Auth 密钥

FALSE

“use_twilio_stun_turn”

启用/禁用 Twilio

FALSE

“twilio_account_sid”

Twilio 账户 Sid

“”

“twilio_auth_token”

Twilio 的 Auth 令牌

“”

“ntp_servers”

NTP 服务器地址

[“time.google.com”]

“max_webrtc_out_connections”

给定时间的最大 WebRTC 输出连接数

8

“webservice_access_control_list”

访问控制列表允许限制可以访问 Web 服务器的 IP 地址列表。ACL 是一个逗号分隔的 IP 子网列表,每个子网前缀为 - 或 + 符号。加号表示允许,减号表示拒绝。如果省略子网掩码,例如 -1.2.3.4,则表示仅拒绝该单个 IP 地址。

“+10.42.0.0/32”

“rtsp_server_port”

用户给定的 RTSP 端口号

8554

“rtsp_server_instances_count”

最大 RTSP 服务器实例数

1

“rtsp_preferred_network_iface”

RTSP 流的首选网络接口

“eth1”

“rtsp_in_base_udp_port_num”

RTSP UDP 端口号

-1

“rtsp_out_base_udp_port_num”

RTSP UDP 端口号

-1

“rtsp_streaming_over_tcp”

启用/禁用通过 TCP 的 RTSP 流

FALSE

“rtsp_server_reclamation_client_timeout_sec”

RTSP 服务器回收客户端的超时时间

10

“rx_socket_buffer_size”

接收器套接字缓冲区大小,以字节为单位,避免帧丢失

1000000

“tx_socket_buffer_size”

发送器套接字缓冲区大小,以字节为单位,避免帧丢失

1000000

“stream_monitor_interval_secs”

流监视器间隔(秒)

2

“udp_latency_ms”

UDP 连接的延迟(毫秒)

200

“udp_drop_on_latency”

启用/禁用 UDP 帧丢失

FALSE

“webrtc_latency_ms”

WebRTC 的延迟(毫秒)

500

“enable_frame_drop”

启用/禁用帧丢失

TRUE

“webrtc_video_quality_tunning”

根据 WebRTC 的分辨率调整比特率和 QP 范围

{ “resolution_2160”: { “bitrate_start” : 20000, “bitrate_range” : [15000,25000], “qp_range_I” : [0,30], “qp_range_P” : [0,51] }, “resolution_1440”: { “bitrate_start” : 10000, “bitrate_range” : [8000,15000], “qp_range_I” : [10,30], “qp_range_P” : [10,30] }, “resolution_1080”: { “bitrate_start” : 5000, “bitrate_range” : [3000,8000], “qp_range_I” : [10,30], “qp_range_P” : [10,30] }, “resolution_720”: { “bitrate_start” : 3000, “bitrate_range” : [2000,5000], “qp_range_I” : [10,30], “qp_range_P” : [10,30] }, “resolution_480”: { “bitrate_start” : 1000, “bitrate_range” : [800,3000], “qp_range_I” : [10,30], “qp_range_P” : [10,30] } }

onvif

定义所有 ONVIF 相关参数的部分

device_discovery_timeout_secs”

设备发现超时时间,用于接收来自设备的探测匹配消息

10

“onvif_request_timeout_secs”

从设备接收 ONVIF 命令响应的超时时间

10

“device_discovery_freq_secs”

设备发现频率(秒)

5

“device_discovery_interfaces”

用于设备发现的网络接口,例如 eth0、eth1

[]

“max_devices_supported”

限制设备的最大数量

8

“default_bitrate_kbps”

设备上比特率设置的默认值

8000

“default_framerate”

设备上帧率设置的默认值

30

“default_resolution”

设备上分辨率设置的默认值

“1920x1080”

“default_max_gov_length”

设备上 GOV 长度设置的默认值

60

data

定义所有 VST 数据相关参数的部分

“storage_config_file”

存储配置 JSON 文件的路径

./configs/vst_storage.json

“storage_threshold_percentage”

存储占用率的百分比值,当达到该值时,老化策略会触发

95

“storage_monitoring_frequency_secs”

以秒为单位的频率监控存储使用情况

2

“supported_video_codecs”

视频录制支持的视频编解码器

[“h264”,”h265”]

“supported_audio_codecs”

音频录制和解码支持的音频编解码器

[“pcmu”,”pcma”,”mpeg4-generic”]

“enable_aging_policy”

启用/禁用录制视频的老化策略

true

“max_video_download_size_MB”

限制最大视频下载大小

1000

“always_recording”

启用/禁用始终开启录制

true

“event_recording”

启用/禁用基于事件的录制

true

“event_record_length_secs”

基于事件录制文件的最大持续时间

10

“record_buffer_length_secs”

内部缓冲的最大长度(秒)

2

“use_webrtc_inbuilt_encoder”

WebRTC 中要使用的软件编码器,选项:vp8 和 h264,默认值:h264

“h264”

“webrtc_out_enable_insert_sps_pps”

WebRTC 输出启用/禁用 SPS PPS 插入

TRUE

“webrtc_out_set_iframe_interval”

WebRTC 输出设置 I 帧间隔

30

“webrtc_out_set_idr_interval”

WebRTC 输出设置 IDR 间隔

256

“webrtc_out_min_drc_interval”

WebRTC 输出 DRC 请求之间的最小间隔

5

“webrtc_out_encode_fallback_option”

WebRTC 输出编码回退选项(软件 (h264) 或 pass_through)

“software”

“enable_dec_low_latency_mode”

启用/禁用硬件解码器低延迟模式

true

“webrtc_out_default_resolution”

WebRTC 输出默认分辨率,支持高达 4K

“width x height”

“recorder_enable_frame_drop”

此设置允许记录器在必要时丢帧以保持实时性能。启用帧丢弃可以帮助防止缓冲区溢出并保持录制过程流畅,但可能会导致最终录制中跳过某些帧

true

“recorder_max_frame_queue_size_bytes”

这设置了帧队列的最大大小(以字节为单位)。帧队列充当等待录制的帧的缓冲区。较大的队列可以帮助吸收处理负载的临时峰值,但会占用更多内存

16000000

“enable_ipc_path”

启用/禁用 VST 和 DeepStream(DS) 微服务之间的高效 IPC 缓冲区共享

false

“ipc_socket_path”

指定启用 IPC 时将在其中创建 IPC 套接字的目录

/tmp

notifications

定义所有通知相关参数的部分

“enable_notification”

在消息代理上启用设备事件通知

true

“use_message_broker”

要使用的消息代理 (Redis)

“redis”

“message_broker_topic”

消息代理中使用的主题/事件

“vst.event”

“message_broker_payload_key”

Redis/Kafka 消息的消息键

“sensor.id”

“message_broker_metadata_topic”

消息代理中用于元数据的主题/事件

“test”

“redis_server_env_var”

Redis 服务器地址:端口

REDIS_SVC_SERVICE_HOST:6379

debug

定义所有调试相关参数的部分

“enable_perf_logging”

启用/禁用性能日志记录

TRUE

“enable_qos_monitoring”

启用/禁用 QOS 日志记录

TRUE

“qos_logfile_path”

操作系统日志文件路径

/root/vst_release/webroot/log/

“qos_data_capture_interval_sec”

QOS 日志捕获间隔

1

“qos_data_publish_interval_sec”

QOS 日志发布间隔

5

“enable_gst_debug_probes”

启用/禁用 gstreamer 探针

TRUE

“enable_prometheus”

在 prometheus 上启用/禁用统计信息更新

FALSE

“prometheus_port”

prometheus 端口号

8080

“enable_highlighting_logs”

启用特殊颜色突出显示某些日志

TRUE

“enable_debug_apis”

启用/禁用调试 API

TRUE

overlay

定义所有叠加相关参数的部分

“enable_gem_drawing”

启用/禁用 GEM 绘图

TRUE

“analytic_server_address”

分析服务器的地址

http://<ip_address>:<port_num>/emdx”

“overlay_text_font_type”

叠加字体类型,有关更多字体,请参阅 /usr/share/fonts/truetype/

“DejaVuSansMono.ttf”

security

定义所有安全相关参数的部分

“use_https”

启用/禁用 https

TRUE

“use_rtsp_authentication”

启用/禁用 RTSP 代理流身份验证

TRUE

“use_http_digest_authentication”

启用/禁用 HTTP 用户身份验证

TRUE

远程访问选项#

STUN/TURN 服务器的安装#

WebRTC 流媒体必须安装和配置这些服务器。以下是 STUN/TURN 的 NAT 类型要求

支持的摄像头#

案例

NAT 类型

STUN/TURN 要求

1

对称到对称

TURN

2

对称到端口限制圆锥型

TURN

3

对称到地址限制圆锥型

STUN(但可能不可靠)

4

对称到完全圆锥型

STUN

5

其他一切

STUN

根据您的网络类型,您可以选择安装 STUN 和/或 TURN 服务器

  • 您可以使用 stunurl 配置参数设置 STUN 服务器。

  • 您可以使用 turnurl 配置参数设置 TURN 服务器。


WebRTC 流媒体所需的 Turn 服务器设置,从 vst-config 中使用以下选项之一

示例

选项 1:使用静态凭据指定 turn 服务器 URL。

  • static_turnurl_list: [“admin:admin@10.0.0.1:3478”]

选项 2:使用密钥指定 coturn turnUrls。

要安装 coturn 服务器,请运行以下命令

sudo apt-get install coturn
  • use_coturn_auth_secret: true

  • coturn_turnurl_list_with_secret: [“10.0.0.1:3478:secret_key”,10.0.0.2:3478:secret_key2]

选项 3:指定 Twilio turn 服务器账户详细信息 userId 和 auth_token。用户必须在 https://www.twilio.com/ 上创建账户

  • use_twilio_stun_turn: true

  • twilio_account_sid: “<accound-sid>” 或 twilio_account_sid: “<account_sid>:<key_sid>”

  • twilio_auth_token: “<auth_token>” 或 twilio_auth_token: “<key_secret>”

这是来自 Google 的公共 STUN 服务器

  • “stun.l.google.com:19302”,您可以通过设置 vst-config 选项 “stunurl” 选项来使用它

注意

TURN 服务器不是强制性的,只有当客户端和服务器位于不同的网络中时才需要。

想使用 CSI 摄像头吗?#

CSI 摄像头设置#

本指南提供有关设置 CSI 摄像头的说明

先决条件#

  • 连接到 Jetson 板的 IMX 274 双 CSI 摄像头

检测和设置#

1. 验证 CSI 摄像头检测#

首先,确保您的系统可以检测到连接的 CSI 摄像头。

  • 更新软件包列表并安装必要的实用程序

    sudo apt-get update
    sudo apt-get install v4l-utils
    
  • 列出检测到的视频设备

    v4l2-ctl --list-devices
    
  • 确认 IMX274 双摄像头在输出中列出。

2. 配置容器访问摄像头设备#

  • 打开设备配置文件

    sudo nano /etc/nvidia-container-runtime/host-files-for-container.d/devices.csv
    
  • 如果该行尚不存在,请将以下行附加到文件中

    dev, /dev/video*
    
  • 保存并关闭编辑器。

3. 为本机适配器配置 VST#

  • 打开 VST compose 文件

    sudo nano /opt/nvidia/jetson/services/vst/compose.yaml
    
  • 在 VST 服务下添加本机适配器环境变量

    environment:
      ADAPTOR: "native"
    
  • 保存并关闭编辑器。

激活 CSI 摄像头#

完成设置后,重新启动 jetson-vst 服务以应用更改。现在应该可以从 VST GUI 访问 CSI 摄像头。

注意

如果您不想使用 CSI 摄像头,请从 VST compose 文件中删除 ADAPTOR 环境变量,然后重新启动 jetson-vst 服务。

VST 配置详细信息可以在这里找到: VST 配置