APP下载

嵌入式Linux的海洋牧场视觉系统研究

2023-03-22芦照谢鑫刚龙顺宇

物联网技术 2023年3期
关键词:牧场嵌入式服务器

芦照,谢鑫刚,龙顺宇,杨 伟

(海南热带海洋学院 海洋信息工程学院,海南 三亚 572022)

0 引 言

随着嵌入式技术的发展,它逐渐被应用到更多领域,同时也融入传统海洋渔业助力其向智慧海洋牧场转型[1-3]。开展渔业资源的勘探以及海域环境的检测,可以为海洋牧场合理的功能分区提供有效依据[4]。海洋牧场的后期维护和管理,对其持续良好运作有着重要作用[5]。解决海洋牧场现存“看不见”的问题,能及时了解海洋牧场海洋环境,摸清海洋资源变动趋势,对海洋牧场生态情况进行预报预警,进而指导海洋牧场建设[6]。对海洋牧场内海洋环境的动态监测,有利于实现海洋生物的可持续、可再生利用[7]。

根据海洋牧场需求现状,本文提出了一种海洋牧场视觉系统,系统基于嵌入式Linux平台利用USB摄像头采集视频图像,视频数据通过ffmpeg推流到Nginx服务器,地面站拉流显示海洋牧场视频图像。用千兆网桥传输视频数据,保证了数据传输的稳定快速、低时延以及整个海洋牧场的可视化。

1 功能设计

海洋牧场视觉系统由三部分组成,分别为视频图像采集端、地面站、水上视觉云台。视频图像采集端由USB摄像头和嵌入式处理器构成,通过网桥连接广域网,视频传输数据经ffmpeg软编码后通过RTMP协议推流到Nginx服务器来实现。地面站部分主要是在地面站上实现视频图像的观看、保存和处理等,配置Nginx服务器上应用程序实现。水上视觉云台搭载交换机将不同视频采集节点接入网络,并通过蓄电池给视频采集端供电。视觉系统结构如图1所示。

图1 海洋牧场视觉系统框图

2 视频采集及传输

2.1 V4L2框架

V4L2框架方便用户的开发和接口的统一,用户只需调用这些接口开发一个公共的服务层,就可以让所有的多媒体框架共用同一套驱动程序,有效地节省了开发时间,提高了工作效率[8]。V4L2框架如图2所示。

图2 V4L2框架

2.2 传输协议

FLV容器格式具有封装播放简易、视频文件体积小巧等特点,适合用于在网络中进行数据传输,是流媒体数据传输封装格式的较好选择[9]。而HTTPFLV协议是将RTMP等负载数据信息搭载在HTTP协议上的码流传递协议,穿透防火墙能力较强。

2.3 ffmpeg推流

ffmpeg是一个免费的多媒体框架,提供了录制、转换以及流化视频的完整解决方案,包含了非常先进的音频/视频编解码库libavcodec,视频采集节点嵌入式平台上运行ffmpeg进行推流。ffmpeg推流流程如图3所示。

图3 あmpeg推流流程

将摄像头采集的JPEG格式图片数据经ffmpeg编码成H.264格式,经过复用容器格式变为FLV之后,通过HTTPFLV协议推流到Nginx流媒体服务器。

视频推流命令为:ffmpeg -f v4l2 -i /dev/video0 -vcodec libx264 -fflv rtmp://127.0.0.1/live/lu。

3 Nginx服务器端

Nginx是一款轻量级的Web服务器、反向代理服务器及电子邮件代理服务器,并在一个BSD-like协议下发行。其特点是占有内存少、并发能力强[10]。

3.1 移植Nginx到硬件平台

使用Buildroot,配置选择Nginx,直接编译生成映像文件。设置交叉编译工具链,下载第三方模块后在Buildroot目录选中Nginx并设置额外的参数,在“additional modules”中添加:$(TOPDIR)/dl/nginx/nginx-http-flv-module,最后执行make。Buildroot的dl/nginx目录下自动下载源码,并将编译结果保存在output/images目录下,最后烧写该目录下的boot.scr.uimg镜像文件到嵌入式平台的EMMC中。

3.2 Nginx流媒体服务器

配置/etc/nginx/nginx.conf 使数据图像保存在Nginx服务器,通过user root赋予服务器Nginx处理文件权限,并配置out_queue、out_cork、max_streams和timeout等图像存储数据区参数。在server类中的APP代码如下:

ffmpeg将数据流推送到Nginx流媒体服务器,单个视频采集点的海洋牧场实时图像存储在对应的视频保存路径。

4 地面站Web端及显示效果

lf v.js是HTML5 FLASH视频(FLV)播放器,使浏览器在不借助FLASH情况下播放FLV。 flv.js经过实际优化配置代码如下:

配置完成后,打开测试HTML文件,使能ffmpeg推流,Web端显示图像。

将实测摄像头数据编码复用之后推流到服务器的命令如下:

ffmpeg -f v4l2 -framerate 10 -i /dev/video0 -vcodec libx264-preset:v ultrafast -tune:v zerolatency -fflv rtmp://127.0.0.1/live/lu

打开配置好的Web端从服务器通过HTTPFLV协议拉流或运行播放器通过RTMP协议拉取网络串流,显示图像。

浅水层中,多个视频采集节点从不同角度显示人工珊瑚图像,最终显示效果如图4所示。

图4 显示效果

5 结 语

在嵌入式平台上使用ffmpeg、nginx-http- flv-module模块和 flv.js实现了无插件Web端和播放器拉取视频流播放海洋牧场视频采集节点监控视频,但是Web端视频暂停后点击继续播放会出现从暂停时的场景继续播放的情况;对于显示视频图像会产生延迟的问题,应采用软件断流重连等算法进行进一步优化。视觉云上平台留有接口,方便该视觉系统扩展视频采集结点及其他功能。该视觉系统对海洋牧场的维护及管理有一定的积极作用。

猜你喜欢

牧场嵌入式服务器
海上牧场
通信控制服务器(CCS)维护终端的设计与实现
搭建基于Qt的嵌入式开发平台
中国服务器市场份额出炉
嵌入式软PLC在电镀生产流程控制系统中的应用
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
叮当牧场
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器