最近在做Android板上的USB摄像头录制视频的调试工作,在此记录一下开发历程和心得。
项目要求用USB摄像头录制视频,要求视频必须是720P+,25FPS+。
USB摄像头用的是海康威视摄像头,YUV只有10FPS,mjpeg可以达到30FPS。所以只能采用mjpeg方式。
开始找了网上开源的UVCCamera项目,先上连接 https://github.com/saki4510t/UVCCamera ,结果发现录制的视频帧率都达不到要求。
后面只能使用V4L2取摄像头的原始数据。参考这篇文章 安卓系统采用v4l2接口打开YUYV和MJPEG摄像头,支持热插拔。_alterli的博客-优快云博客
取到的摄像头原始数据是一张张JPEG图片,将JPG图片编码为MP4就简单很多。先将JPEG解码为BMP数据,然后用Android自带编码器MediaMuxer,选择数据源格式为COLOR_Format32bitBGRA8888。但是有个问题,获取源数据,然后解码bmp,再然后编码到MP4,这个效率就很低了。
一方面受到摄像头制约(YUV只有10FPS),另一方面受到安卓板子性能制约,如何录制高帧率的MP4视频,真的是很