我正在嘗試一些應該很簡單的事情 - 嘗試使用 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(本質上)會嘗試執行兩個命令。因此,如果您有(我正在對您的網址進行合理猜測):
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 設定問題?
我曾嘗試研究論證長度限制,但一無所獲。
順便說一句,參數長度限制在這裡不是問題。 :) 這是很大。它也被硬編碼到核心中,因此沒有用戶配置選項。