Я использую FFmpeg для извлечения скриншота через временную метку, но я получаю эту временную метку вручную, просматривая видео в VL C и ища точный момент создания эскиза, этот процесс очень трудоемкий, и я нужно сделать это с 220 видео .
Все это для того, чтобы получить изображение миниатюры с высоким разрешением, я также должен упомянуть, что у файла миниатюр нет метки времени в метаданные и в заголовке.
Может ли FFmpeg дать мне точную метку времени, где был сделан эскиз?
ОБНОВЛЕНО
После нескольких часов тестирования с помощью команд FFmpeg я нашел решение, оно не полностью автоматическое c, но оно работает, затем команда:
ffmpeg -ss 00:02:30 -i video.mp4 -t 00:00:40 -loop 1 -i thumbnail.jpg \
-filter_complex "scale=480:270,hue=s=0,blend=difference:shortest=1, \
blackframe=95:30,fps=fps=23" -f null -
Опции для изменения:
- «video.mp4» заменяет видеофайл (очевидно).
- «thumbnail.jpg» заменяет файл миниатюр.
- «- ss» и «-t» - это диапазон времени, где т он, скорее всего, будет.
- "- ss" время начала 00:02:30 (2 минуты с 30 с c)
- "- t" время с начала 00:00:40 (2 минуты с 30se c + 40se c)
- Если вы не знаете, где, вероятно, находится миниатюра, вы можете удалить эту часть, только для ее поиска потребуется больше времени.
- "480: 270" замените размер миниатюры.
- "fps = 23" измените 23 для точности fps файла "video.mp4".
И у нас есть ответ:
[Parsed_blackframe_1] frame:3849 pblack:100 pts:160535 t:160.535000
В этом примере мы можем видеть, что команда дала нам точную временную метку, где было сгенерировано миниатюру "160.535000", которая выражается в секундах с микросекундами.
Теперь для извлечения миниатюры в высоком разрешении мы могли бы использовать найденную временную метку, но учтите, что было бы более точно и точно использовать номер кадра, который в этом случае был бы «frame: 3849».
Использование Эта команда, мы получаем точное изображение:
ffmpeg -i video.mp4 -vf "select=gte(n\, 3849)" -vframes 1 high_resolution.png
Ну, я надеюсь, что это полезно для тех, кто ищет оригинал Изображение миниатюры или вообще, кому нужно точно знать, в какую минуту это было сделано.
Если кто-то в будущем захочет написать сценарий, который может полностью автоматизировать этот процесс, я был бы признателен:)