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 配置。