在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(本質上)會嘗試執行兩個命令。因此,如果您有(我正在對您的網址進行合理猜測):

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 設定問題?

我曾嘗試研究論證長度限制,但一無所獲。

順便說一句,參數長度限制在這裡不是問題。 :) 這是很大。它也被硬編碼到核心中,因此沒有用戶配置選項。

相關內容