Я хочу добавить ключевые кадры на основе определенного интервала (20 кадров) в мое видео.
Поэтому я использовал следующую команду в ffmpeg
:
ffmpeg -i <input> -vcodec libx264 -x264-params keyint=20:scenecut=0 -acodec copy out.mp4
Вывод: я получаю ключевые кадры каждые 20 кадров.
Но оригинальное видео имело ключевой кадр, например, в frame 1, 12, 89....
Теперь у меня есть ключевые кадры в кадре 1, 21, 41....
Я не хочу заменять ключевые кадры, которые уже были там. Я хочу добавить дополнительные ключевые кадры, чтобы это выглядело так:
frame 1, 12, 21, 41, 89....
Как я могу это сделать?
force_key_frame
, верно?scencut=0
? Пусть Scencut сделает свое волшебство!scenecut
также учитывает расстояние от последнего ключевого кадра, поэтому при низком значении ключевого слова сценарий никогда не может быть запущен, если последний не установлен очень высоким.force_key_frames
имеет возможность зеркально отображать каденцию ключевого кадра исходного потока (пока не документировано - на моем задании), однако это не может быть объединено с другими выражениями в f_k_f.Однако то, что вы можете использовать, это
-force_key_frames source -x264-params keyint=20:scenecut=0
Это установит ключевой кадр, если исходный кадр был ключевым кадром. Однако keyint всегда измеряется по последнему набору ключевых кадров, поэтому, если у вашего источника были KF,
n=0,34,55,64
то результат будет иметь KFn=0,20,34,54,55,64,84
- обратите внимание на отсутствие KF в40,60,80
. Также обратите внимание на последовательные KF на54,55
, так что лучше игнорировать исходные KF и позволить работать сценам.источник
-force_key_frames source
Как говорится, устанавливает ключевые кадры на точные кадры.n=0, 20, 34, 40, 55, 60, 64, 80...
. Но, как я сказал в верхнем комментарии, видео по-прежнему отлично воспроизводится с моим первоначальным решением.