在开发板上有一个csi转dvp接口的摄像头,但是,目前还不会驱动,先使用usb摄像头来采集图像数据。
本小节使用ffmpeg和fswebcam实现拍照。
./ffmpeg -t 10 -f video4linux2 -s 176*144 -r 8 -i /dev/video0 -vcodec h263 -f rtp rtp://192.168.1.105:5060 > /tmp/ffmpeg.sdp
以上命令表示:采集10秒钟视频,对video4linux2视频设备进行采集,采集QCIF(176*144)的视频,每秒8帧,视频设备为/dev/video0,视频编码为H263,输出格式为RTP,后面定义了IP地址及端口,将该码流所对应的SDP文件重定向到/tmp/ffmpeg.sdp中,将此SDP文件上传到流媒体服务器就可以实现直播了。
2-1 获取源码:可以通过官网http://ffmpeg.org/进行源码的下载,也可以直接通过git获取:
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
2-2 交叉编译
./configure --cross-prefix=arm-linux-gnueabi- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabi-gcc --arch=arm --prefix=../output --enable-shared --disable-static --enable-ffmpeg --disable-armv5te --disable-yasm
make
make install
2-3 移动文件:
将…/output/bin下的命令拷贝到根文件系统的/usr/bin
将…/output/lib下的库拷贝到根文件系统的/usr/lib
ffmpeg -i /dev/video0 -vframes 1 -s 1920x1080 -q:v 2 -f image2 ./test1.jpg
但是发现拍照出来的很小,像素虽然达到了所设置的大小,但是其拍照质量不高,像是强制将640x480拉大至所设置的像素。
其实对于fswebcam,更多的使用是在树莓派上。
但是它也能对usb摄像头快速实现拍照功能。
其实在buildroot里面已经集成了fswebcam的包,对于使用100ask_T113的buildroot的同学可以按照以下操作实现usb拍照。
2-1 在buildroot目录下 make menuconfig
2-2 在英文状态下输入左斜杠进入搜索
2-3 然后输入 fswebcam ,回车
2-4 此时发现只有一项,且“Symbol: BR2_PACKAGE_FSWEBCAM [=n] ”
.意思是fswebcam没有启用,可以直接按 1
2-5 然后按空格键选中
2-6 然后按ESC键,直到
然后回车
然后
make V=1
编译完之后烧到内存卡
fswebcam -d /dev/video0 -S 10 --no-banner -r 1920x1080./test.jpg
即可实现拍照
但是如果像素比较高如500w,会栈溢出,然后重启设备,这时候可以考虑增加交换分区swap,可参考
https://blog.csdn.net/qq_30960647/article/details/123260670