使用 GStreamer 进行 RTSP 流媒体 – 真实客户问题&案例 (UDP 与 TCP)
本文记录了我们的关于 RTSP 流媒体的真实客户支持对话 热像仪 使用 GSTREAMER.
我们正在分享它 Q&对话框格式 以便其他面临类似问题的客户可以快速遵循故障排除流程.
目录
1. RTSP流地址
顾客:
你好, 我们收到了您的热像仪, 一切正常, 谢谢, 但我们似乎找不到 RTSP 流的地址. 什么是 /stream/sub?
支持:
我们的摄像头 RTSP 流 URL 是:
rtsp://192.168.2.254:554/live
2. RTSP 延迟问题
顾客:
我们测试了 RTSP 流,发现与管理面板预览相比有相当大的延迟.
支持:
这是预期的行为. Web管理预览使用内部优化的管道, 而 RTSP 取决于网络条件和客户端缓冲.
3. UDP 流媒体要求
顾客:
RTSP 流也无法在我需要 UDP 的播放器上运行. 如何获取 UDP 流?
支持:
我可以知道你用的是什么播放器吗? VLC?
顾客:
我的播放器是集成在 Android 应用程序中的 GStreamer.
4. UDP 单播与 UDP 组播
支持:
如果 GStreamer 客户端使用以下方式访问设备 UDP多播, 这是目前 不支持.
我们需要澄清您是否正在使用 UDP单播 要么 UDP多播.
顾客:
我的 GStreamer 管道使用 rtspsrc 同 udp 设置在 protocols 范围.
我没有使用 udp-mcast 价值, 所以应该是UDP单播.
5. 平台澄清
支持:
这个 GStreamer 是否在 Windows 上运行, Linux的, 或安卓?
我们的软件工程师想在我们这边进行测试.
顾客:
我的应用程序在 Android 上使用 GStreamer, 但 rtspsrc 也可以在Linux上测试.
6. 已知的 Linux GStreamer 问题 (参考案例)
支持:
我们在中文技术论坛上发现了类似的问题.
解决方案:
卸载以下插件:
sudo apt-get remove gstreamer1.0-plugins-ugly
该插件可能会发送一些相机无法识别的 RTSP 标头, 导致拒绝服务错误.

参考:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14
您能否提供您的 rtspsrc 管道 (Linux首选)? 应用程序版本也可以用于测试.
7. RTSP DESCRIBE 标头兼容性
支持:
另一个可能的原因是,如果 RTSP 描述 请求不包含:
application/sdp
设备可能会拒绝服务.
这个验证逻辑可能过于严格, 我们计划在未来的固件更新中放宽此条件.
8. Android GStreamer 版本确认
顾客:
在安卓上, 我正在使用:
- gstreamer-1.0-android-universal-1.26.8
它不包括丑陋的插件. 我的 Makefile 包含:
GSTREAMER_PLUGINS := \
coreelements \
playback \
typefindfunctions \
rtsp \
rtp \
rtpmanager \
udp \
tcp \
videoparsersbad \
androidmedia \
opengl
9. 建议的 GStreamer 运行时参数
支持:
我们建议尝试 short-header=true 在 rtspsrc.
顾客:
这是 UDP 的标头吗?
支持:
它是一个 RTSP 标头选项,通常可以提高兼容性.
例子:
gst-launch-1.0 rtspsrc location=rtsp://<ip>:<port>/<path> short-header=true
gst-launch-1.0 rtspsrc location=rtsp://<ip>:<port>/<path> do-rtcp=false short-header=true
10. 内部测试结果 (Linux的)
支持:
我们的工程师使用以下方法测试了 RTSP 流 GSTREAMER 1.0 在Linux上, 它工作正常.


TCP示例:
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
protocols=tcp \
src. \
! decodebin \
! autovideosink
UDP示例 (消除 protocols=tcp):
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
src. \
! decodebin \
! autovideosink
Linux 和 Android GStreamer 内部逻辑是相同的, 因此跨平台的行为应该一致.
11. 结论
此案例强调了将 RTSP 与 GStreamer 结合使用时的几个要点:
- RTSP 网址:
rtsp://<camera_ip>:554/live - UDP 单播 支持; UDP 多播不是
- 避免有问题的插件 (仅限Linux)
- 尝试
short-header=true为了更好的兼容性 - Linux测试结果一般可以应用到Android上
如果您遇到类似问题, 请提供您的 GStreamer 管道或测试客户端, 我们的工程团队将进一步提供帮助.

问一个问题
感谢您的回复。 ✨