Как использовать мульти-входные фильтры с ffmpeg-python - PullRequest
2 голосов
/ 29 марта 2019

Я хочу имитировать следующую команду ffmpeg с помощью ffmpeg-python

ffmpeg -y -i in.mp4 -t 30 -filter_complex "fps=10,scale=-1:-1:flags=lanczos[x];[0:v]palettegen[y];[x][y]paletteuse" out.gif

Пока что это то, что у меня есть:

in_stream = ffmpeg.input(src, ss=start_time, t=(stop_time-start_time))
scale_input = in_stream
if fps >= 1:
    stream = ffmpeg.filter(in_stream['v'], 'fps', fps)
    scale_input = stream

stream = ffmpeg.filter(scale_input, 'scale', output_width, output_height, 'lanczos')

palette = ffmpeg.filter(in_stream['v'], 'palettegen')
#stream = ffmpeg.filter(stream, palette, 'paletteuse') ???
stream.output(dst).run()

Я проверил, палитра генерирует хорошо, если я вывести его в виде PNG.Тем не менее, я не могу найти, как использовать его через команду множественного ввода paletteuse, поскольку фильтры принимают только один поток в качестве ввода в ffmpeg-python.Я попытался объединить их с помощью ffmpeg.concat(), который был единственным методом, который я нашел, чтобы сделать один поток из двух, но я думаю, что это бессмысленно (и все равно это не работает).

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...