在 Raspberry Pi 上使用 ffmpeg 从 RTSP 抓取视频:“未找到 -t 命令”

在 Raspberry Pi 上使用 ffmpeg 从 RTSP 抓取视频:“未找到 -t 命令”

我正在尝试一些简单的事情 - 尝试使用 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=\&param2= -t 30 

注意\&。如果不是与号,则是其他特殊字符。

或者只需将 URL 放在双引号中即可完成:

ffmpeg -i "rtsp://host/path?param1=&param2=" -t 30 

出现此错误的原因是:

bash: -t command not found

这是因为,假设您的 URL 中某处有一个 & 符号,bash(本质上)会尝试执行两个命令。因此,如果您有(我对您的 URL 进行了合理的猜测):

ffmpeg -i rtsp://example.com?x=0&y=0 -t 30

Bash 尝试运行:

  1.  ffmpeg -i rtsp://example.com?x=0
    
  2.  y=0 -t 30
    

第二个被解析为“设置环境变量,y然后执行带有一个参数的0命令”,并且不是实际的命令。因此,出现错误。-t30-t

你的情况可能不完全如此,因为我只是猜测,但这就是总体思路。

bash 行为的细节超出了本答案的范围,并且为了简洁起见一般会被跳过。


这是ffmpeg的问题还是Raspberry Pi配置问题?

我曾尝试研究参数长度限制,但无果。

顺便说一句,参数长度限制在这里不是问题。:) 是的很大。它也硬编码到内核中,因此没有用户配置选项。

相关内容