Как извлечь из видео каждый 10-й кадр?

Вы можете поиграться с env и sed.

В качестве примера мне нужно было прочитать эту переменную «ELASTICSEARCH _CLUSTER -NODES».
Команда env выводит это:

~ $ env
ELASTICSEARCH_CLUSTER-NODES=elasticsearch:9200
JAVA_ALPINE_VERSION=8.212.04-r0
HOSTNAME=17eb9e7fec4c
...

Таким образом, чтобы извлечь переменную:

ESHOST=`env | sed -n 's/ELASTICSEARCH_CLUSTER-NODES=\(.*\)/\1/p'`
0
02.05.2021, 04:11
1 ответ

Если вы хотите получить 1/10 того, что у вас есть сейчас (при использовании -r 1), используйте

 -r 0.1

Он получит 1 frame every 10 secondsвместо 1 frame every 1 second.

 ffmpeg -i out1.avi -r 0.1 -f image2 image-%3d.jpeg

РЕДАКТИРОВАТЬ:

Если вам действительно нужен каждый 10-й кадр из видео, вы можете использовать selectсmodulo 10

ffmpeg -i out1.mp4 -vf "select=not(mod(n\,10))" -vsync vfr image_%03d.jpg

но это может дать больше изображений, чем раньше.

Если видео имеет 25fps, то -r 1дает изображение через каждые 25 кадров. А если видео имеет 60fps, то выдает изображение через каждый 60-й кадр. Таким образом, он дает меньше изображений, чем этот код, который получает изображение каждый 10-й кадр.

1
28.07.2021, 11:35

Теги

Похожие вопросы