|
源码是这个:http://bbs.embedsky.net/forum.ph ... =%C9%E3%CF%E0%CD%B7
路径是文件系统中的路径
usb摄相头的判断在文件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;
- }
复制代码 |
|