Ich versuche etwas, das eigentlich ganz einfach sein sollte: Ich versuche, mit dem Raspberry Pi ffmpeg ein 30-Sekunden-Video aus einem RTSP-Stream zu extrahieren. Der Befehl sieht folgendermaßen aus:
ffmpeg -i <rtsp:...> -t 30 <output>
Der RTSP-String wird lang (ca. 70 bis 80 Zeichen). Er schlägt immer fehl mit:
[1] 5436
bash: -t command not found
Ist das ein FFMPEG-Problem oder ein Raspberry Pi-Konfigurationsproblem?
Ich habe versucht, die Längenbeschränkungen für Argumente zu recherchieren, bin aber zu keinem Ergebnis gekommen.
Antwort1
Sie haben wahrscheinlich ein &
Zeichen in der Stream-URL. In der Befehlszeile müssen Sie es mit einem maskieren \
, da es in Bash ein Sonderzeichen ist und Befehle trennt:
ffmpeg -i rtsp://host/path?param1=\¶m2= -t 30
Beachten Sie das \&
. Wenn es sich nicht um ein Et-Zeichen handelt, dann um ein anderes Sonderzeichen.
Oder setzen Sie die URL einfach in Anführungszeichen und fertig:
ffmpeg -i "rtsp://host/path?param1=¶m2=" -t 30
Der Grund für diesen Fehler:
bash: -t command not found
Dies liegt daran, dass Bash (im Wesentlichen) versucht, zwei Befehle auszuführen, vorausgesetzt, Ihre URL enthält irgendwo ein Et-Zeichen. Wenn Sie also Folgendes haben (ich rate mal vernünftig, was Ihre URL ist):
ffmpeg -i rtsp://example.com?x=0&y=0 -t 30
Bash versucht auszuführen:
-
ffmpeg -i rtsp://example.com?x=0
-
y=0 -t 30
Wobei der zweite als „Umgebungsvariable festlegen, y
um 0
dann den Befehl -t
mit einem Parameter auszuführen 30
“ analysiert wird und -t
kein tatsächlicher Befehl ist. Daher der Fehler.
Ihre Situation trifft vielleicht nicht genau darauf zu, da es sich nur um eine Vermutung handelt, aber das ist die allgemeine Idee.
Details zum Verhalten von Bash liegen außerhalb des Rahmens dieser Antwort und wurden der Kürze halber im Allgemeinen übersprungen.
Ist das ein FFMPEG-Problem oder ein Raspberry Pi-Konfigurationsproblem?
Ich habe versucht, die Längenbeschränkungen für Argumente zu recherchieren, bin aber zu keinem Ergebnis gekommen.
Übrigens sind Längenbeschränkungen für Argumente hier kein Thema. :) Es istsehr groß. Es ist außerdem im Kernel fest codiert, es gibt also keine Benutzerkonfigurationsoptionen dafür.