Я построил небольшой конвейер для автоматического вырезания и улучшения видеофайлов, которые я записал.
Я обнаруживаю сцены, используя фильтр select='gt(scene,0.4)',showinfo
в ffmpeg.После анализа этой информации я запускаю ffmpeg
для каждой сцены, чтобы создать для них отдельные видеофайлы, например:
ffmpeg -y -i test.avi -ss 00:00:00.00 -to 00:00:54.61 -c copy test_1.avi
ffmpeg -y -i test.avi -ss 00:00:54.61 -to 00:01:38.21 -c copy test_2.avi
ffmpeg -y -i test.avi -ss 00:01:38.21 -to 00:01:59.45 -c copy test_3.avi
[...]
Как вы можете видеть, я использую параметры -ss
и -to
, чтобы указать, гдевыходные файлы должны начинаться и заканчиваться.Это работает очень хорошо , но становится очень, очень медленно со временем, так как мой исходный размер файла составляет ~ 50 гигабайт.
Я думаю, что -ss
позволяет ffmpeg искать с началаИсходный файл ко времени начала, поскольку я могу наблюдать за действиями диска при поиске.
Размещение параметра -ss
до того, как входной файл -i
будет быстрее , но очень неточно (отключается на несколько секунд).
Может быть, есть какая-нибудь хитрость для увеличения производительности обрезки / обрезки без потери точности?
Я также пытался преобразовать входной файл в MP4, что значительно уменьшает размер файла и время поиска,Но потом у меня были ошибки ключевого кадра, и я хочу работать с исходными файлами.
Спасибо!