RedRabbit
Здравствуйте, не могу понять как работает ffmpeg blackdetect и добиться от него удаление всех черных сцен и затемненых переходов.
Мне нужно максимально найти все темные сцены и затемненые переходы. Если лишнее режется не страшно. Хотя при перевой комманде иногда режется странно. Может быть синтаксис поправить, так до сих пор и не понял толком для чего нужны pic_th pix_th. Доки читал.
ffmpeg -i video.mp4 -vf blackdetect=d=0.01:pic_th=1:pix_th=1 -an -f null - 2> black.txt
А эта команда находит меньше.
ffprobe -f lavfi -i "movie=video.mp4,blackdetect[out0]" -show_entries tags=lavfi.black_start,lavfi.black_end -of default=nw=1 -v quiet > black.txt
Это тоже пробовал, результат как 2
https://pyscenedetect.readthedocs.io/en/latest/download/
johndoe2
pic_th = нижняя граница для доли "черных" пикселов. Если доля "черных" не меньше pic_th, картинка считается черной. По умолчанию 0.98. В твоей первой команде pic_th=1, т.е. картинка считалась черной только если абсолютно все пискелы "черные".
pix_th = верхняя граница яркости для "черных" пикселов от 0 до 1. По умолчанию 0.1. В твоей первой команде pix_th=1, т.е. пиксел любой якрости будет считаться черным.
Пробуй:
pic_th от 0.5 и выше
pix_th от 0.3 и ниже.
RedRabbit
Спасибо
, надо потестировать.
Еще один вопрос, удобнее конечно так, но как передать параметры???
blackdetect=d=0.01:pic_th=1:pix_th=1
В этом коде, если добавлять, то с ошибкой вываливается
ffprobe -f lavfi -i "movie=video.mp4,blackdetect[out0]" -show_entries tags=lavfi.black_start,lavfi.black_end -of default=nw=1 -v quiet > black.txt
RedRabbit
Кому пригодится может быть. В общем, по результатам всех тестов выиграл. Хз почему
Код:
ffmpeg -i video.mp4 -vf blackdetect=d=0.01:pic_th=1:pix_th=1 -an -f null - 2> black.txt
Но иногда вырезает сцену полностью нормальную.
Сделал так: Сначала проверяем есть ли переходы и черные сцены этой командой.
Код:
ffmpeg -i video.mp4 -vf blackdetect=d=0.01:pic_th=1:pix_th=1 -an -f null - 2> black.txt
Если есть, то запускаем, до тех пор пока список не будет пуст, с условием, что если сцена больше 2 секунд, то ее откладываем, а потом, после резки добавляем.
Код:
ffmpeg -i video.mp4 -vf blackdetect=d=0.01:pic_th=1:pix_th=1 -an -f null - 2> black.txt
А потом иногда еще разок прогоняется первой командой.
Получается шикандос. Все лишнее убирается.
Спасибо еще раз johndoe2 за разъяснения.