Linux: как извлечь кадры из видео? (без потерь)

Я прочитал несколько ответов и статей об использовании таких программ, как VLC,MPlayer,ffmpeg, etc., но ни один из методов, которые я видел, не является " без потерь."Они не захватывают каждый кадр. Я хочу извлечь каждый кадр из видео как изображение (100% качество, я не хочу терять никаких деталей), поэтому теоретически можно было бы взять эти изображения и воссоздать видеофайл, не имея возможности отличить его от оригинала (исключая отсутствие звука, конечно).

бонус точки, если я могу указать время начала и окончания для захвата кадров, поэтому мне не нужно обрезать видеофайл заранее.

3
задан Trae
08.05.2023 17:16 Количество просмотров материала 3513
Распечатать страницу

2 ответа

вы можете извлечь кадры как PNG, формат сжатия изображения без потерь. Например, для извлечения кадров из метки 5mn в метку 10mn:

ffmpeg -ss 05:00 -i <input> -t 05:00 filename%05d.png
5
отвечен Ely 2023-05-10 01:04

есть несколько инструментов, которые должны быть в состоянии извлечь все кадры из видеофайла:

avconv

avconv -i file.avi -f image2 Out%00d.jpg

ffmpeg

ffmpeg -i input.file thumb%04d.png -hide_banner

Это также может экспортировать BMP, которые занимают гораздо меньше времени обработки, чем PNG или JPG.

там тоже есть bash-скрипт с именем mov2frame.sh что пытается автоматизировать при помощи ffmpeg добыча процесс.

Mplayer

mplayer -ao null -vo png input.file

или другой вариант:

mplayer -nosound -vo png:z=9 my_file.mp4

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

  1. создайте папку для хранения кадров и скопируйте в нее путь. Для пользователей Mac OSX / Linux это должен быть полный путь (нет ~).

  2. нажмите Сервис / Настройки в VLC.

  3. в разделе " Показать настройки "нажмите"все".

  4. в разделе "Видео", выберите "фильтры". Поставьте галочку "Scene video filter".

  5. разверните " фильтры "и выберите " фильтр сцены",

  6. вставьте путь из ранее в "префикс пути к каталогу".

  7. выберите долю кадров для кодирования в поле "Коэффициент записи". 1/12 с выходом каждые 12, 1/1 экспортирует их все

  8. нажать кнопку "Сохранить".

  9. нажмите медиа / открыть видео и найдите свое видео. Терпеливо позвольте всему этому играть.

  10. Выберите Сервис / Параметры. В разделе "Показать настройки" нажмите "все". В разделе "Видео" выберите "фильтры". Снимите флажок "фильтр видео сцены". Нажмите кнопку "Сохранить". Это так, что VLC не будет генерировать эскизы в следующий раз, когда вы играете видео. link

там также, как представляется, некоторые потенциальные проблемы с правами администратора на первом запуске программы:

sudo vlc [sudo] password for mint16: VLC is not supposed to be run as root. Sorry. If you need to use real-time priorities and/or privileged TCP ports you can use vlc-wrapper (make sure it is Set-UID root and cannot be run by non-trusted users first).

VLC также работает намного лучше при извлечении в BMP вместо PNG

2
отвечен chronometric 2023-05-10 03:21

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх