せっかくなので、USB の UVC カメラで Motion JPEG を取得したことのメモ
linux で UVC カメラで画像を取得する場合は、video4linux2 を使います
カメラの画像を取得する場合、YUYV では取得画像の縦横のサイズから
読むべきサイズがわかります
しかし、Motion JPEG の場合は、動的にサイズが変わるのでわかりません
何バイト読み込めばいいのか?
struct v4l2_buffer の bytesused のバイト数を読み込めばいいのです
struct v4l2_buffer buf; memset(buf, '\0', sizeof(buf)); buf.type = V4L2_BUF_type_VIDEO_CAPture; buf.memory = V4L2_MEMORY_MMAP; ioctl(fd, VIDIOC_DQBUF, &buf); fp = fopen("hoge.jpg", "wp"); fwrite(buffers[buf.index].start , buf.bytesused, 1, fp); fclose(fp);
buf.bytesused に Motion Jpeg のサイズが書き込まれますので、
fwrite で書き込みましょう
もちろん、buffers は mmap とヒモ付てありますよ
参考は Video4Linux2 の APIを参考にしてます