基于ARM9平台的网络可视电话设计

目 录

第一章 绪论 1
1.1课题研究的背景及意义 1
1.2国内外研究现状 2
1.3项目开发平台简介 2
1.3.1嵌入式系统与ARM微处理器 2
1.3.2嵌入式Linux 3
1.3.3Qt图形库 3
1.4论文主要研究内容 4
第二章 系统总体设计 5
2.1系统设计的要求 5
2.2系统的硬件设计 5
2.2.1Mini2440开发板介绍 5
2.3 系统软件设计 7
第三章 嵌入式Linux系统移植以及开发环境的搭建 9
3.1Linux操作系统 9
3.1.1为何要使用Linux操作系统 9
3.1.2Linux操作系统内核 9
3.1.3Linux操作系统文件管理 10
3.2 系统开发环境的搭建 11
3.2.1交叉开发环境搭建 12
3.3Linux系统的移植 12
第四章 视频图像的采集、压缩和显示模块实现 14
4.1系统视频图像的采集和编码 14
4.1.1Video4Linux2介绍 14
4.1.2RGB颜色编码和摄像头介绍 15
4.1.3视频图像的编码 17
4.1.4图像采集的实现 17
4.2图像数据网络传输的实现 23
4.2.1TCP/UDP协议介绍 23
4.2.2socket套接字编程 24
4.3视频图像的显示 26
4.3.1Linux帧缓冲设备介绍 26
4.3.2图片数据的接收和显示 27
第五章 音频的采集、传输和回放 30
5.1音频模块的设计 30
5.2音频录制、传输和回放的实现 31
第六章 系统测试和分析 35
6.1系统模块单元测试 35
6.1.1系统界面模块测试 35
6.1.2系统图像模块测试 35
6.1.3系统音频模块测试 37
6.2系统整合测试 37
第七章 总结与展望 38
7.1全文总结 38
7.2展望 38
参考文献 39
致 谢 41
小论文 42
1.4论文主要研究内容
本文基于嵌入式系统,设计和实现了网络视频电话系统。并对图像和音频的压缩以及音视频的网络传输做了一定的研究。给出了基于ARM9硬件平台的网络视频电话系统解决方案的设计流程。最后通过测试给出系统的测试结果,针对测试结果提出不足和今后的改进方向。
本文工作主要包括:
(1)针对本系统有选择的介绍ARM微处理器和Linux操作系统;
(2)研究视频图像的采集和压缩以及音频采集办法;
(3)研究视频、音频数据的网络传输的方法;
(4)提出一种基于ARM9硬件平台和Linux操作系统的网络可视电话系统解决方案。利用Linux的多线程技术,优化系统硬件资源管理,提高系统的并发工作效率,提高系统的数据吞吐量和反应速度;
(5)测试实现了PC机与ARM开发板以及ARM的开发板之间的通信,模拟了可视电话的通信过程。系统能够实时完成音视频数据的采集、编码、网络传输、音视频解码和播放。
第二章 系统总体设计
2.1系统设计的要求
本设计的网络可视电话系统初步要求能实现两个ARM9平台的终端设备之间通过网络可以进行视频通话。并且在后期可以拓展多媒体播放设备、视频回放、网络监控摄像头等许多功能。
因此对系统进行分析有以下几点基本要求:
(1)支持TCP/IP等网络协议,实现网络通信;
(2)具有摄像头、麦克风可以采集图像和音频;
(3)具有显示屏、可以播放视频图像;
(4)具有喇叭或者其他音频输出设备进行音频的播放;
(5)具有图形操作界面,可以对系统参数进行调整;
(6)系统可以同时处理视频图像捕捉编解码、音频录制编解码的任务。
2.2系统的硬件设计
2.2.1Mini2440开发板介绍
通过系统的需求分析可知本系统所需的硬件设备需求,并绘制出图2-1系统基本硬件逻辑结构。经过研究和对比本设计最终将采用友善之臂公司的Mini2440开发板作为系统的开发平台。本文转载自http://www.biyezuopin.vip/onews.asp?id=14682通过图2-2 Mini2440开发板硬件逻辑结构图与图2-1系统基本硬件逻辑结构图对比可以得出Mini2440开发板可以满足本系统的硬件需求。

QImage camImage;
VideoRecvThread::VideoRecvThread()
{
    //绑定接收端口号
    udpSocket.bind(5835);
    //设置信号关联
 	connect(&udpSocket, SIGNAL(readyRead()),this, SLOT(processPending		Datagrams()));
}
//保存数据并显示图片函数
void VideoRecvThread::processPendingDatagrams()
{
    static int i = 1;
    int ret;
	QHostAddress p("192.168.2.109");
	quint16 senderPort=5836;
    //建立用于保存图片数据的字节数组dataQByteArray 
    dataQByteArray gram;
    //设置字节数组大小
    datagram.resize(udpSocket.pendingDatagramSize());
    //接受数据包
    ret=udpSocket.readDatagram(datagram.data(),datagram.size());
    //使用QImage对象读取数据
    camImage.loadFromData(datagram);
    //发送显示信号,调用图片显示相关函数
     showImage(); 
}
图片显示信号发出后系统会自动调用下列函数将图片显示到屏幕指定位置。
void VideoPhonePlayer::showImage() 
{
	//使用QLabel对象显示QImage视频图像
	videoLabel->setPixmap(QPixmap::fromImage(videoRecv.camImage)); 
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/127133425
今日推荐