我正在尝试一些简单的事情 - 尝试使用 Raspberry Pi ffmpeg 从 RTSP 流中获取 30 秒的视频。命令如下:
ffmpeg -i <rtsp:...> -t 30 <output>
RTSP 字符串很长(约 70 到 80 个字符)。它总是失败,并显示:
[1] 5436
bash: -t command not found
这是ffmpeg的问题还是Raspberry Pi配置问题?
我曾尝试研究参数长度限制,但无果。
答案1
您的流 URL 中可能有一个&
字符。在命令行上,您需要使用 对其进行转义\
,因为它是 bash 中的特殊字符,用于分隔命令:
ffmpeg -i rtsp://host/path?param1=\¶m2= -t 30
注意\&
。如果不是与号,则是其他特殊字符。
或者只需将 URL 放在双引号中即可完成:
ffmpeg -i "rtsp://host/path?param1=¶m2=" -t 30
出现此错误的原因是:
bash: -t command not found
这是因为,假设您的 URL 中某处有一个 & 符号,bash(本质上)会尝试执行两个命令。因此,如果您有(我对您的 URL 进行了合理的猜测):
ffmpeg -i rtsp://example.com?x=0&y=0 -t 30
Bash 尝试运行:
-
ffmpeg -i rtsp://example.com?x=0
-
y=0 -t 30
第二个被解析为“设置环境变量,y
然后执行带有一个参数的0
命令”,并且不是实际的命令。因此,出现错误。-t
30
-t
你的情况可能不完全如此,因为我只是猜测,但这就是总体思路。
bash 行为的细节超出了本答案的范围,并且为了简洁起见一般会被跳过。
这是ffmpeg的问题还是Raspberry Pi配置问题?
我曾尝试研究参数长度限制,但无果。
顺便说一句,参数长度限制在这里不是问题。:) 是的很大。它也硬编码到内核中,因此没有用户配置选项。