Python实现树莓派摄像头持续录像并传送到主机实现树莓派摄像头持续录像并传送到主机
关于树莓派,想必从事嵌入式开发的开发者都有听过,树莓派原名为Raspberry Pi,也就是它的英文读法,树莓派诞生于英国,
由“Raspberry Pi 基金会”这个慈善组织注册开发。埃•厄普顿就是该项目的头目。在2012年的3月,英国剑桥大学埃本•阿普顿
(Eben Epton)正式发售世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能,这就
是Raspberry Pi电脑板,中文译名”树莓派”!
树莓派作为一个轻便迷你的小终端很受大众的喜爱!!!
树莓派的特点树莓派的特点
与常见的51单片机和STM32等这类的嵌入式微控制器相比,不仅可以完成相同的IO引脚控制之外,还能运行有相应的操作系
统,可以完成更复杂的任务管理与调度,能够支持更上层应用的开发,为了开发者提供了更广阔的应用空间。比如开发语言的
选择不仅仅只限于C语言,连接底层硬件与上层应用,可以实现物联网的云控制和云管理,也可以忽略树莓派的IO控制,使用
树莓派搭建小型的网络服务器,做一些小型的测试开发和服务。
与一般的PC计算机平台相比,树莓派可以提供的IO引脚,能够直接控制其他底层硬件的功能,这是一般PC计算机做不到的,
当然,树莓派体积小,成本低,照常可以完成一些PC任务与应用。
树莓派自带的摄像头拍摄夜空是有先例的,起码可以做到延时摄影。对于实时拍摄没有研究,但是仍然有必要测试。
树莓派自带的摄像头是500万像素,价格在26-29欧元(人民币200+左右)
实时还是事后采集记录结果?实时还是事后采集记录结果?
树莓派上的摄像机,是使用一个raspivid命令操作的。 抛开这个命令的其他参数,其输出数据有输出数据有2种方式种方式:
将数据保存成文件,储存在SD卡上,以便事后读取;
将数据按照字节流的形式,直接输出到STDOUT标准输出中,可以实时获取。
选择哪种方式,首先要考虑我们能否具有足够的采集数据的能力。
raspivid命令可以调节相机模块的输出比特率。输出是以H264编码输出的,比特率一般默认是17Mbps,但是这个数字可以调
小。 如果按照17Mbps算,就是一秒钟2.12兆字节。 我们记录数据或者获取数据的速度不能低于这个值,否则长时间录像可能
造成树莓派的缓存充满,导致树莓派崩溃。
树莓派的网卡是使用了其USB总线,传送速度是100Mb/s或者12.5MB/s。 实际上后文的实验表明,目前能达到的传送速度只
有3MB/s((TCP)) 或者 6MB/s((UDP))。
如果使用SD卡存储,这个记录速度也是可以达到的,但是,SD卡有写入寿命,这是要考虑的。 例如,对于32GB的卡,即使
我们能利用全部存储空间,以2MB/s的速度录像,也只能记录4.55小时。
如何通过网络实时传送数据?如何通过网络实时传送数据?
raspivid命令的-o选项,就是用来指定输出文件的。 在Linux系统中,输出到文件并不等于写入到磁盘(这里是SD卡)。 我们仍
然可能使用RAMDisk这种技术,让输出只是暂时存储在内存中,并稍后读取,然后删除之。 但是,树莓派的可用内存可能只有
280MB,这最多只能记录差不多2分钟的视频。
如果我们有文件形式的摄像记录,那么就似乎可以使用文件传输的协议,例如sftp, scp等等登录到树莓派下载文件了。 然而这
是不对的。这些协议在传输中使用了加密。
树莓派在向我们的电脑进行数据传送的时候,如果用这些协议,就必须先对发送的数据进行加密。 在互联网上,加密是很好
的设计。但是在树莓派和电脑之间只用一根网线连接的时候,就不是了。 树莓派的运算能力是很有限的,使用加密只会让传
送速度变慢,所以,不要使用加密!
评论0