Как визуализировать пользовательские видеоданные в Qt?

Я никогда не делал видеоприложения Qt - новичок в этой области. У меня есть собственный формат видеофайла для рендеринга с использованием Qt. Формат видеофайла: 256-байтовый заголовок, затем пиксельные данные, затем 256-байтовый заголовок, затем пиксельные данные и так далее. Заголовок содержит такую ​​информацию, как ширина, высота в пикселях, количество байтов на пиксель, частоту кадров и т. д., а данные о пикселях представлены в формате Байера (GBRG). Возможно, мне придется обрабатывать данные перед отображением - например, конвертировать в RGB (пока не уверен). Я вижу, что существует множество классов, связанных с видео, таких как QGL*, QMovie, QVideo*... не знаете, с чего начать? Я видел пример mandelbrotwidget, который выглядит как хорошее место для начала, но все же мне нужен совет. Кроме того, нужно ли мне писать плагин Qt Image для шаблона Байера?

Спасибо.


person Nimesh Kumar    schedule 16.10.2012    source источник


Ответы (2)


Хороший совет - делать все самому. Если у вас простая структура данных, прочитайте ее простым C++-кодом.

Диалог от Bayer RGB к RGB как здесь вы также можете вести без использования каких-либо объектов Qt.

И теперь, когда у вас будет тривиальное RGB-изображение (даже в вашей собственной структуре) для каждого кадра, вы можете показать его на виджетах, таких как QGL* -- если вы предпочитаете OpenGL рендеринг, или на классах Qt, таких как QPainter, QImage...

Еще несколько ссылок: Программирование C++ GUI с Qt4, 2-е издание, Каркас графического представления

person tro    schedule 16.10.2012

Лучше всего начать с изучения основ пользовательского рисования в Qt. Короче говоря, очень простая реализация потребует от вас:

  1. Создайте собственный подкласс QWidget
  2. Переопределить метод paintEvent()
  3. Используйте QPainter/QImage, чтобы декодировать необработанные видеоданные в данные изображения и рисовать их на экране.

В Qt есть много хороших примеров кода для начала работы, например:

http://qt-project.org/doc/qt-4.8/examples-painting.html

Как только у вас будет запущена и запущена простая реализация, а также базовое понимание концепций/классов Qt, тогда вы будете готовы к профилированию, оптимизации и использованию более продвинутых функций Qt (GL, видео ) по мере необходимости.

person jmk    schedule 17.10.2012