位置: 编程技术 - 正文

基于嵌入式linux 3G下的无压缩视频传输(基于嵌入式linux的课程设计)

编辑:rootadmin
这是我本科的毕业设计。时隔5个月,再次回顾一下。 本课题研究嵌入式系统在数据采集,3G无线通信方面的应用,开发集视频采集、地理信息采集、无线传输、客户机/服务器模式于一体的车载终端,实现终端采集视频与GPS信息的传输,支持服务器端显示视频与GPS信息的功能。 这里我着重介绍本项目中的视频传输。由于知识水平的缺乏和实验条件的限制,本人并没有采取视频压缩算法。但针对数据量大而且3G网络相对有线网络带宽限制的情况采取了措施。 硬件环境:友善之臂mini实验板(ARM9)。 操作系统:linux(终端)、windows7(服务器)。 网络环境:WCDMA(联通3G上网卡)。 Mini实验板上有CMOS摄像头接口。同时厂家提供的linux源代码中有摄像头驱动,编译进内核即可使用摄像头。摄像头采用的是OV,万像素,在linux下作为字符串设备驱动,可通过读取设备文件,获得图像信息。 读取摄像头数据的代码如下: 复制代码代码如下: int camdata_count; int cam_fd=open("/dev/camera",O_RDONLY); printf("Camera init!n"); while(1){ camdata_count=read(cam_fd,cam_data,**2); if(camdata_count==**2){ /*视频数据处理与传输的代码*/ } else{ printf("CAMERA Error!n"); } } close(cam_fd); 从摄像头中读取的数据格式是RGB的,如图所示。即红色分量占6位,绿色分量占6位,蓝色分量占5位,总共是位。 为了作为bmp文件显示,需要将RGB转换为RGB(即位真彩色)。再在文件开头加上bmp文件头,就成为一个完整的bmp文件了。用UDP协议传输这些图像数据。在服务器端,用.NET的库可以将接收到的BMP数据在图形界面的指定组件上显示。 .NET显示图像的代码如下: 复制代码代码如下: // st是一个已经建立的MemoryStream对象,bmp_data是bmp数据(byte数组),bmpSize是BMP图像大小(单位是B)。 st.Write(bmp_data, 0, bmpSize); try { picBox.Image = Image.FromStream(st);//picBox是已经建立的PictureBox对象,呈现在图形界面上 } catch (Exception e) { richTextBox2.Text += "errorn";//如果BMP数据错误,则输出如下错误 } //st对象清空 st.SetLength(0); st.Position = 0; st.Flush(); 流程图如下: 以上方案在有线网络传输的情况下能顺利运行,但是在3G网络下图像几乎不能显示。这是因为3G网络的带宽限制和UDP协议不可靠的缺点,数据在传输过程中会产生丢包现象,影响图片质量。对此需要改善程序代码,增加一些措施来避免丢包: (1) 将数据转化的工作交给服务器。 BMP文件基本不经过任何压缩,每个像素点占用3个字节(R、G、B分量分别占用一个字节),而从CMOS摄像头读取的数据是RGB的,即一个像素点只占用2个字节。如果说从CMOS读取的图像信息不经真彩化处理,直接传输给服务器,这样,需要传输的数据量减少了大约1/3。 (2) 减少图像的尺寸。 从CMOS摄像头读取的图像尺寸是*的。如果打包成BMP数据的话,总共大小是**3+(B),大约KB。如果说不经真彩化处理,一帧数据总共大小是**2(B),大约KB。正常情况下,一秒可以采集6-7帧图像。联通WCDMA理论的上行速率是5.Mbps,约为KB/s,实际情况一定低于此值。在此情况下,一秒基本上只能传输一帧图像。所以减小图片尺寸很必要。可以考虑将图片的长宽都减小为原来的1/6,再在服务器端进行真彩化处理和打包,放大为*的尺寸显示。这样,一帧RGB的图像的大小约为**2(B),约为KB。这样就足够传输相应的数据了。 (3) 分包传输。 UDP协议仅负责传输,不保证对方可靠接收,没有拥塞控制。因此,在WCDMA这种相对来说较差的网络环境下,会造成大量数据包的丢失。实验证明,当一次传输数据量达到KB(一帧的数据大小)时,丢包率在%以上,这会严重影响图片质量。当一次传输数据量在1-2KB时,丢包率可以降低到一定值,并保证一定的传输效率。 (4) 每次数据传输之间给与一定延时。 如果将一帧图片分为每个1-2KB数据包来传输,大约要传输-次。在每次传输之间,如果不引入一定量的延时,同样会造成很大量的数据包丢失。而延时的时间也是需要把握好的,一般延时-ns比较合适。在传输每帧图片之间,也需要给与一定的延时,此时延时时间过大的话,会造成每秒传输帧数过少,图片流畅率下降,一般传输每帧图片之间给予ms的延时。 修改后的程序代码: 复制代码代码如下: count=read(fd,cam_data,WIDTH*HEIGHT*2);//缩小图片大小,data_buf为原图像数据,cam_data为缩小后的图像数据,两者都为字符数组类型 if(count==WIDTH*HEIGHT*2){ shrink(data_buf,cam_data,WIDTH,HEIGHT); for(i=0;i<;i++){ //用UDP分包传输图像数据 sendto(sockfd,data_buf+(i*),,0,(struct sockaddr *)&addr,len); usleep();//给与一定的延时 } printf("One picture sended!n");//一帧传输完毕 usleep(); } else{ printf("Errorn"); } 以上措施可以减少UDP传输视频数据的丢包率,但是,不管怎样,UDP传输数据的丢包现象普遍存在,或多或少会有一些。在3G网速较差的地区,丢包率甚至还是会达到%。视频数据从摄像头读取后存放在一个无符号字符串数组里,本来是按顺序分割数据进行传输,由于读取的图像数据对应的像素点分布是从左到右、从上到下排布的,如果丢包,会造成接收到的图像的部分图像条无法及时更新,影响肉眼观察图像的质量。下面两张图对比了网络状况较好和较差情况下的显示效果。 上图是网络状况良好情况下的显示效果,可以看出,显示比较流畅,图像质量较好。下图是网络状况较差情况下的显示效果,可以看出,动态图像的某些图像条未及时更新,这是由于决定该图像条的显示的数据包在传输过程中丢包。 为了降低丢包带来的这种损失,可以考虑将每帧图像分成多个位平面并按一定顺序传输,每个位平面代表所有像素的同一位组成的二值图像。如下图所示,是每个位平面传输的顺序(从0开始计数)。 实验证明,每一帧分包传输后,靠前面的数据包丢包率比较小,而每个颜色分量的最高位对图片色彩质量的影响最大,位数越低,对图像色彩质量的影响越小。所以即便后面的位平面数据没有接收到,对图片色彩质量的影响也不会很大。将RGB每种颜色分量的位数按照从最高到最低的顺序进行传输,每种颜色分量对应的位平面穿插进行传输,于是就采用了上图所示的顺序。由于RGB格式的数据每个像素共位,一帧图片总共需要分个位平面数据包传输。为了服务器能够正确进行图片数据的组装,在传输之前,将每个位平面数据包的最前面加上该包传输顺序的值,如下图所示。 终端部分代码如下: 复制代码代码如下: shrink(data_buf,cam_data,WIDTH,HEIGHT);//缩小图片大小,data_buf为原图像数据,cam_data为缩小后的图像数据,两者都为字符数组类型 for(i=0;i<;i++) { bzero(cut_buf,); cut_buf[0]=(uchar)i;//将要传输的数据首个字节设为顺序号 for(j=0;j<;j++) { //每个像素按位分位平面数据包 cut_buf[j/8+1]|=(uchar)(((uchar)(data_buf[j]>>bit_index(i))&0x)<<(j%8)); } sendto(sockfd,cut_buf,,0,(struct sockaddr *)&cam_addr,sockaddr_len);//发送数据 usleep();//传输每个数据包之间的延时 } printf("One picture sended!n");//传输每帧图像之间的延时 usleep(); 在服务器端,用如下函数进行数据的重组,同时进行真彩化处理(C#.NET语言): 复制代码代码如下: private void picDataCopy(byte[] bBuf,byte[] bData) //bBuf为接收到的数据,bData是重组后的数据存放的数组 { int index=bBuf[0]; for (int i = 0; i < ;i++ )//循环次,逐位进行数据的重组 { if(index<){ bData[3*i + 2 - (index%3)] |= (byte)(((bBuf[i/8 + 1] >> (i%8)) & 0x) << (7 - index/3)); } else if(index==){ bData[3*i+1]|= (byte)(((bBuf[i/8 + 1] >> (i%8)) & 0x) << 2); } } } 如上图所示,是在改变传输方案后,即采用按位平面传输的方法传输后的显示效果图,在网络良好的情况下,可以正常显示。在网络状况较差的情况下,图像颜色质量会下降,而且会不稳定地变化。但是部分图像条不显示的情况就不再出现。 总结:此方案重在联系,实际工程中肯定不会采取此方案,还是有必要学习视频压缩算法及其在linux上的移植。

