基于Linux的视频传输系统(上大学时参加的一个大赛的论文)

本文介绍了一个基于Linux的视频传输系统,利用USB摄像头采集视频,通过Video4Linux驱动,Xvid编码,RTP协议进行实时传输。系统在局域网环境下具有低延迟、图像清晰的特点,支持最多5个并发连接。硬件平台采用GENE-8310,视频采集采用LINUX自带的驱动,编码采用Xvid,传输协议为RTP,确保了实时性和可靠性。
摘要由CSDN通过智能技术生成

目录

1原创性声明----------------------------------------------------3

2 摘要----------------------------------------------------------4

3系统方案------------------------------------------------------4

3.1功能与指标----------------------------------------------4

3.2方案选择与论证------------------------------------------4

系统组成框图--------------------------------------------4

硬件平台介绍------------------------------------------------------------------4

视频采集方案的选择---------------------------------------------------------4

视频编码方案的选择---------------------------------------------------------5

视频传输方案的选择---------------------------------------------------------6

显示方案选择------------------------------------------------------------------6

3.4系统软件实现--------------------------------------------6

3.4.1 服务器--------------------------------------------6

1)视频采集模块-------------------------------------6

2)视频压缩模块------------------------------------10

3)网络传输发送模块---------------------------------13

3.4.2 客户端--------------------------------------------19

1)网络传输接收模块--------------------------------19

2)视频解码模块------------------------------------19

3)视频显示模块------------------------------------22

四 系统测试----------------------------------------------------25

附录:源代码

参考书目

 

 

 

 

 

 

 

 

 

2006年英特尔杯大学生电子设计竞赛嵌入式系统专题邀请赛

 

参赛作品原创性声明

 

本人郑重声明:所呈交的参赛作品报告,是本人和队友独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果,不侵犯任何第三方的知识产权或其他权利。本人完全意识到本声明的法律结果由本人承担。

 

 

 

 

 

 

                                                        参赛队员签名:

 

                                                             

日期:          

 

 

 

2 摘要

本系统在LINUX平台下实现了视频的采集、压缩、传输及组播,图象清晰,实时性较好。本设计采用USB摄像头结合LINUX下自带的驱动模块VIDEO4LINUX实现视频采集。在XVID视频编解码平台下实现视频的压缩和解压。视频传输采用专门为流媒体传输设计的RTP协议,达到了较高的实时性。

ABSTRACT 

On the basis of Linux platform, this system realizes the videodata's collection, compression and network transmission. The videodata's collection is realized through USB camera and Video4Linux. The videodata's coding and decoding is realized under the Xvid platform. And the network transmission is realized by Rtp protocal which is designed for streammedia. All of these make hign real-time performance.

关键词:视频  RTP   XVID   SDL

3 系统方案

3.1实现功能与指标

本系统可用于足球赛场向场内或场外观众提供更逼真的更精彩的比赛画面,使场内观众可以零距离的观看射门等精彩画面。用户可用笔记本电脑由局域网连接服务器,运行客户端软件即可欣赏近距离的比赛画面。服务器由USB摄像头采集数字视频信息,经过MPEG4视频编码,然后通过JRTP网络传输协议向连接到服务器的客户端传输视频信息,实现视频的实时组播。采集到的YUV图像大约为100KB压缩后每帧图像大小平均为5KB在局域网环境下延迟小于0.5秒,视频清晰无失真。鉴于服务器的主频限制,组播最大连接数为5,可同时向5个用户提供视频信息。

3.2方案选择与论证

系统组成框图:

USB摄像头

基于GENE8310的服务器

 

10

 

网络

 

远程登录主机

 

硬件平台介绍

GENE-8310AAEON提供的第三代无风扇解决方案,在低功耗情况下可以获取更高的性能表现,主要表现在:卓越性能与可控的功耗,多种显示模式,可扩展性,GENE8310主频为 500M 可以做视频采集处理与传输的服务器。

视频采集方案的选择:

LINUX有自带的摄像头驱动模块Video4Linux. Video4Linux为针对视频设备的应用程序编程提供一系列的接口函数,对于USB摄像头,其驱动程序中需要提供基本的I/O操作接口函数 open close的实现 以及内存影射功能和对I/O操作的控制接口函数ioctl等。LINUX下视频采集如下所示

视频应用程序

Video4Linux

设备驱动程序

视频采集设备

视频编解码方案的选择

