Убрать события движения из файла

Я работаю над проектом с замедленной съемкой, в настоящее время у меня есть пара длинных видео, где есть части, где ничего не происходит, и мне интересно, есть ли программа, которая может вырезать все эти части или убрать все движущиеся части и поместить в один файл, а не я, проходя часы воспроизведения и вручную вырезая их.

Я читал, что VLC может обнаружить движение при воспроизведении, но не уверен, как это использовать. Это может быть решением для Windows или Linux.

1 ответ

Я проводил некоторые эксперименты с ffmpeg и mpdecimate фильтр.

Вывод - это видео только с "активными" частями, и я использовал некоторые приемы с FPS.

Выход будет воспроизводиться для игрока со скоростью 25 кадров в секунду, но в реальности он будет со скоростью 5 кадров в секунду (отрегулируйте число 5 в обоих setpts и первый fps фильтры для регулировки скорости. Если вам подходит 25fps (мое тестовое видео показало слишком быстрые изменения для меня), удалите последний фильтр и используйте -map [c] вместо.

Если вам нужно настроить порог, посмотрите здесь: (fe: mpdecimate=hi=64*12:lo=64*8:frac=0.33)

mpdecimate бросил бы кадры, но длина осталась. С setpts Вы заставляете его рассчитывать фиксированную продолжительность для каждого кадра и первого fps заставляет его соответствовать "текущей" скорости, определенной setpts, Прошлой fps делает его "воспроизводимым" (вставляет дублированные кадры для заполнения в видео со скоростью 25 кадров в секунду), (видео со скоростью 5 кадров в секунду на моем VLC воспроизводится не очень хорошо, время от времени зависая)

ffmpeg -y -i input.mp4 -filter_complex "[0:v] mpdecimate [a] ; [a] setpts='N/(5*TB)' [b] ; [b] fps=5 [c] ; [c] fps=25 [d]" -map "[d]" -c:v libx264 ouput.mp4
Другие вопросы по тегам