Использование ffmpeg на Raspberry Pi для захвата видео с RTSP: «команда -t не найдена»

Использование ffmpeg на Raspberry Pi для захвата видео с RTSP: «команда -t не найдена»

Я пытаюсь сделать что-то, что должно быть простым - пытаюсь использовать Raspberry Pi ffmpeg для захвата 30-секундного видео из потока RTSP. Команда выглядит так:

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затем выполнить команду -tс одним параметром 30", и -tне является фактической командой. Отсюда и ошибка.

Ваша ситуация может быть не совсем такой, насколько я могу судить, но общая идея такова.

Подробности поведения bash выходят за рамки этого ответа и обычно опускаются для краткости.


Это проблема ffmpeg или проблема конфигурации Raspberry Pi?

Я пытался исследовать ограничения длины аргументов, но ничего не вышло.

Кстати, ограничения по длине аргументов здесь не имеют значения. :) Это так.очень большой. Он также жестко запрограммирован в ядре, поэтому для него нет параметров пользовательской конфигурации.

Связанный контент