rtsp://user:pass@x.x.x.x/VideoString
rtsp://user:pass@x.x.x.x/VideoString
相当长的一段时间过去了,不确定11年发生了什么故事,但是现在ffmpeg已经支持了。
ffmpeg -i rtsp://user:pass@x.x.x.x/VideoString
可以使用。
ffmpeg支持RTSP身份验证。我认为您可能错过了覆盖RTSP URL的引号。
不起作用:
ffmpeg -i rtsp://user:pass@x.x.x.x/VideoString
工作中:
ffmpeg -i "rtsp://user:pass@x.x.x.x/VideoString"
是的,ffmpeg
支持使用 ffplay
命令进行 RTSP 认证。
请尝试使用 ffplay
命令:
ffplay rtsp://user:pass@x.x.x.x/VideoString
这对我有效。
出处 (修改自用于验证ftp和其他使用相同语法的命令):
live/testProgs/openRTSP -4 -u admin admin -w 1280 -h 720 -f 20 rtsp://192.168.0.2/defaultPrimary?streamType=u > testmovie.mp4
在使用ffmpeg时,我发现带有授权的长URL会失败,而使用VLC则没有问题。具有授权的URL长度应小于140个字符,因此139个字符正常工作,而140个字符则会出现method SETUP failed: 401 Unauthorized
的错误。
附注: 在查看源代码后,我找到了https://github.com/FFmpeg/FFmpeg/blob/415f907ce8dcca87c9e7cfdc954b92df399d3d80/libavformat/rtsp.h#L423,似乎没有密码的URL长度为128个字符。
'
而不是双引号"
,正如@AmitSharma所建议的解决方法。ffmpeg -i "rtsp://user:pass@x.x.x.x/VideoString"
使用单引号的解决方案
ffmpeg -i 'rtsp://user:password!@x.x.x.x/VideoString'
FFmpeg似乎支持Digest身份验证,至少在2010年3月25日的这个提交中体现出来: https://github.com/FFmpeg/FFmpeg/commit/855e7732c6bcc7d52cd0863407a721c2bf00fcf1
实现摘要计算的逻辑主要在这个文件中: https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/httpauth.c
根据此changelog,该功能已经被纳入版本0.6: