Отображение видео с веб-камеры с помощью Qt
Я использую Qt 4.5 (2009.03) в Linux Gnome (Ubuntu 9.04) и хотел бы отображать видео, снятое моей веб-камерой, в Phonon::VideoWidget моего приложения Qt.
У меня есть первая реализация, использующая API v4l2, где я делаю преобразование YUV2 в RGB и заполняю QImage самостоятельно. Это работает хорошо, но это не очень эффективно. Коллеги использовали gStreamer, чтобы сделать то же самое, и это было намного быстрее.
С тех пор я узнал о фононе и хотел бы им воспользоваться. Все настроено и настроено, кроме привязки к устройству веб-камеры в качестве источника.
Я должен создать объект MediaSource, но я не знаю, как его настроить. Любая помощь будет очень ценной.
Изменить: Обзор Phonon объясняет, что он еще не поддерживается. Но мне нужно решение.
3 ответа
Я знаю, что это немного поздно для этого вопроса. но я искал то же самое и не мог найти чистого решения QT. Я обнаружил, что http://qt-apps.org/content/show.php/Qt+Opencv+webcam+viewer?content=89995 это зависит от opencv, который я не знаю и не хочу изучать.
и вот мое решение http://qt-apps.org/content/show.php/V4lCapture?content=126541
одна вещь, которую нужно проделать, - это все равно работает.
Если ваша цель - отобразить изображение YUV на экране, вы можете использовать модуль OpenGL. Реализуйте преобразование как фрагментный шейдер. Если вы хотите сделать что-то еще, например сохранить преобразованное изображение в файл, это не очень хорошая идея.
Некоторые ссылки:
- http://doc.qt.digia.com/4.6/qglshaderprogram.html
- http://doc.qt.digia.com/4.6/qglshader.html
- http://www.fourcc.org/source/YUV420P-OpenGL-GLSLang.c (преобразование выполняется в строке FProgram)
Может быть, вы можете посмотреть, как был реализован Kapture.