.png)
Согласно документации,mpdecimate«будет отбрасывать кадры, которые не сильно отличаются от предыдущего кадра, чтобы снизить частоту кадров».
Я хотел бы иметь возможность удалять толькоточныйдублирующие кадры из видео. Я знаю, что в видео их тонна, которыепохожий, но я хочу избавиться только от точных дубликатов.
Есть ли у вас какие-нибудь советы, как использовать ffmpeg с mpdecimate для этого (или какой-либо другой инструмент)?
решение1
Значения hi и lo относятся к блокам размером 8x8 пикселей и представляют собой фактическую разницу значений пикселей, поэтому пороговое значение 64 соответствует 1 единице разницы для каждого пикселя или тому же значению, распределенному по-разному по всему блоку.
Кадр считается кандидатом на отбрасывание, если ни один блок 8x8 не отличается более чем на пороговое значение hi, и если не более чем frac блоков (1 означает все изображение) отличаются более чем на пороговое значение lo.
Значение по умолчанию для hi равно 64 * 12, значение по умолчанию для lo равно 64 * 5, а значение по умолчанию для frac равно 0,33.
ffmpeg -i input.mkv -vf mpdecimate=hi=1:lo=1:frac=1:max=0 output.mkv
ДолженУдаляйте изображение только в том случае, если разница в значении всего изображения с предыдущим составляет не более 1 пикселя.
Мой тест со статическим изображением, преобразованным в 5-секундное видео h264, показал, что в реальности 3 кадра из 125 выпадают. Возможно, это связано с артефактами сжатия.
При настройке высокого и низкого значения на 200
ffmpeg -i input.mkv -vf mpdecimate=hi=200:lo=200:frac=1:max=0 output.mkv
затем сохраняется 21 кадр.
Возможно, вам придется скорректировать параметры в соответствии с вашим определением точного дубликата.