2016-07-15 6 views
2

Обычно я использую ThumbnailMe для создания контактных листов эскизов. Моя настройка по умолчанию - 15 строк по 5 столбцов, а значит, 75 изображений, в видеороликах от 45 минут до 90 минут. ThumbnailMe делает контактный лист такого размера практически мгновенно. Недавнее требование сделать много контактных листов для большого количества видеороликов, я смотрю на вариант командной строки, поэтому я могу делать это партиями. Я пробовал пару различные способы, чтобы сделать эскизы из командной строки:Самый эффективный способ для создания эскизов ffmpeg? [Windows 10]

ffmpeg -ss 300 -i myvideo.avi -vf fps=1/300 %d.jpg 

или

ffmpeg -i myvideo.avi -vf fps=1/60 %d.jpg 

Независимо от того, какой из этих методов я использую это занимает примерно минуту, чтобы сделать всего 16 скриншотов (оттуда я буду использовать ImageMagick для создания контактного листа). Как я уже сказал выше, ThumbnailMe может сделать сетку 15x5 изображений простым нажатием кнопки. ThumbnailMe построен на старой программе командной строки, Movie Thumbnailer, которая, я думаю, использовала старую версию ffmpeg или, по крайней мере, кодек libavcodec.

Если эти другие программы могут создавать эскизы так быстро, почему так долго требуется ffmpeg, чтобы сделать их для меня? Даже если я вывожу скриншоты в очень маленьком размере, скажем, 50х50, для каждого создаваемого изображения по-прежнему требуется ~ 2 секунды.

ответ

1

Фильтр fps - неэффективный способ обойти это. Фильтр выбора - лучший выбор. FFmpeg также имеет фильтр для генерации сетки, если хотите.

ffmpeg -i in.mp4 -vf select=not(mod(n\,800)),scale=200:-1,tile=15x5 -vsync 0 in-grid.jpg 

Это выбирает каждый кадр 800-, весы выбранных кадров пропорционально шириной 200 пикселей, а затем плитки первых 75 выбранных кадров в макете 15x5. Фильтр плитки имеет options для внешней границы и межкадрового дополнения, если это требуется.

Для того, чтобы сделать это максимально эффективным, интервал выбора (800) следует выбирать так, чтобы фильтр выбора не выводил больше кадров, чем требуется для сетки. Кроме того, вы можете сэкономить некоторое время в FFmpeg, опуская масштаб и плитку и сделайте это в другом месте.

+0

Это действительно создает сетку и, относительно говоря, быстрее, чем методы, которые я использовал. Тем не менее, я в следующий раз попробовал это с высоким разрешением видео (скорость передачи данных 5000 кбит/с, 1280x720 с форматом AVC), и для генерации сетки потребовалось более 60 секунд. – gregm

1

Я использую mthttps://github.com/mutschler/mt/releases для моих контактных листов, который довольно быстро и должен предлагать все, что вам нужно.

Я только что сделал быстрый тест, и мне потребовалось около 27 секунд, чтобы создать сетку 15x5 в режиме по умолчанию. В быстром режиме это заняло всего около 4 секунд. (протестировано в файле AVC размером 6300Kbp/s, 1280x720, h264)

Основное различие между быстрым и стандартным режимом состоит в том, что при быстрой пересылке в следующую позицию захвата оно немного более неточно.