Как считывать видео поток в вебкамеры, используя только стандартные инструменты в unix?

Нужно считывать видеопоток с вебкамеры, без использования opencv. Используя только си и инструменты предоставляемые unix. Я нашел код, который собирает необходимую информацию об устройстве, но я не могу понять, как заставить работать веб камеру, чтоб она начала писать поток.

ВОт код

int main (int argc,char* argv[])
{

/*Read Params*/
char *device_name;
if(argc > 1)
{
  device_name = argv[1];
}
else
{
  device_name = "/dev/video0";
}

/*Open Device*/
int  file_device = open(device_name, O_RDWR, 0);

if (file_device == -1)
{
  printf ("%s error %d, %s\n",device_name, errno, strerror(errno));
  exit(EXIT_FAILURE);
}

/*Read Params From Device*/
struct v4l2_capability device_params;

if (ioctl(file_device, VIDIOC_QUERYCAP, &device_params) == -1)
{
  printf ("\"VIDIOC_QUERYCAP\" error %d, %s\n", errno, strerror(errno));
  exit(EXIT_FAILURE);
}

printf("driver : %s\n",device_params.driver);
printf("card : %s\n",device_params.card);
printf("bus_info : %s\n",device_params.bus_info);
printf("version : %d.%d.%d\n",
     ((device_params.version >> 16) & 0xFF),
     ((device_params.version >> 8) & 0xFF),
     (device_params.version & 0xFF));
printf("capabilities: 0x%08x\n", device_params.capabilities);
printf("device capabilities: 0x%08x\n", device_params.device_caps);

/* Close Device */
if (-1 == close (file_device))
{
  printf ("\"close\" error %d, %s\n", errno, strerror(errno));
  exit(EXIT_FAILURE);
}

file_device = -1;

return 0;
}

Ответы (0 шт):