Я делал некоторые эксперименты с ffmpeg
и mpdecimate
фильтр.
Вывод - это видео только с «активными» частями, и я использовал некоторые приемы с FPS.
Выход будет воспроизводиться для игрока со скоростью 25 к / с, но в действительности он будет со скоростью 5 к / с (отрегулируйте число 5 в обоих setpts
и первых fps
фильтрах, чтобы отрегулировать скорость. Если вам подходит 25 к / с (мое тестовое видео показало слишком быстрые изменения для меня), отбросьте последний фильтруйте и используйте -map [c]
вместо этого.
Если вам нужно настроить порог, смотреть на здесь : (Напр: 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