本文完全参考韦东山老师的视频监控项目实战,我使用的imx6ull开发板
默认大家都有资料,我整理一下过程
1.配置工具链
输入命令
vim ~/.bashrc
在行尾添加
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/ToolChain-6.2.1/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin
执行命令
source ~/.bashrc
验证是否安装成功
echo $ARCH
echo $CROSS_COMPILE
arm-linux-gnueabihf-gcc -v
如果都出现正确路径则设置成功
2.编译MJPG-streamer
在提供的Ubuntu虚拟机中,下载好SDK源码,进入
cd 100ask_imx6ull-sdk/Buildroot_2019.02/
执行
make menuconfig
在target application 中找到mjpg-streamer中选上,然后执行make命令,
最终会在output中输出emmc.img镜像,将其烧录到板子中即可
3.mjgp-streamer的使用
在接上USB摄像头后,可以进入dev里面查看是否成功接入USB摄像头设备
运行命令:
mjpg_streamer -i "/usr/lib/mjpg-streamer/input_uvc.so -d /dev/video1 -f 30 -q 90 -n" -o "/usr/lib/mjpg-streamer/output_http.so -w /usr/share/mjpg-streamer/www"
就可以使用mjpg-streamer打开摄像头获取图像,并发送到浏览器上去
在chrome浏览器中打开:http://192.168.1.6:8080/stream.html
其中的IP地址要改成自己开发板的地址,不然是看不到的,使用ifconfig命令可以查看板子的IP地址。
目前是在局域网里面进行传输的,不能在公网上看。
4.程序结构分析
程序一共有3个线程是一直默认运行的,然后每当浏览器建立一个连接时,也就是打开一个网页,就会建立一个client_thread线程,这个线程是可以多个创建的
然后整个图片都是通过global_buffer来传递的