Снимите последний кадр видеофайла с помощью ffmpeg / mencoder / transcode et. аль - PullRequest
16 голосов
/ 09 марта 2011

Я хотел бы получить последний кадр в видео (.mpg, .avi, что угодно) и выгрузить его в файл изображения (.jpg, .png, что угодно) , Toolchain - это современная Linux командная строка , поэтому такие вещи, как mencoder, transcode, ffmpeg & c.

Cheers, Боб.

Ответы [ 4 ]

21 голосов
/ 04 ноября 2011

Это не полное решение, но оно укажет вам правильный путь.

Используйте ffprobe -show_streams IN.AVI, чтобы получить количество кадров в видеовходе.Тогда

ffmpeg -i IN.AVI -vf "select='eq(n,LAST_FRAME_INDEX)'" -vframes 1 LAST_FRAME.PNG

, где LAST_FRAME_INDEX - количество кадров меньше одного (кадры с нулевой индексацией), выведет последний кадр.

3 голосов
/ 21 февраля 2019

У меня есть входной видеофайл mp4 / h264 matroska. И ни одно из вышеперечисленных решений не помогло мне. (Хотя я уверен, что они работают для других форматов файлов).

Объединение ответа Самрада выше , а также этого замечательного ответа и придуманное этого рабочего кода :

input_fn='output.mp4'

image_fn='output.png'

rm -f $image_fn

frame_count=`ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 $input_fn`

ffmpeg -i $input_fn -vf "select='eq(n,$frame_count-1)'" -vframes 1 "$image_fn" 2> /dev/null
3 голосов
/ 18 февраля 2015

Я не мог заставить работать решение Нельсона.Это сработало для меня.https://gist.github.com/samelie/32ecbdd99e07b9d8806f

РЕДАКТИРОВАТЬ (на случай, если ссылка исчезнет, ​​вот сценарий - bobbogo):

#!/bin/bash

fn="$1"
of=`echo $1 | sed s/mp4/jpg/`

lf=`ffprobe -show_streams "$fn" 2> /dev/null | grep nb_frames | head -1 | cut -d \= -f 2`
rm -f "$of"
let "lf = $lf - 1"
ffmpeg -i $fn -vf select=\'eq\(n,$lf\) -vframes 1 $of
1 голос
/ 18 ноября 2013

Одна вещь, которую я не заметил, это то, что ожидаемое количество кадров может быть отключено, если файл содержит дубликаты.Если ваш метод подсчета кадров приводит к тому, что ваша команда извлечения изображений возвращается пустой, это может быть причиной того, что она портит.Это размещено здесь .

...