У меня есть проблемные кадры во время дайвинга из-за моей камеры/SD-карты — каждый четвертый или около того кадр просто черный, и я хочу заменить все эти черные кадры либо интерполяцией между предыдущим и следующим кадром, либо просто дублировать предыдущий кадр.
Я нашел этот вопрос «удалить черные кадры из файлов vob с помощью ffmpeg» , но я не хочу вырезать кадры, а вместо этого хочу интерполировать между двумя кадрами или дублировать предыдущий кадр.
Я думаю, что мог бы получить все соответствующие позиции с помощью фильтров черного кадра и т. д., но какие действия я бы использовал, чтобы заменить эти кадры интерполяцией или дубликатом предыдущего кадра полностью автоматическим способом (поэтому я передавать только мой файл фильма в сценарий)?
Все, что я нашел до сих пор, - это метод "перетасовки кадров", который я мог каким-то образом (как?) передать с помощью положения черных кадров и затем, таким образом, дублировать предыдущий кадр.
Демонстрационные кадры с подробным описанием проблемы можно посмотреть здесь .
Можно удалить черные кадры и продублировать более ранние кадры.
ffmpeg -i in.mp4 -vf blackframe=0,metadata=select:key=lavfi.blackframe.pblack:value=50:function=less -vsync cfr -c:a copy out.mp4
Фильтр черного кадра анализирует и регистрирует долю пикселей кадра, которые являются черными. Фильтр метаданных сохраняет все кадры, которые имеют не более 50% пикселей черного цвета. Удаленные кадры создают разрыв в видеопотоке. Таким образом, установив метод синхронизации видео на постоянную частоту кадров, ffmpeg дублирует более ранние (не черные) кадры, чтобы заполнить эти пробелы.
Вам придется поэкспериментировать со значением выбора метаданных, 50
чтобы получить правильный порог.
3 s 532 ms
и для нового файла3 s 534 ms
1/fps
секунд.
BlueRaja - Дэнни Пфлугхофт