Ubuntu 16.04, GTKMM, C++, H.264: покадровое видео показывается на виджете
У меня есть API для захвата видео с закрытым исходным кодом - с заголовками C - от стороннего производителя, который поддерживает определенное оборудование IP-камер. Я могу успешно выполнять вызовы этого API и получать результаты, такие как версия API, инициализация и т. Д. Не могу дать подробностей или подробностей, поскольку подписано соглашение о неразглашении. Официальной поддержки Linux нет, поэтому я хотел сделать свою собственную.
Я даже могу получать видеоданные H.264 с аппаратного обеспечения покадровым образом (в цикле, во втором потоке без графического интерфейса пользователя). API возвращает структуру с блоком данных кадра за вызов в том, что вызывает этот API YUYV422
формат.
Пока что мой код имеет main()
который владеет и открывает окно настроек, и когда настройки предоставляются, щелкнув OK
Кнопка закрывает окно, передавая эти параметры классу, который обращается к API. Это работает, цикл извлечения кадров работает, и видеоданные поступают с аппаратного обеспечения.
Следующий, main()
открывает второе окно (где видео должно появиться), но я не знаю, как следовать оттуда. В любом случае это, я думаю, изменится: мой связанный с API класс не может ничего коснуться во втором окне, поэтому я сделаю так, чтобы мой класс наследовал от GTK::Window
и разобраться с этим оттуда.
Что мне нужно, так это некоторые указания относительно того, как отображать эти YUYV422
кадры на поверхности виджета из потока, не относящегося к графическому интерфейсу, какой виджет лучше подходит для задачи, и нужен ли мне дополнительный инструментарий / библиотека, например, Clutter, или нет для жонглирования форматом (надеюсь, что нет),
Я просмотрел документы для GTK, Clutter и OpenCV, но либо они идут мне в голову, либо примеры не дают мне никаких подсказок относительно их удобства использования для моей цели. Кроме того, большинство связанных вопросов, похоже, касаются транскодирования, а не "как показать покадровое видео в окне".
Спасибо за любые указатели!