最近要在开源的平板上做Linux的项目,需要用到视频流服务器,首选肯定是MJPG-Streamer,但是按照之前的调试记录发现有问题,总是报一个I2C的错误,错误信息如下所示:
MJPG-streamer [81]: starting application
MJPG Streamer Version.: 2.0
MJPG-streamer [81]: MJPG Streamer Version.: 2.0
i: Using V4L2 device.: /dev/video0
MJPG-streamer [81]: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
MJPG-streamer [81]: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
MJPG-streamer [81]: Frames Per Second.: 5
i: Format............: YUV
MJPG-streamer [81]: Format............: YUV
i: JPEG Quality......: 80
MJPG-streamer [81]: JPEG Quality......: 80
[ 37.075219] [i2c2] incomplete xfer (0x20)
[ 37.079274] [CSI_ERR][GC0308]sensor_write error!
[ 37.087464] [CSI_ERR][GC0308]sensor_write_err! reg_num = $? value = ?
[ 37.094063] [CSI]buffer_setup, buffer count=4, size=614400
Unable to map buffer: Invalid argument
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
MJPG-streamer [81]: init_VideoIn failed
实际上这里面包含两个错误,最后四行报的错误很明显,就是mmap的时候参数出错了。
Unable to map buffer: Invalid argument
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
MJPG-streamer [81]: init_VideoIn failed
在plugins/input_uvc/v4l2uvc.c源码的第200行static int init_v4l2(struct vdIn *vd)函数中找到mm