Estoy intentando algo que debería ser simple: intentar usar el ffmpeg de Raspberry Pi para capturar un video de 30 segundos de una transmisión RTSP. El comando se ve así:
ffmpeg -i <rtsp:...> -t 30 <output>
La cadena RTSP se vuelve larga (entre 70 y 80 caracteres aproximadamente). Siempre falla con:
[1] 5436
bash: -t command not found
¿Es esto un problema de ffmpeg o un problema de configuración de Raspberry Pi?
Intenté investigar los límites de longitud de los argumentos, pero no encontré nada.
Respuesta1
Probablemente tengas un &
carácter en la URL de la transmisión. En la línea de comando necesitas escapar con un \
, ya que es un carácter especial en bash y separará los comandos:
ffmpeg -i rtsp://host/path?param1=\¶m2= -t 30
Nota la \&
. Si no es un símbolo comercial, algún otro carácter especial.
O simplemente ponga la URL entre comillas dobles y listo:
ffmpeg -i "rtsp://host/path?param1=¶m2=" -t 30
La razón por la que recibe este error:
bash: -t command not found
Se debe a que, suponiendo que haya un signo comercial en su URL en algún lugar, bash (esencialmente) intenta ejecutar dos comandos. Entonces, si tiene (estoy haciendo una suposición razonable sobre su URL):
ffmpeg -i rtsp://example.com?x=0&y=0 -t 30
Bash intenta ejecutar:
-
ffmpeg -i rtsp://example.com?x=0
-
y=0 -t 30
Donde el segundo se analiza como "establecer la variable de entorno y
para 0
luego ejecutar el comando -t
con un parámetro 30
", y -t
no es un comando real. De ahí el error.
Puede que tu situación no sea exactamente esa, supongo, pero esa es la idea general.
Los detalles del comportamiento de bash están fuera del alcance de esta respuesta y, en general, se han omitido por motivos de brevedad.
¿Es esto un problema de ffmpeg o un problema de configuración de Raspberry Pi?
Intenté investigar los límites de longitud de los argumentos, pero no encontré nada.
Por cierto, los límites de longitud de los argumentos no son un problema aquí. :) Esmuy grande. También está codificado en el kernel, por lo que no hay opciones de configuración para el usuario.