2016-07-19 2 views
1

Что я хочу сделать, так это получить видеокадр в какое-то время (например, через 20 секунд). Я знаю, что я мог бы сделать что-то вроде этого - перемотать видео и паузу:Получение видеокадры в предусмотренное время Qt

QMediaPlayer* player = new QMediaPlayer; 
... 
player->play(); 
player->setPosition(20000); 
player->pause(); 

Но есть некоторые более элегантное решение (это, кажется, как взломать ко мне, так как я не нужно всего видео, но только кадр в какой-то момент)?

+0

это [ссылка] (http://stackoverflow.com/questions/30800772/ How-to-grab-video-frames-in-qt/30863191 # 30863191) может вам помочь. – Jeet

+1

другой [link2] (http://stackoverflow.com/questions/37724602/how-to-save-a-frame-using-qmediaplayer) может вам помочь. – Jeet

ответ

3

Ниже приведены шаги, которые помогут вам захватить кадр из видеофайла.

уровень проекта

  1. QT + = мультимедиа
    Код уровня
  2. Инициировать QMediaplayer объект (QMediaPlayer (QObject родителя, QMediaPlayer :: VideoSurface)
  3. набор QMediaplayer.setVideoOutput к (Подкласс от QAbstractVideoSurface)
  4. Подкласс QAbstractVideoSurface должен повторить реализацию поддерживаемых методовPixelFormats, isFor matSupported, старт, присутствует
    4.From метод присутствует мы можем получить буфер изображения каждого кадра
    5.Load видео файл, используя QMediaplayer
    6.setMute = TRUE (аудио)
    7. Установите необходимое положение в миллисекундах до объекта
    8.Start способа воспроизведения QMediaplayer
    9.From присутствует метод преобразует полученный буфер данных для QImage, а затем QPixmap (если это необходимо).
    10.Обратитесь к pixmap, используйте его для загрузки в виде виджета (пример: в QLabel)
  5. Немедленно приостановите воспроизведение видеофайла (если вам нужно запечатлеть какой-либо другой фрейм). Другая мудрая остановка() вместо Пауза()). Это может быть сделано с использованием сигнала-слот от объекта подкласса (QAbstractVideoSurface) для объекта QMediaPlayer
  6. Когда это сделано, вызовите метод останова суб класса QAbstractVideoSurface, а затем QMediaplayer

Выше указанном примере приложение может быть найдено here

(Application Screen Shot)

enter image description here

Open Video File: Обзор и выбрать видео фил е
Slider: выберите позицию, которую вы хотите
Захват: захват изображения и вид в QLabel
Сохранить: сохранить захваченное изображение

Смежные вопросы