Linux4.19(RV1126)
RKmedia:瑞芯微官方提供的音视频编解码工具
分辨率:1080*1920 32位色深
一帧画面:1080*1920*32/8 大概8M
视频是由一帧一帧的画面组成的
1s = 24帧 24*8 = 192M
120分钟的视频:1.3T
安全帽那个项目分主要分三个部分,一个设备端,还有一个,老板端,一个那个服务端。
我是主要负责这个设备端啊,这一块儿。
主要是做了这个设备端这个。板子的这个系统的移植,用的是那个厂商提供的这个SDK,去进行对内核儿进行去采集。
然后这个我在设备端做了这个,主要做了这个音视频的这个采集编码跟那个上传,然后还做了一些那个。啊通报警,跌落报警啊,这个4G模块儿的4G驱动的一致。
那视频是怎么做的,然后你把那个函数给他讲一讲。
vi:视频输入
venc:视频编码
rtsp:实时传输
实现的功能:采集画面,编码,推流
通过RTSP传输出去---》推流
在电脑上边使用VLC软件进行拉流,获取实时画面。
采集摄像头画面,进行H.264编码,进行本地保存
rkmedia_vi_venc_rtsp_test.c
采集摄像头画面,进行H.264编码
通过RTSP传输出去---》推流
在电脑上边使用VLC软件进行拉流,获取实时画面。
采集画面保存本地—》完整的使用流程:
- 初始化系统
- 设置VI通道属性
- 使能VI通道
- 创建VENC通道
- 设置回调函数
- 获取数据
- 写入文件
- 释放空间
- 记录帧数—》做退出机制
- 绑定VI和VENC
- 解除绑定
- 销毁VENC通道
- 关闭VI通道
ffmpeg是音视频记录,转换和编解码工具
开源的,跨平台的
脱帽报警:单片机+限位开关
跌落报警/静默报警:单片机+陀螺仪
音视频传输:RV1126+摄像头+网络+rkmedia+本地保存+推流
就说这个音视频,我是用的这个瑞芯微提供了这个rkmedia的库,然后先是那个初始化rkmedia,,然后初始化那个VI(视频捕获),然后在使能VI通道,然后创建并初始化那个venc(编码)通道,然后。然后就是绑定VI跟venc,然后然后再注册那个回调函数。然后注册清理函数,然后使用完之后解除绑定,销毁Venc通道。
然后然后就说它那个音频的采集AI就跟这个VI的差不多,就是把就是也是注册初始化AI绑定AI中的。启动VI通道,注册a enc,绑定A1A3AI不AI,然后也是注册那个清理函数这样。
然后GPGPS定位怎么做,这块儿我就说是另一个工人做的,然后我说我的那个4G模块儿,就自带那个GPS定位,然后我我通过那个4G模块儿的配置,然后采集到,采集到那个。数据那个4G模块儿提供的是一个经纬度的数据,然后采集到之后,直接把它上传到服务端,然后另另一位同事,然后就是根据解析这个数据去做GPS定位。注意,执行上述 AT 命令需要使用串口通信来与 4G 模块进行数据交互,需要将 GPS 模块的输出设置为 NMEA 格式,也就是将 GPS 模块的输出格式设置为“�����”或“GPRMC”或“GPGGA”。此外,在使用 AT 命令前,还需要确保 SIM 卡已经注册并连接到网络,可通过发送 AT+COPS?
命令来查询当前网络连接状态。
有问那个脱帽报警是怎么实现的啊,我说它是里面有一个压力传感器,在你这个戴上,戴上帽子之后啊,你打开这个安全帽开关之后,就它就会那个在你脱帽的时候。检测到压力的,压力栓剂,检测到那个压力数值的变化啊,就会那个,报警。
跌落报警的话,是有里面有那个陀螺仪,然后你说,采集的数据,然后根据那个手册,就我说的根据手册比较出这个采集的数据,出现那个超出那个规定的安全值。然后就上报异常,同时那个终端设备,终端也会那个有一个封印器进行报警。
也有问是这个你怎么通信的,然后我说我我们的通信协议是那个自定的,是模仿那个MQTT进行那个一个通信协议,自定的一个通信协议。
报警,我说的就是那个设备终端有一个蜂鸣器会那个报警,然后同时它会把这个异常那个情况上传到那个服务端,你说这你说功能器报警也可以。
那个,嗯,脱帽报警的话,你没必要上传那个采集到的信息,你可以直接订订一个红,订一订一个红的效益类型,效益类型就可以了,别人说就是。你视频消息是一一,音频消息是二啊,你可以定一个三,就是那个托管报警的那个消息,当那个你平时是不往上,不往服务器传这个消息了。你只有在检测到脱帽的时候,你才会在那个设备端往服务器发送消息类型为三的那个消息,然后服务端检测到收到消息类型为三的话,就知道这是那个脱网报警消息了,会在那个。老板端进行提醒。
器就是把这条这个转发到老板端,然后老板端就是收到消息三的,就类型为三的消息,就那个提醒了。
这个消息就是消息类型,有一个里面应该还得有这个设备编号儿吧,设备编号儿,设备信息之类的。
只说这两个会不会太少了,而且那个丢了报警跟东方报警基本上也差不多,那个音频跟视频也差不多,你可以把这这就分两种,这两种情况基本都差不多。四就是四条儿,你可以说这。
视频的话,你不做编码的话,就是应该是没有办法上传的,它那个原数据特别大
提的是YV的数据就行了,说采集的YV320数据变化之后,变成H264,然后上传到云端,然后云端然后就打开。
摄像头采集画面—》H264视频压缩—》保存在文件里边
摄像头采集画面—》H264视频压缩—》发送到服务器
我还说了,我就是啊,我在设备端这边儿,把音视频编码成那H264,然后在老板的那边儿,用那个ffmmpeg做了视频的解码了,把H264转,再转成那个YV420。
SDK
是 Software Development Kit(软件开发工具包)的缩写,是一组用于开发特定软件或应用程序的工具、库文件、文档和示例代码的集合。SDK 为开发者提供了一种简化和加速软件开发过程的方式,使他们能够更轻松地构建基于某个平台、框架或技术的应用程序。
SDK 包含了一系列的开发工具和资源,常见的内容包括:
-
API 文档:描述了SDK 提供的各种函数、类、接口和数据结构的使用方法和参数说明,方便开发者理解和使用。
-
示例代码:提供了一些完整的、可运行的代码示例,展示了如何使用 SDK 的基本功能和实现特定功能的示例。
-
开发工具:通常包括编译器、调试器、集成开发环境(IDE)等,用于编写、编译、调试和部署应用程序。
-
库文件:SDK 提供的预编译库文件,包含了一些常用的函数和模块,可以直接链接到应用程序中使用。
-
辅助工具:如模拟器、调试工具等,用于测试和调试应用程序。
SDK 涵盖了不同层面的开发需求,例如:
-
平台 SDK:针对特定操作系统、硬件平台或设备的开发工具包,如Android SDK、iOS SDK、Windows SDK等。
-
框架 SDK:针对某个框架或库的开发工具包,如TensorFlow SDK、OpenCV SDK、Unity SDK等。
-
云服务 SDK:针对某个云服务提供商的开发工具包,如AWS SDK、Azure SDK、Alibaba Cloud SDK等。
通过使用 SDK,开发者可以快速入门、简化开发流程、提高开发效率,并且能够更好地利用平台或框架提供的功能和特性,从而实现更好的软件开发体验。