推荐整理分享基于嵌入式linux 3G下的无压缩视频传输(基于嵌入式linux的课程设计),希望有所帮助,仅作参考,欢迎阅读内容。

基于嵌入式linux 3G下的无压缩视频传输(基于嵌入式linux的课程设计)

文章相关热门搜索词:基于嵌入式linux电子相册设计,基于嵌入式linux电子相册设计,基于嵌入式linux应用案例,基于嵌入式linux plc,基于嵌入式linux的音乐播放器,基于嵌入式linux的音乐播放器,基于嵌入式linux电子相册设计,基于嵌入式linux 的班级聊天群设计与实现,内容如对您有帮助,希望把文章链接给更多的朋友!

linux配置上网 linux adsl拨号上网设置 Linux里面配置ADSL上网是件很麻烦的事。但配置完成之后就能开机自动拨号上网,可谓十分的方便。支持的系统有Redhat,CentOS,SuSE,FreeBSD,Ubuntu等常见的Linux。

linux ftp服务器架设配置教程 Tftp服务器-安装使用RPM包安装tftp-server1、如果利用如下命令能够看到服务已启动,则不用安装[arm@localhost]#netstat-a|greptftp已安装结果:udp*:tftp*:*2、如果没

linux下vim 语法高亮显示方法 高亮标签*tag-highlight*如果你想高亮文件里的所有标签,可以使用如下映射。F--生成tags.vim文件,并高亮标签。F--只根据已有的tags.vim文件高亮标签。:ma

