Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Displaying WebCam video with Qt

I'm using Qt 4.5 (2009.03) on Linux Gnome (Ubuntu 9.04) and would like to display video captured by my webcam in a Phonon::VideoWidget of my Qt application.

I have a first implementation using the v4l2 API where I do the YUV2 to RGB conversion and fill a QImage my self. It works well but it is not very efficient. A collegue used gStreamer to do the same thing and it was much much faster.

Since then I found out about phonon and would like to use it. Everything is configured and set up except for the binding to the webcam device as source.

I should create a MediaSource object but I don't know how to configure it. Any help would be greatly valuable.

Edit: The Phonon overview explains that it is not supported yet. But I need a solution.

like image 965
chmike Avatar asked Sep 04 '09 11:09

chmike


2 Answers

I know its little bit late for this question. but I was looking for the same thing and could not find pure qt solution. Here is my solution https://sourceforge.net/p/qtv4lcapture/code/HEAD/tree/

like image 159
ozkanpakdil Avatar answered Sep 25 '22 15:09

ozkanpakdil


If your goal is to display the YUV image on the screen you can use the OpenGL module. Implement the conversion as a fragment shader. If you want to do something else like save the converted image to a file then it is not a good idea.

Some links:

  • 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 (the conversion is in the FProgram string)
like image 37
stribika Avatar answered Sep 22 '22 15:09

stribika