Linux小项目-行车记录仪项目设计

1. 前言 行车记录这个设备相信大家应该都不陌生,它的功能主要是记录车辆行驶途中的影像及声音。
安装行车记录仪后,能够记录汽车行驶全过程的视频图像和声音,可为交通事故提供证据,喜欢自驾游的人,还可以用它来记录征服艰难险阻的过程。开车时边走边录像,同时把时间、速度、所在位置都记录在录像里,相当黑匣子。现在横穿马路的行车、摩托车,不交通规则形势的汽车也经常遇到,万一和他们产生了刮碰,有可能会被敲诈勒索,如果有了行车记录仪,司机可为自己提供有效的证据。
这篇文章就介绍在linux最小系统开发板上如何实现行车记录仪的功能,开发板自带了8g的emmc,也可以外扩sd卡。
首先,在设计行车记录仪这个项目之前,要先了解清楚行车记录仪的功能。
(1)行车记录运行起来后,需要间隔循环录制视频保存,一般是1~10分钟一段视频,这样设计的原理是方便按时间查找视频,也防止以为情况损坏视频编码, 导致视频无法正常播放。
(2)当车辆发生碰撞、急刹车等紧急情况下,自动录制视频当前时间段视频保存,方便后续直接查看。这个功能需要加速度计的支持,检测车辆的紧急刹车,碰撞等姿态。
当前项目里摄像头采用usb免驱摄像头替代,视频编码功能采用ffmpeg实现,所以需要交叉编译ffmpeg到嵌入式开发板上。
2. ffmpeg的交叉编译 ffmpeg下载地址: www.ffmpeg.org/download.ht…
 [root@xl ffmpeg]# tar xvf ffmpeg-3.0.2.tar.bz2  ​ [root@xl ffmpeg]# ./configure --disable-shared --enable-static --prefix=_install --cross-prefix=/work/arm-linux-gcc/opt/friendlyarm/toolschain/4.5.1/bin/arm-linux- --arch=arm --target-os=linux --enable-gpl --disable-bzlib --disable-zlib --extra-cflags=-i/work/ffmpeg/x264/x264-snapshot-20160527-2245/_install/include/ --extra-ldflags=-l/work/ffmpeg/x264/x264-snapshot-20160527-2245/_install/lib --enable-ffserver --enable-ffmpeg --enable-libx264 ​ [root@xl ffmpeg-3.0.2]# make && make install复制代码 编译ffmpeg还需要x264的库,编译ffmpeg前,需要先编译x264库。
x264库下载地址: www.videolan.org/developers/…
编译的步骤如下:
 [root@xl x264]# tar -xjvf last_x264.tar.bz2  ​ [root@xl x264-snapshot-20160527-2245]# ./configure --prefix=$pwd/_install --disable-asm ​ 修改配置文件 [root@xl x264-snapshot-20160527-2245]# gedit config.mak  ​ sys_arch=x86改为arch=arm cc=gcc改为cc=arm-linux-gcc ld=gcc -o改为ld=arm-linux-gcc -o ranlib=ranlib改为ranlib=arm-linux-ranlib ar=ar rc 改为ar=arm-linux-ar rc  ​ 取消两个选项 cflags=-wshadow -o3 -ffast-math -m32  -wall -i. -i$(srcpath) -std=gnu99 -d_gnu_source -mpreferred-stack-boundary=5 -fomit-frame-pointer -fno-tree-vectorize 改为 cflags=-wshadow -o3 -ffast-math -wall -i. -i$(srcpath) -std=gnu99 -d_gnu_source -fomit-frame-pointer -fno-tree-vectorize ​ ​ [root@xl x264-snapshot-20160527-2245]# make && make install复制代码 3. 项目代码 下面的代码较多,直接将整份代码放在一个.c文件里,关于功能的解释在代码里都写了注释。
涉及到的技术有:ffmpeg的编码录制、声卡pcm数据采集,usb摄像头数据采集。
声卡的采集采用了alsa框架接口,usb摄像头使用的是v4l2框架接口。
下面代码实现的功能是10秒录制一段视频保存,视频文件名称使用时间命名,只是贴出了应用层的代码,加速度计mma766的驱动代码在上几篇文章里已经讲过了,这里就不再重复贴出来了。
具体实现的代码如下:


带隔离膜压力变送器的工作原理及设计
一文分析2020年存储器的行业现状
相比其他系统的内核设计Linux是否已经过时?
用于SS-OCT的14位数字化仪ADQ14OCT
digilentAnalog Discovery配件包简介
Linux小项目-行车记录仪项目设计
串口转HID键盘鼠标芯片沁恒CH9329特点与引脚图
物联网在煤炭行业的应用分析
JBLXUASPORTWIRELESSFLEX无线颈挂式运动耳机评测 为运动人士带来更为持久的激情输出
基于物联网技术的能耗监测系统全面解析
小米平板3详细评测:游戏流畅、观感细腻
阻燃电缆和耐火电缆有那些区别
阻容降压什么吗 阻容降压原理分析
为什么终端电阻的阻值恰好是120欧姆呢?
突破性的技术革新 VR Unibloc研发出低延迟无线视频传输技术
区块链助物联网突破四大发展障碍
realme真我X50 5G亮相 全系标配120Hz畅速屏
贾跃亭造车梦波折不断,法拉第FF恐无法完成融资
氮化镓充电器的发展前景_氮化镓充电器概念股
盘点直线电机那些罕为人知的应用