标签: 基于嵌入式linux的课程设计

本文链接地址:https://www.jiuchutong.com/biancheng/363174.html 转载请保留说明!

上一篇:linux 硬链接和软链接深入理解(linux中软链接和硬链接的区别)

下一篇:linux系统快速查看进程pid的方法(linux怎么查看)

  • 免抵退税办法不得抵扣的进项税额的会计处理
  • 城市维护建设税怎么做分录
  • 个人生产经营所得税
  • 偶然所得纳税计算
  • 外币账户单位基本情况表
  • 合并报表营业收入怎么算出来的
  • 合并报表无形资产摊销时间
  • 收购别人的公司要具备什么条件
  • 银行承兑汇票手续费是多少
  • 企业多缴纳所得税怎么办
  • 公司出差员工有权拒绝吗
  • 耕地占用税完税证明有什么用
  • 增值税进项和销项税的计算方法
  • 废旧物资销售如何征税
  • 银行承兑贴息率是年利率吗
  • 劳务工资要附什么合同
  • 收到打款认证会计分录
  • 非公益性赠送该怎么进行会计处理?
  • 工会经费缴纳是当期
  • mac菜单栏怎么调出来
  • 四种存款账户的定义
  • 土地使用税从价和从租计算有区别吗
  • 增值税发票认证操作流程
  • 现金日记账和银行存款日记账登记
  • linux mint 20.1安装
  • 营改增后工程税收怎么计算
  • 不动产税费
  • 潜亏挂账是什么意思
  • 发票管理的基础环节
  • 在职职工医疗保障计划互助金多久发一次
  • 易北河流量
  • 在建工程账务处理管理制度
  • 出租经营的开发产品应视为企业的
  • 微信小程序自定义函数
  • 招待费专票可以抵扣进项吗
  • 免税是政府补助吗
  • 工程收到款项会计分录
  • 润滑脂开票属于成品油吗
  • 经营租入固定资产
  • 发票查真伪是什么意思
  • 打造出ChatGPT的,是怎样一群人?
  • spring boot整合hibernate
  • 境外公司委托境内公司付款
  • 损益类所得税费用
  • 结转成本费用
  • php判断是否为整数
  • 通过SQLServer 2008 操作 MySQL的方法
  • 往来会计和应收应付有什么区别
  • 小规模纳税人开专票可以抵扣进项吗
  • 汇算清缴补税的凭证后面需要附件吗
  • 流动性比率怎么算
  • 购买债券的交易费计入什么科目
  • 社保税款所属期申报错了要紧吗?
  • 支付宝账户收到美元怎么转换成人民币
  • 发票红冲后原票是什么状态
  • 本地发生住宿费怎么办
  • 免税蔬菜税额用什么表示
  • 投资回报怎么写
  • 简述工作底稿的一般要求及内容
  • 租赁房屋期间发生事故谁负责
  • sql 查询效率
  • freebsd9.3安装教程
  • windows media player播放不了mp4
  • centos怎么查看服务器配置
  • dotnetfx35有什么用
  • macbookzen
  • linux用户账户管理
  • hpg是什么文件
  • 卡带测评
  • 用unity做2d游戏
  • 炉石传说架是什么意思
  • jquery操作表单
  • Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
  • jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
  • 广西税务怎么交城乡养老保险
  • 杭州汽车摇号中签率多少
  • 天津地税自助办税终端
  • 黑龙江国税电子税务局官网登录
  • 2021河南税务政策
  • 依法行政的观念
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设