荔枝派Zero(全志V3S)驱动开发之USB摄像头 2

简介: 荔枝派Zero(全志V3S)驱动开发之USB摄像头

四、mjpeg-streamer 视频流服务器测试

1、jpeg 库的移植

这里可以参考我前面的博客 荔枝派Zero(全志V3S)驱动开发之RGB LCD屏幕显示jpg图片,只看第一步即可,这里面有讲述到具体的步骤,就不再重复描述了。


在指定的目录下会生成包括 bin、include、lib、share,标红的这两个文件夹是 mjpg_streamer 需要的。

2、移植 mjpeg-streamer

①、前置软件

sudo apt-get update
sudo apt-get install g++ libjpeg8-dev imagemagick libv4l-dev cmake git

②、下载 mjpg-streamer 源码

<1>、点击此处:MJPG-streamer

<2>、点击 Code,如下图所示:

<3>、进去后,点右上的 “Download Snapshot” 下载最新版的 mjpg-streamer-code-182,因为旧版编译时会出现缺少一个头文件的错误

目录 mjpg-streamer-code-182 里内容如下:

doc/ 、mjpg-streamer/、udp_client/、mjpeg-client/、mjpg-streamer-experimental/、uvc-streamer/

  • mjpg-streamer:目录下提供了的执行程序和各个输入输出设备组件,支持输入有 control、file、gspcav(早期摄像头)、testpicture、uvc(现在主流摄像头),正式发布的版本。我们采用这个版本。
  • mjpg-streamer-experimental:目录下提供实验性版本的组件,支持输入有 control、file、http、ptp2、testpicture、uvc(现在主流摄像头)。对 yuv 的摄像头兼容性不行。若要兼容 yuv 摄像头,需要需改较多的地方。
  • uvc-streamer:目录下提供了 uvc-streamer 的可执行目录。
  • udp_client:udp 输出的客户端。
  • mjpeg-client:分别有 linux 和 windows 的客户端。

③、修改 mjpg-streamer 源码

cd mjpg-streamer-code-r182/mjpg-streamer
vim ./plugins/input_uvc/Makefile

0b2cdd6acede4f64b15472074990bffb.png

 14#CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
 15 CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I /home/Gnep/licheepi_zero/tools/include

d5167f32ca7c44e1b353b32ff6c7afae.png

 34#$(CC) $(CFLAGS) -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo $(LFLAGS)
 35     $(CC) $(CFLAGS) -L /home/Gnep/licheepi_zero/tools/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo $(LFLAGS)

④、编译 mjpg-streamer 源码

make CC=arm-linux-gnueabihf-gcc

编译生成 *.so 文件和可执行文件 mjpg_streamer

3、搬移文件到 nfs 目录

将前面编译生成文件,还有 start.sh 、/www/ 搬移到 nfs 根目录中

sudo mount -t nfs 192.168.25.25:/nfsroot /mnt -o nolock # 挂载 nfs
sudo mkdir /mnt/mjpg-streamer
sudo cp -rf *.so /mnt/mjpg-streamer/
sudo cp -rf mjpg_streamer /mnt/mjpg-streamer/
sudo cp -rf start.sh www/ /mnt/mjpg-streamer/
sudo mkdir /mnt/mjpg-streamer/lib
sudo cp -rf ../../tools/lib/* /mnt/mjpg-streamer/lib/

挂载 nfs 效果:

把前面编译生成文件,还有 start.sh ./www/ 搬移到 nfs 根目录中

此时 nfs 中 mjpg-streamer 目录下存在这些文件:

4、开发板测试

①、挂载 nfs

mount -t nfs 192.168.25.25:/nfsroot /mnt -o nolock

②、把 nfs 目录下的 mjpg-streamer/ 拷贝到当前目录(/root 目录下)

cp -rf /mnt/mjpg-streamer/ ./
ls

③、设置环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/mjpg-streamer/lib

④、开启 web 服务器

./mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 320x240 -f 30 -yuv" -o "out
put_http.so -w /root/mjpg-streamer/www"

注:

-i 输入协议选择,这里是 uvc 摄像头

-o 输出选择,这里是输出为 http 协议

-f 帧率的设置,这里是1秒30帧

-d 输入设备的选择,这里是摄像头0

-w 这里是 web

-y 表示输入格式为 YUV,如果不加 -y 表示 mjpg 输入

-r 表示图片尺寸640x480

input_uvc.so:UVC输入组件

output_http.so:网页输出组件

⑤、浏览器地址栏输入 单板ip:端口号 可以看到摄像头捕捉的图片

192.168.25.20:8080

上面的页面是刷新一次网页才会更新一次,我们可以在网页地址栏输入http://192.168.25.20:8080/?action=stream 这样就可以实时更新显示视频了

目录
相关文章
|
存储 缓存 编解码
AVFormatContext封装层:理论与实战(一)
AVFormatContext封装层:理论与实战(一)
199 1
|
4月前
|
监控 网络协议 Java
Netty基础—1.网络编程基础一
本文详细介绍了网络通信的基础知识,涵盖OSI七层模型、TCP/IP协议族及其实现细节。首先解释了OSI模型各层功能,如物理层负责数据通路建立与传输,数据链路层提供无差错传输等。接着探讨了TCP/IP协议,包括TCP和UDP的特点、三次握手与四次挥手过程,以及如何通过确认应答和序列号确保数据可靠性。还分析了HTTP请求的传输流程和报文结构,并讨论了短连接与长连接概念。 此外,解析了Linux下的IO模型,包括阻塞IO、非阻塞IO、IO复用(select/poll/epoll)、信号驱动IO和异步IO的特点与区别,强调了epoll在高并发场景下的优势及其水平触发和边缘触发两种工作模式。
|
6月前
|
消息中间件 人工智能 数据可视化
文生图架构设计原来如此简单之用户界面架构
节点式界面是文生图工具中一种强大而灵活的设计范式,以 ComfyUI 为代表。这种设计将复杂的图像生成过程分解为可视化的模块化组件,使用户能够精确控制生成流程的每个环节。
198 2
|
调度
MNN createSession 之 Schedule(三)
MNN createSession 之 Schedule(三)
133 5
Qt安装之后添加或移除组件(Qt Creator 10.0.1)
Qt安装之后添加或移除组件(Qt Creator 10.0.1)
1074 2
|
Ubuntu Linux
荔枝派Zero(全志V3S)驱动开发之USB摄像头 1
荔枝派Zero(全志V3S)驱动开发之USB摄像头
391 0
|
Linux
gpio_direction_output 和 gpio_set_value之间的关系
gpio_direction_output 和 gpio_set_value之间的关系
879 0
|
Ubuntu Linux Windows
荔枝派Zero(全志V3S)制作 IMG 镜像文件
之前在玩板子时每次烧录镜像都是先烧录 uboot 到 SD 卡 8k 偏移处,再拷贝 zImage 镜像文件和 sun8i-v3s-licheepi-zero-dock.dtb 设备树文件到 sd 卡的 kernel 分区,再把 rootfs.tar 解压到 SD 卡的 rootfs 分区,总的来说感觉有些麻烦,因此本文将制作一个 img 镜像文件可以在 windows 下直接用 Win32DiskImager 一键烧录,或者在 linux 下直接使用 dd 烧录。
502 0
|
并行计算 TensorFlow 算法框架/工具
Linux Ubuntu配置CPU与GPU版本tensorflow库的方法
Linux Ubuntu配置CPU与GPU版本tensorflow库的方法
331 1
为什么用了代理ip访问网站还是被限制了
为什么用了代理ip访问网站还是被限制了
592 0