Как я могу использовать FFMPEG для захвата скриншота из видеофайла?
Метод 1:Использование `-vf` (видеофильтр)` scale` и `select`
Этот метод очень гибкий, что позволяет вам указать временную метку, размер вывода и даже выбрать конкретные кадры на основе критериев.
`` `bash
ffmpeg -i input.mp4 -vf "select ='eq (n, 10)', scale =640:-1" -frames:v 1 output.png
`` `
* `-i input.mp4`:указывает входной видеофайл. Замените `input.mp4` на имя вашего видеофайла.
* `-vf" select ='eq (n, 10)', scale =640:-1 "`:это цепочка видеофильтров.
* `select ='eq (n, 10)'`:выбирает 11 -й кадр (n начинается с 0). Измените `10 ', чтобы выбрать другой кадр. Вы можете использовать более сложные выражения здесь, например, `select ='gte (t, 10)'` Выбирает кадры с 10 секунд.
* `Scale =640:-1`:сбрасывание рамки шириной до 640 пикселей при сохранении соотношения сторон. `-1` автоматически рассчитывает высоту. Вы можете указать как ширину, так и высоту при необходимости (например, `Scale =640:480`).
* `-Frames:V 1`:сообщает FFMPEG вывести только один кадр.
* `output.png`:указывает выходной файл png. Вы можете использовать другие форматы изображений, такие как JPEG (`output.jpg`).
Метод 2:Использование `-vf` (видеофильтр)` thumbnail`
Этот метод проще для захвата одной миниатюры в определенное время или процент продолжительности видео.
`` `bash
ffmpeg -i input.mp4 -vf thumbnail -frames:v 1 output.png
`` `
Это захватит миниатюру от примерно середины видео. Чтобы указать точное время:
`` `bash
ffmpeg -i input.mp4 -vf "Thumbnail, setpts =pts -startpts" -ss 10 -frames:v 1 output.png
`` `
* `-SS 10`:стремится к 10 секундам в видео * перед * захватом миниатюры. Как правило, это более эффективно, чем использование `select` в течение определенного времени.
Метод 3:Использование `-vf` (видеофильтр) и` fps` для нескольких скриншотов
Чтобы запечатлеть несколько скриншотов через регулярные промежутки времени:
`` `bash
ffmpeg -i input.mp4 -vf fps =1/5 выход%03d.png
`` `
Это создаст скриншоты каждые 5 секунд (1 кадр в секунду или 1/5 кадров в секунду), пронумерованный `output001.png`,` output002.png` и так далее.
Важные соображения:
* `-ss` placement: Размещение `-SS` * до *` -I` будет выполнять более быструю поиск (он ищет во входном файле). Размещение его после `-i` будет расшифровать все видео до точки поиска и будет медленнее, но может быть более точным для некоторых видео форматов.
* частота кадров: Фактическое число кадров может не совсем соответствовать временному коду из -за изменений в частоте видео кадров.
* Форматы файлов: Вы можете изменить расширение выходного файла на `.jpg`,` .jpeg`, `.bmp` и т. Д., Чтобы использовать разные форматы изображения.
Не забудьте заменить `input.mp4` и` output.png` на ваши фактические имена файлов. Выберите метод, который наилучшим образом соответствует вашим потребностям, и соответственно отрегулируйте параметры. Первый метод предлагает наибольшее количество управления, в то время как остальные быстрее для более простых задач.