如何判断USB摄相头支持的视频流格式的代码如下:详细的内容请参考src/uUsbCamera.cpp文件
- struct v4l2_fmtdesc fmtdesc; //获取摄像头
- memset(&fmtdesc, 0, sizeof(fmtdesc));
- struct v4l2_format fmt; //设置获取视频的格式
- memset(&fmt, 0, sizeof(fmt));
- fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; //视频数据流类型,永远都是V4L2_BUF_TYPE_VIDEO_CAPTURE
- // fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_MJPEG; //视频源的格式为JPEG或YUN4:2:2或RGB
- fmt.fmt.pix.width = m_iWidth; //设置视频宽度
- fmt.fmt.pix.height = m_iHeight; //设置视频高度
- fmtdesc.index = 0;
- fmtdesc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
- if (-1 == ioctl(m_iFd, VIDIOC_ENUM_FMT, &fmtdesc))
- return false;
- printf("VIDIOC_ENUM_FMT(%s, VIDEO_CAPTURE)\n",fmtdesc.description);
- if (strcmp((const char*) fmtdesc.description, "MJPEG") == 0) //视频源的格式为JPEG或YUN4:2:2或RGB
- {
- fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_MJPEG; //视频源的格式为MJPEG
- pixelformat = V4L2_PIX_FMT_MJPEG;
- }
- else if (strcmp((const char*) fmtdesc.description, "JPEG") == 0)
- {
- fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_MJPEG; //视频源的格式为MJPEG
- pixelformat = V4L2_PIX_FMT_MJPEG;
- }
- else if (strcmp((const char*) fmtdesc.description, "YUV 4:2:2 (YUYV)") == 0)
- {
- fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV; //视频源的格式为YUYV
- pixelformat = V4L2_PIX_FMT_YUYV;
- }
- else
- {
- fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420; //视频源的格式为JPEG或YUN4:2:2或RGB
- pixelformat = V4L2_PIX_FMT_YUV420;
- }
- if (ioctl(m_iFd, VIDIOC_S_FMT, &fmt) < 0) //使配置生效
- {
- printf("set format failed\n");
- return false;
- }
更多对该源码的问题回答请参考:关于最新的AV摄像头和usb摄像头源码的使用
6410AV摄相头源码请参考:TQCamera源码在TQ6410上支持saa7113开发的问题
需要注意的内容:
1、源码的TQCamera.pro工程中最后一行引用的库名不对,原为libInputMethod.so,请修改为libTQInputMethod.so,或将源码目录中libTQInputMethod.so修改为libInputMethod.so
2、拿到源码后请直接使用qmake ,make两步,不要使用qmake -project,因为qmake -project会重新生成工程文件,新的工程文件中没有添加输入法的支持,要用户自己添加。如果您使用了qmake -project,需要修改生成的.pro文件,在该文件的最后一行添加:LIBS += -L. \
-lInputMethod
或
LIBS += -L. \
-lTQInputMethod
3、请将libInputMethod.so (如果您改名了,即libTQInputMethod.so 拷贝到文件系统的/opt/PDA/lib/目录下。
附件:下载后把后面的rar改为bz2。 |