Вы должны разделить параметры:
command = [ffm_path, '-i', ffm_input, '-r', ffm_rate, '-f', ffm_format, '-vframes', ffm_nb_frames, ffm_filename]
ffm_input
, ffm_rate
, ffm_format
должны содержать только значение:
ffm_input = self.path
ffm_rate = '5'
ffm_nd_frames = str(nb_frames)
ffm_format = 'v412' if platform.system() == 'Linux' else 'image2'
Когда вы передаетеlist анализ не выполняется, поэтому -r 5
принимается как один аргумент, но программа ожидает, что вы предоставите два отдельных аргумента -r
, за которыми следует 5
.
В основном, если вы поставите их какотдельный элемент в списке, как если бы вы указали их в командной строке:
$ echo "-n hello"
-n hello
$ echo -n hello
hello$
В первом примере echo
видит один аргумент -n hello
.Поскольку он не соответствует ни одной опции, он просто печатает его.Во втором случае echo
видит два аргумента -n
и hello
, первый является допустимой опцией для подавления конца строки, и, как вы можете видеть, приглашение выводится сразу после hello
, а не в отдельной строке.