You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NVIDIA Jetson AGX设备gst-play/gst-launch无法播放RTSP流求助

在Jetson AGX上使用GStreamer播放RTSP流失败的排查与解决思路

问题概述

在NVIDIA Jetson AGX设备上使用gst-play-1.0和gst-launch-1.0播放RTSP流时均失败,但相同RTSP流在搭载Ubuntu 20.04、GStreamer 1.16.3的x86电脑上可正常播放,说明流本身无问题。

RTSP流常用URL格式:

rtsp://192.168.1.xxx:8554/main.264
rtsp://username:password@192.168.1.xxx:554

已尝试的命令及现象

1. 使用gst-play-1.0

命令:

$ gst-play-1.0 rtsp://192.168.1.xxx:8554/main.264

终端卡住输出:

Press 'k' to see a list of keyboard shortcuts.
Now playing rtsp://192.168.1.xxx:8554/main.264
Pipeline is live.
Opening in BLOCKING MODE 
NvMMLiteOpen : Block : BlockType = 261 
NVMEDIA: Reading vendor.tegra.display-size : status: 6 
NvMMLiteBlockCreate : Block : BlockType = 261 
Prerolled.

2. 使用gst-launch-1.0初始尝试

命令:

$ gst-launch-1.0 rtspsrc location=rtsp://192.168.1.xxx:8554/main.264 latency=0 buffer-mode=auto ! queue ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! videoscale ! video/x-raw,width=1920,height=1080 ! autovideosink

终端卡住输出:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://192.168.1.xxx:8554/main.264
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request

按Ctrl+C后的输出:

^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:02.188911578
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

设备信息

  • L4T 32.6.1 [JetPack 4.6]
  • Ubuntu 18.04.6 LTS
  • Kernel Version: 4.9.253-tegra
  • GStreamer 1.14.5
  • CUDA 10.2.300
  • OpenCV 4.1.1(无CUDA支持)
  • CUDNN 8.2.1.32
  • TensorRT 8.0.1.6

补充测试结果

尝试硬件加速命令

使用Jetson专用硬件加速元素的命令:

gst-launch-1.0 rtspsrc location=rtsp://username:password@192.168.1.xxx:554 latency=500 ! queue ! rtph264depay ! h264parse ! nvv4l2decoder ! nvvidconv ! 'video/x-raw(memory:NVMM),width=1920,height=1080' ! nvvidconv ! autovideosink

终端输出:

Setting pipeline to PAUSED ...
Opening in BLOCKING MODE 
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Progress: (connect) Connecting to rtsp://username:password@192.168.1.xxx:554
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
Progress: (request) SETUP stream 0
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Progress: (request) Sending PLAY request
Progress: (request) Sending PLAY request
Progress: (request) Sent PLAY request
NvMMLiteOpen : Block : BlockType = 261 
NVMEDIA: Reading vendor.tegra.display-size : status: 6 
NvMMLiteBlockCreate : Block : BlockType = 261 

(gst-launch-1.0:14920): GStreamer-CRITICAL **: 21:59:35.771: gst_mini_object_unref: assertion 'mini_object != NULL' failed
NvMMLiteOpen : Block : BlockType = 261 
NVMEDIA: Reading vendor.tegra.display-size : status: 6 
NvMMLiteBlockCreate : Block : BlockType = 261 

使用gst-discoverer-1.0检测流

命令:

gst-discoverer-1.0 rtsp://username:password@192.168.1.xxx:554

输出:

Analyzing rtsp://username:password@192.168.1.xxx:554
Opening in BLOCKING MODE 
NvMMLiteOpen : Block : BlockType = 261 
NVMEDIA: Reading vendor.tegra.display-size : status: 6 
NvMMLiteBlockCreate : Block : BlockType = 261 
Done discovering rtsp://username:password@192.168.1.xxx:554

Topology:
  unknown: application/x-rtp
    video: H.264 (Main Profile)

Properties:
  Duration: 99:99:99.999999999
  Seekable: no
  Live: yes
  Tags: 
      video codec: H.264 (Main Profile)

解决思路

  1. 替换为Jetson专用渲染器
    用nveglglessink替代autovideosink,这是JetPack原生支持的硬件加速显示元素,能避免显示适配问题:

    gst-launch-1.0 rtspsrc location=rtsp://username:password@192.168.1.xxx:554 latency=1000 ! queue ! rtph264depay ! h264parse ! nvv4l2decoder ! nvvidconv ! nveglglessink sync=false
    
  2. 修复显示环境变量
    针对NVMEDIA: Reading vendor.tegra.display-size : status: 6警告,设置显示环境变量:

    export DISPLAY=:0
    export GST_GL_WINDOW=egl
    

    再重新运行播放命令。

  3. 优化RTSP流参数

    • 调高latency值到1000-2000ms,适配网络延迟
    • 启用RTSP重传机制,添加do-retransmission=true参数:
      gst-launch-1.0 rtspsrc location=rtsp://username:password@192.168.1.xxx:554 latency=2000 do-retransmission=true ! queue ! rtph264depay ! h264parse ! nvv4l2decoder ! nvvidconv ! nveglglessink
      
  4. 验证硬件解码功能
    播放本地H264文件,确认nvv4l2decoder等硬件插件正常工作:

    gst-launch-1.0 filesrc location=test.h264 ! h264parse ! nvv4l2decoder ! nveglglessink
    

    若本地播放正常,说明问题集中在RTSP流的网络传输环节。

  5. 更新GStreamer插件
    安装缺失的插件包,确保RTSP和H264处理组件完整:

    sudo apt-get install gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
    

内容的提问来源于stack exchange,提问作者9friday

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:37:32