У меня длинное видео с разными сценами. Я хочу извлечь и объединить 2 сцены из видео (которые не начинаются на I-кадре), используя ffmpeg 2.1.4.
Для аргумента скажем, я хочу 5 секунд с 01:00 и 02:00.
Я могу это сделать:
ffmpeg -ss 01:00 -i in.mkv -ss 02:00 -i in.mkv -filter_complex "
[0:v]select='lt(t,5)'[v0];
[0:a]aselect='lt(t,5)'[a0];
[v0][a0][1:v][1:a]concat=n=2:v=1:a=1
" -c:a libvorbis -t 10 out.mkv
Это дает мне фильм, который я хочу, но на самом деле select заставляет ffmpeg декодировать весь оставшийся фильм. Итак, как мне сказать обрезать первый фильм вместо его декодирования?
Я бы предпочел сделать это с помощью комплексного фильтра ffmpeg, если это возможно. Я знаю, что -t
сначала могу просто перекодировать отдельные фильмы, но в моем случае дополнительный шаг кодирования очень медленный, а также теряет изрядное количество качества для этого видео.
Я не могу найти фильтр, который усекает длину пара. Существуют ли узлы фильтра, которые соответствуют параметрам -t
или -ss
?
-filter_complex
работает, ноconcat
файлы нет - т.е. 1-е видео выглядит хорошо, но качество 2-го ужасно. Обратите внимание, я скопировал эти команды точно для обеих (кроме входного файла).Это должно работать быстрее ...
Нет необходимости указывать -t на выходе. Там нет необходимости разделять аудио и видео перед концом.
источник