Як витягти зображення з відеофайлу?


Відповіді:


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.

1
ваше посилання здається порушеним
Nolwennig

@Nolwennig. Виправлена, не настільки конкретна, як попередня, але принаймні є офіційною документацією і навряд чи може бути зламана.
YoMismo

3
-r 1- для кількості зображень в секунду Отже, за 60 і більше, або за 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 ви можете натиснути правою кнопкою миші, відео, зробити знімок


Це звучить трохи трудомістко, якщо потрібні будуть зображення, наприклад, для кожного кадру в сцені.
Кусалаланда
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.