Xvid作为第二代MPEG-4编码具有多方面的优点,XVIDDIVX开发小组因不满DIVX被封闭而在其基础上开发的源码开放的视频编码解码平台。对于第二代的MPEG4视频编码内核来说。XVID的各种特点都有代表性和先进意义。1.它支持多种编码模式:除了最原始的单重估定码流压缩(1-pass CBR)之外,XVID提供了包括:单重质量模式动态码流压缩单重量化(Quantization)模式动态码流压缩、和包括外部控制和内部控制的两种双重(2-pass)动态码流压缩模式。2.在量化方式上Xvid不仅提供了标准的MPEG量化方式,还特地提供了更适合低码流压缩的.h 263量化方式。3.除了量化方式迭择,Xvid还提供了强大的对压缩过程中的量化幅度的范围控制。用户可以选定压缩时允许使用的量化幅度范围。例如设定一个量化的上限,就可以避免可能出现的画质大幅下降的情况。4.在运动侦测(Motion Search)和曲线平衡分配(Curve)方面,XVID对画面帧进行运动侦测以及对全片段的运动侦测结果进行分析后,重新以曲线平衡分配每一帧的量化幅度,以做到:需要高码流的运动画面可以分配更多空间、更高的码流、更低的量化幅度来保持画面的细节;而对于不包含太多运动信息的静态画面,则消减分配预算。这种把好钢用在刀刃上的做法,是Xvid作为第二代MPEG-4编码的核心内容。5.Xvid提供了多极运动侦测精度,包括半像素插值的技术以16x16像素的微区块为单元标示上运动矢量:以及4分运动矢量(inter4v motionvectors)的方式,以8x8的像素区块为单元更细致的纪录运动向量以供二重分析。6.动态关键帧距是另一个Xvid所具有的,在空间和画面之间获得最大平衡的技术。我们知道在视频压缩中不是每一帧都记录着全部的画面信息,事实上只有关键帧记录着完整的画面信息,而后续的P(P-Frame)仅仅是纪录下与之前一帧的差值。如果关键帧之间的画面变化很大,则会浪费宝贵的空间在P-Frame;而加入把变化很大的那一帧记录在关键帧里,那么由于后续的帧不再有更大的变化,就可以节省P帧所需的空间。因此,根据画面镜头切换和运动幅度来变换关键帧的位置,对于视频压缩下的画面质量提高,就有着事半功倍的效果。

鉴于XVID以上种种优点,我们采用XVID实现视频的编解码。

视频传输方案的选择

视频传输可以选择TCPUDPTCP是一个面向连接协议,传输信息前需要建立连接,系统资源开销大,但可靠性较高。UDP是一个无连接协议,传输数据之前源端和终端不需要建立连接,资源开销小,实时性较高。

实时传输协议(Real-time Transport ProtocolRTP)是在Internet上处理多媒体数据流的一种网络协议,利用它能够在一对一(Unicast,单播)或者一对多(Multicast,多播)的网络环境中实现传流媒体数据的实时传输。RTP通常使用UDP来进行多媒体数据的传输,具有UDP传输的优点。

鉴于可靠性考虑,在本系统中,信息传输之前服务器和客户端用TCP建立连接。然后服务器通过RTP向客户端发送视频信息,这样就达到了可靠性和实时性的平衡。

显示方案选择

SDLSimple DirectMedia Layer)是一个跨平台的多媒体游戏支持库。其中包含了对图形、声音、线程等等的支持,目前可以运行在许多平台上,其中包括 X WindowX Window with DGALinux FrameBuffer 控制台等等。

因为 SDL 专门为游戏和多媒体应用而设计开发,所以它对图形的支持非常优秀,尤其是高级图形能力,比如 Alpha 混和、透明处理、YUV 覆盖、Gamma 校正等等。而且在 SDL 环境中能够非常方便地加载支持 OpenGL Mesa 库,从而提供对二维和三维图形的支持。

本系统客户端接受到的视频解压后为YUV格式,考虑到SDLYUV覆盖方面的优势,我们选择SDL实现视频信息接收接压后的显示。

 

3.3系统软件实现

 

3.3.1 服务器

服务器实现了采集数据然后压缩后进行实时传输,用了三个线程分别实现了视频的采集压缩(线程1),通过TCP协议建立连接(线程2),压缩后视频流的传输(线程3)。服务器应用程序运行后,服务器即创建线程1进行视频采集,线程2处于阻塞状态。一旦有客户端建立连接,则线程2获得客户端IP信息。以此IP信息为参数建立线程3,线程3通过JRTP协议向客户端传递视频流。此后客户端继续处于阻塞状态,直到有新的客户端连接。服务器端的重要的模块包括视频采集模块,视频压缩模块,和网络传输发送模块。

1)视频采集模块

Linux内核公开支持的OV511等摄像头芯片,但由于较陈旧在市面不容易找到。我们选用LOGITECHQUICKCAM  COOL摄像头并从网上下载摄像头驱动程序qc-usb- 0.6.3 .tar.gz然后进行解压、编译、安装。

假定已经搭建好嵌入式Linux的开发环境,下面第一步工作就是USB

评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值