Я пытаюсь извлечь «ровно 1 кадр из каждых 10» кадров видео (т.е. извлечь 1, оставить 9, затем повторить) для научных целей. Видео имеет 105 кадров, 3,5 секунды, 29,97 кадров в секунду (h.264, .mov, производства Nikon D3100).
VLC
Команда ниже должна выдавать 10 кадров, но она выдает только 6 изображений. Я пробовал разные соотношения сцен, и ни один из них не давал правильное количество кадров (даже близко не к правильному).
vlc 1.mov --video-filter=scene --vout=dummy --scene-ratio=10 --scene-prefix=img- --scene-path=. vlc://quit
Кто-нибудь, пожалуйста, скажите мне, в чем проблема?
FFmpeg
У FFmpeg, похоже, нет команды именно для моей цели. Приведенная ниже команда извлекает 3 кадра из каждой секунды, но, поскольку FPS не равен 30 (а точнее 2,97), это не даст для меня правильных результатов.
Кроме того, даже FFmpeg не выдает правильное количество кадров даже этой командой. Для 3,5 секунд видео я ожидаю максимум 10 кадров, но получаю 12 кадров!
ffmpeg -i 1.mov -y -an -sameq -r 3 -f image2 -vcodec mjpeg %03d.jpg
Как я могу добиться того, чего хочу?
-sameq
не делает то, что вы, вероятно, думаете, что он делает, и был удален из текущей версии (реальный ffmpeg, то есть я не уверен, что это в Ubuntu поддельные ffmpeg). Вместо этого используйте qscale.Ответы:
Выберите 1 кадр из каждых 10 кадров
Вы можете использовать
select
видео фильтрffmpeg
для этого:Для вывода JPG качество можно варьировать с помощью
-q:v
. Эффективный диапазон составляет от 2 (наилучшее качество) до 31 (худшее качество). Вам не нужна эта опция, если вы хотите вместо этого выводить в PNG.Этот выход будет
img_001.jpg
,img_002.jpg
,img_003.jpg
и т.д.источник
unrecognized option '-filter:v'
" с "FFmpeg версии SVN-r0.5.1-4: 0.5.1-1ubuntu1.3" (--enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable -libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect - -enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static)"
.Самым важным аспектом в вашем вопросе является тот факт, что видео использует 29,97 кадров в секунду, а не 30. Pesky NTSC.
В любом случае, я думаю, что будет проще всего извлечь каждый кадр , а затем удалить те, которые вам не нужны:
Затем удалите те, которые вам не нужны. Так как каждый десятый кадр будет заканчиваться на
1.jpg
, мы можем просто взять все остальные ...... и как только вы убедитесь, что это те, которые вы хотите удалить:
Если вы можете использовать
mencoder
, вы можете попробоватьframestep
вариант, как описано в документации , какframestep=10
в вашем случае. Я лично не мог установить / попробовать это все же.источник
Если бы вы сначала конвертировали видео в серию необработанных изображений rgb24 или rgb32, возможно, тогда вы могли бы получить правильное количество кадров, поскольку в оригинальной форме, кажется, есть необычные типы кадров, которые могут вообще не быть изображениями ?? ?
В оригинальных лазерных дисках все видео состояло из серии изображений с отдельными номерами кадров от 1 до 100 000 или более, и, таким образом, это действительно правильный способ установить базовую линию для будущих преобразований или манипуляций.
Индустрия перешла к этой странной идее сжатия просто для того, чтобы уменьшить количество денег и исказить истинные научные формы обработки чисел.
Сначала вы должны извлечь любой звук в виде волнового файла, чтобы полностью не потерять звук. Кажется, что FFMPEG помещает идентификационную информацию в каждое извлеченное изображение, потому что если вы попытаетесь объединить изображения из только что извлеченных и смешать другие изображения из других источников с таким же расширением, ffmpeg будет игнорировать изображения, которые вы пытались вставить в середину всего ,
С форматом лазерного диска частота кадров просто определяется тем, с какой скоростью вы представляете последовательные изображения, и не контролируется самими изображениями.
FFMPEG может извлечь урок из науки вместо искусства для правильной обработки и отображения изображений любого рода. Или, возможно, сама индустрия AV. Промышленность действительно нуждается в улучшении возможностей оборудования и использовании необработанных данных, которые требуют много памяти / хранилища. Ничто не сравнится с необработанными данными для точности и аккуратности.
источник