GStreamer播放RTSP流遇Unauthorized错误但VLC可正常播放求助
问题根源
你的密码包含特殊字符$,shell会将其解析为环境变量引用,导致实际传递给rtspsrc的密码不完整,触发认证失败。而VLC会自动处理URL中的特殊字符编码,所以能正常连接。
可行解决方案
1. 对URL中的特殊字符做URL编码
将密码里的$替换为URL编码值%24,修改后的完整管道命令:
gst-launch-1.0 rtspsrc location=rtsp://Test_Map:T3%24t1ng_2022_Map@x.x.x.x:zzzz/ISAPI/Streaming/Channels/101 ! decodebin ! autovideosink
2. 用单引号包裹URL避免shell解析
用单引号把整个location参数括起来,阻止shell解析特殊字符:
gst-launch-1.0 rtspsrc location='rtsp://Test_Map:T3$t1ng_2022_Map@x.x.x.x:zzzz/ISAPI/Streaming/Channels/101' ! decodebin ! autovideosink
3. 拆分认证参数(备选方案)
如果上述方法无效,可以将用户名和密码单独通过rtspsrc的属性传入,避开URL中的特殊字符问题:
gst-launch-1.0 rtspsrc location=rtsp://x.x.x.x:zzzz/ISAPI/Streaming/Channels/101 user-id=Test_Map user-pw='T3$t1ng_2022_Map' ! decodebin ! autovideosink
补充说明
注意管道末尾需要添加解码和显示元素(如decodebin和autovideosink),否则GStreamer无法处理流的输出渲染。
内容的提问来源于stack exchange,提问作者alp343
相关产品推荐
相关产品推荐

