Как извлечь изображения из видео файла?

Ответы:

20

Попробуй с ffmpeg

ffmpeg -i inputfile.avi -r 1 -f image2 image-%3d.jpeg

Вы можете прочитать документацию здесь

  • -i inputfile.avi Файл ввода видео - inputfile.avi
  • -r 1извлечь 1 изображение в секунду видео. Замените это число на количество изображений, которое вы хотите получить в секунду.
  • -f image2 форсированный формат вывода изображения, возможно, вы сможете пропустить это, так как программа пытается выбрать формат вывода изображения из расширения файла.
  • image-%3d.jpeg имя выходных изображений,% 3d указывает, что выходные сгенерированные изображения будут иметь порядковый номер там в 3 десятичных знака, если вы хотите, чтобы число, дополненное нулями, вам просто нужно использовать% 03d.
YoMismo
источник
1
кажется, ваша ссылка не работает
Nolwennig
@Nolwennig. Исправлено, не так специфично, как предыдущий, но, по крайней мере, является официальной документацией и вряд ли будет сломано.
YoMismo
3
-r 1для количества изображений в секунду. Так что для 60ips или 24, это -r 24. И чтобы ограничить экстракт, это -ss [start] -t [duration].
Сандбург
Спасибо, отлично поработай над Xubuntu
Indacochea Wachín
3

Я только что скачал последнюю версию VLC для Windows 32 - 2.1.2 Rincewind, и она прекрасно работает для этого.

шаги:

1 - Нажмите Инструменты> Настройки и нажмите переключатель Все

2 - Прокрутите вниз и нажмите знак + рядом с Видео, чтобы развернуть

3 - Прокрутите вниз и нажмите «Фильтр сцены» и введите информацию для префикса «Путь к каталогу» (где вы хотите сохранить кадры). Не нажимайте Сохранить.

4 - Прокрутите вверх и нажмите на слово Видео под Фильтры

5 - Установите флажок для видеофильтра сцены и нажмите «Сохранить».

6 - Откройте и запустите видео, и оно сохранит .png

7 - Чтобы остановить сохранение кадров, вернитесь к шагу 5 и снимите флажок «Видеофильм сцены». Легко действительно, когда вы знаете, где найти настройки.

Флоренс Тейлор
источник
0

Надеюсь это поможет

#!/bin/bash
source_dir="."
output_dir="."
input_file_types=(avi wmv flv mkv mpg mp4)
output_file_type="jpg"

convert() {
        echo "" | ffmpeg -ss $ss -y -i "$in_file" -an -f image2 -vframes 1 "$output_dir/$out_file"
}

for input_file_types in "${input_file_types[@]}"
do

        find "$source_dir" -name "*.$input_file_types" -print0 | while IFS= read -r -d $'\0' in_file
        do
                echo "Processing…"
                echo ">Input  "$in_file
                # Replace the file type
                out_file=$(echo $in_file|sed "s/\(.*\.\)$input_file_types/\1$output_file_type/g")
            echo ">Output "$out_file

# get video duration
#    fulltime=`ffmpeg -i "$in_file" 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//`;
#    hour=`echo $fulltime | cut -d ':' -f 1`;
#    minute=`echo $fulltime | cut -d ':' -f 2`;
#    second=`echo $fulltime | cut -d ':' -f 3 | cut -d '.' -f 1`;

#    seconds=`expr 3600 \* $hour + 60 \* $minute + $second`;
#    ss=`expr $seconds / 2`; # from the middle of video



    ss=`expr 10`; # from the 10sec of video



    # Convert the file
                convert "$in_file" "$out_file"

                if [ $? != 0 ]
                then
                    echo "$in_file had problems" >> ffmpeg-errors.log
                fi

                echo ">Finished "$out_file "\n\n"
        done
done
Том
источник
0

В VLC вы можете щелкнуть правой кнопкой мыши, видео, сделать снимок

user375835
источник
Это звучит немного трудоемко, если вам понадобятся изображения, например, для каждого кадра в сцене.
Кусалананда