
В целях тестирования я хочу создать видео, которое будет меняться между сплошным черным и сплошным белым цветом в каждом кадре со скоростью 10 кадров в секунду. Как это сделать с помощью FFMPEG?
решение1
Быстрым ответом будет «потратить 3 часа на изучение того, как работают фильтры ffmpeg» — то, что я сделал сегодня ради развлечения, поэтому я использовал этот вопрос как вызов.
Похоже, есть несколько способов получить результат, но вот что сработало для меня:
Создайте черное и белое изображения, назвав их
img-001.png
иimg-002.png
.Используйте
ffmpeg
функцию-loop
, которую я узнал изэтот ответ только для работы с изображениями в видео
Генерация изображений:
ffmpeg -f lavfi -i color=black:1920x1080:d=3,format=rgb24 -frames:v 1 -y img-001.png
ffmpeg -f lavfi -i color=white:1920x1080:d=3,format=rgb24 -frames:v 1 -y img-002.png
Зациклить эти изображения на 30 секунд со скоростью 10 кадров в секунду:
ffmpeg -loop 1 -i 'img-%03d.png' -r 10 -t 30 -vf format=yuv420p -y out.mp4
ffprobe
сообщает следующие метаданные:
(edited for clarity)
Duration: 00:00:30.00, start: 0.000000,
Video: h264 (High) yuv420p
1920x1080 [SAR 1:1 DAR 16:9], 20 kb/s, 10 fps
Эта суть имеет другой подходкоторый использует filter_complex
. Хотя он не делает то же самое, его можно адаптировать для этой задачи.