免费智能真题库 > 历年试卷 > 多媒体应用设计师 > 2014年上半年 多媒体应用设计师 下午试卷 案例
  第4题      
  知识点:   Flash   TCP   流媒体   视频   HTTP协议   USB   编码   监控   浏览器

 
【说明】
某公司决定开发一套适用于家庭用户的远程视频监控系统。系统的服务器端构建在嵌入式计算机系统上,并利用支持UVC标准的USB摄像头捕获现场视频。该摄像头还直接支持JPEG图像编码。为了将监控视频发送到客户端,该公司的研发团队实验了两套方案。
方案一是利用开源MJPEG-streamer流媒体服务器将视频以M-JPEG编码方式通过HTTP协议传送到客户端。MJPEG-streamer服务器内部己经实现了HTTP协议,因此客户端可以采用流行的Web浏览器观看监控视频
方案二是利用开源crtmpserver流媒体服务器和ffmpeg音视频编码库,将视频以H.264编码方式并通过RTMP协议传送到客户端。
M-JPEG (Motion Joint Photographic Experts Group)是一种基于JPEG 静态图像压缩编码发展起来的动态图像压缩技术,可以生成序列化的运动图像,其主要特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩。
RTMP (Real Time Messaging Protocol)是基于TCP且专门用来传输Flash视频数据的流媒体协议,最初由Macromedia公司创建,是一种私有协议。
 
问题:4.1   简述流媒体的概念。
 
问题:4.2   该公司的研发团队在100Mbps局域网内单客户端条件下对比两套方案,发现在相同的摄像参数配置下,采用方案一时客户端看到的视频往往更流畅,效果更好。试分析原因。
 
问题:4.3   在传输带宽受限的广域网环境下应该采用哪种方案?请说明原因。
 
问题:4.4   采用方案二时,如果想让客户端也能利用普通的Web浏览器设置监控参数、观看监控视频,那么:
①客户端必须安装什么软件?
②嵌入式服务器端需要增加什么软件?
 
 
 

   知识点讲解    
   · Flash    · TCP    · 流媒体    · 视频    · HTTP协议    · USB    · 编码    · 监控    · 浏览器
 
       Flash
        Flash是Macromedia公司推出的一款设计与制作动画的专业软件。Flash的前身是FutureSplash,1996年11月被正式卖给Macromedia,更名为Flash 1.0。经过Macromedia近十年的经营,推出了十个版本,Flash已经发展为一款风靡Internet的二维动画设计与制作软件,取代了GIF等动画的地位,成为这一领域的霸主。2005年,Adobe公司耗资34亿美元并购了Macromedia,从此Flash冠上了Adobe的头衔,陆续推出了Adobe Flash CS3、Adobe Flash CS4版本,开始了新的征程。
        Flash具有友好的操作界面,易学易用。Flash支持SWF、AVI、EXE等多种动画格式输出,适用于在线、离线观看动画,或将动画嵌入其他程序中播放。Flash生成的文件体积小,易于网络传输。Flash采用矢量图形和流式播放技术生成动画,生成的动画文件体积小,图像不易失真,可自由缩放,可自动调整图像尺寸,文件大小不会改变,适应于网络流式传输。Flash功能强大,使得设计者可以随心所欲地设计出高品质的动画,通过ActionScript脚本语言可以实现交互,使Flash具有更高的设计自由度。
 
       TCP
        TCP是面向连接的通信协议,通过三次握手建立连接,通信完成时要拆除连接,由于TCP是面向连接的,所以只能用于端到端的通信。
        TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口,实际表示接收能力,用以限制发送方的发送速度。
        如果IP数据包中有已经封装好的TCP数据包,那么IP将把它们向“上”传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路之间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包则可以被重传。
        TCP将它的信息发送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层、设备驱动程序和物理介质,最后传送到接收方。
        面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
 
       流媒体
        在网络上传输音/视频等多媒体信息,目前主要有两种方案:一是下载,由于受网络带宽的限制,下载常常需要花费数分钟甚至数小时,这种处理方法的延迟很大;二是流式传输,在这种方式下,用户不必等到整个文件全部下载完毕,而是只需经过几秒钟或数十秒钟的启动延时即可进行观看,因此成为当前多媒体信息传输的主流。
        流媒体是指以流的传输方式在网络中传输音频、视频和多媒体文件的形式。流式传输方式是将视频和音频等多媒体文件经过特殊的压缩方式分成一个个压缩包,由服务器向用户计算机连续、实时地传送。这个过程中的一系列相关的包称为“流”。流媒体实际指一种新的媒体传送方式,而非一种新的媒体。流媒体技术的应用十分广泛,比如,人们在网上聊天可以直接语音输入;如果想彼此看见对方的容貌、表情,只要双方各有一个摄像头就可以了;在网上看到感兴趣的商品,点击商品以后,讲解员和商品的影像就会跳出来;更有真实感的影像新闻也会出现。
        目前主流的流媒体技术有三种,分别是Real Networks公司的Real System、微软公司的Windows Media Technology和Apple公司的Quick Time。这三家公司的技术都有自己的专利算法、专利文件格式甚至专利传输控制协议。
 
       视频
        视频是动态的画面序列,这些画面以超过每秒24帧的速度播放,便可以使观察者产生平滑、连续的视觉效果。视频类似于我们熟知的电影和电视,有声有色。电影采用了每秒24幅画面的播放速度,电视采用了每秒25幅或30幅画面的播放速度。视频图像可来自于录像带、影碟、电视、摄像机等,这些模拟视频信号可通过视频采集卡转换成数字视频信号,以便计算机进行处理和存储。
 
       HTTP协议
        要将网页传输到本地浏览器中,这就需要依靠HTTP协议。HTTP协议(Hyper Text Transfer Protocol,超文本传输协议)是Web服务器与客户浏览器之间的信息传输协议,用于从WWW服务器传输超文本到本地浏览器,属于TCP/IP模型应用层协议。
 
       USB
        通用串行总线(Universal Serial Bus,USB)是由Intel、Compaq、Digital、IBM、Microsoft、NEC、Northern Telecom等7家世界著名的计算机和通信公司在1994年共同推出的一种新型接口标准。它基于通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展PC连接外设范围的目的。它可以为外设提供电源,而不像普通的使用串、并口的设备需要单独的供电系统。另外,快速是USB技术的突出特点之一,USB 2.0的理论最大传输速率可达480Mb/s。USB还能支持多媒体,但是不能通过USB进行计算机的互连。从1994年11月11日发表了USB V0.7版本以后,USB版本经历了多年的发展,到现在已经发展为3.0版本。
        USB为所有的USB外设提供了单一的易于使用的标准的连接类型。这样一来就简化了USB外设的设计,同时也简化了用户在判断哪个插头对应哪个插槽时的任务,实现了单一的数据通用接口。
        整个USB的系统只有一个端口和一个中断节省了系统资源。
        USB支持热插拔和PNP(Plug-and-Play),也就是说在不关闭PC的情况下可以安全的插上和断开USB设备。计算机系统动态地检测外设的插拔,并且动态地加载驱动程序。其他普通的外围连接标准,如SCSI设备等必须在关掉主机的情况下才能插拔外围设备。
        USB在设备供电方面可以通过USB电缆供电;也可以通过电池或者其他的电力设备来供电;或使用两种供电方式的组合,并且支持节约能源的挂机和唤醒模式。
        为了适应各种不同类型外围设备的要求,USB提供了四种不同的数据传输类型:控制传输、数据传输、中断数据传输和同步数据传输。同步数据传输可为音频和视频等实时设备的实时数据传输提供固定带宽。
        USB提供全速12Mb/s的速率和低速1.5Mb/s的速率来适应各种不同类型的外设,USB 2.0还支持480Mb/s的高速传输速率。
        USB的端口具有很灵活的扩展性,一个USB端口串接上一个USB Hub就可以扩展为多个USB端口。
 
       编码
               编码过程
               在给定了软件设计规格说明书后,下一步的工作就是编写代码。一般来说,编码工作可以分为四个步骤:
               (1)确定源程序的标准格式,制订编程规范。
               (2)准备编程环境,包括软硬件平台的选择,包括操作系统、编程语言、集成开发环境等。
               (3)编写代码。
               (4)进行代码审查,以提高编码质量。为提高审查的效率,在代码审查前需要准备一份检查清单,并设定此次审查须找到的bug数量。在审查时,要检查软件规格说明书与编码内容是否一致;代码对硬件和操作系统资源的访问是否正确;中断控制模块是否正确等。
               编码准则
               在嵌入式系统中,由于资源有限,且实时性和可靠性要求较高,因此,在开发嵌入式软件时,要注意对执行时间、存储空间和开发/维护时间这三种资源的使用进行优化。也就是说,代码的执行速度要越快越好,系统占用的存储空间要越小越好,软件开发和维护的时间要越少越好。
               具体来说,在编写代码时,需要做到以下几点:
               .保持函数短小精悍。一个函数应该只实现一个功能,如果函数的代码过于复杂,将多个功能混杂在一起,就很难具备可靠性和可维护性。另外,要限制函数的长度,一般来说,一个函数的长度最好不要超过100行。
               .封装代码。将数据以及对其进行操作的代码封装在一个实体中,其他代码不能直接访问这些数据。例如,全局变量必须在使用该变量的函数或模块内定义。对代码进行封装的结果就是消除了代码之间的依赖性,提高了对象的内聚性,使封装后的代码对其他行为的依赖性较小。
               .消除冗余代码。例如,将一个变量赋给它自己,初始化或设置一个变量后却从不使用它,等等。研究表明,即使是无害的冗余也往往和程序的缺陷高度关联。
               .减少实时代码。实时代码不但容易出错、编写成本较高,而且调试成本可能更高。如果可能,最好将对执行时间要求严格的代码转移到一个单独的任务或者程序段中。
               .编写优雅流畅的代码。
               .遵守代码编写标准并借助检查工具。用自动检验工具寻找缺陷比人工调试便宜,而且能捕捉到通过传统测试检查不到的各种问题。
               编码技术
                      编程规范
                      在嵌入式软件开发过程中,遵守编程规范,养成良好的编程习惯,这是非常重要的,将直接影响到所编写代码的质量。
                      编程规范主要涉及的三方面内容:
                      .命名规则。从编译器的角度,一个合法的变量名由字母、数字和下画线三种字符组成,且第一个字符必须为字母或下画线。但是从程序员的角度,一个好的名字不仅要合法,还要载有足够的信息,做到“见名知意”,并且在语意清晰、不含歧义的前提下,尽可能地简短。
                      .编码格式。在程序布局时,要使用缩进规则,例如变量的定义和可执行语句要缩进一级,当函数的参数过长时,也要缩进。另外,括弧的使用要整齐配对,要善于使用空格和空行来美化代码。例如,在二元运算符与其运算对象之间,要留有空格;在变量定义和代码之间要留有空行;在不同功能的代码段之间也要用空行隔开。
                      .注释的书写。注释的典型内容包括:函数的功能描述;设计过程中的决策,如数据结构和算法的选择;错误的处理方式;复杂代码的设计思想等。在书写注释时要注意,注释的内容应该与相应的代码保持一致,同时要避免不必要的注释,过犹不及。
                      性能优化
                      由于嵌入式系统对实时性的要求较高,因此一般要求对代码的性能进行优化,使代码的执行速度越快越好。以算术运算为例,在编写代码时,需要仔细地选择和使用算术运算符。一般来说,整数的算术运算最快,其次是带有硬件支持的浮点运算,而用软件来实现的浮点运算是非常慢的。因此,在编码时要遵守以下准则:
                      .尽量使用整数(char、short、int和long)的加法和减法。
                      .如果没有硬件支持,尽量避免使用乘法。
                      .尽量避免使用除法。
                      .如果没有硬件支持,尽量避免使用浮点数。
                      下图是一个例子,其中两段代码的功能完全一样,都是对一个结构体数组的各个元素进行初始化,但采用两种不同的方法来实现。下图(a)采用数组下标的方法,在定位第i个数组元素时,需要将i乘以结构体元素的大小,再加上数组的起始地址。下图(b)采用的是指针访问的方法,先把指针fp初始化为数组的起始地址,然后每访问完一个数组元素,就把fp加1,指向下一个元素。在一个奔腾4的PC上,将这两段代码分别重复10 700次,右边这段代码需要1ms,而左边这段代码需要2.13ms。
                      
                      算术运算性能优化的例子
 
       监控
        主要包括故障监控和性能、流量、负载等状态监控,这些监控关系到集群的健康运行及潜在问题的及时发现与干预。
        (1)服务故障、状态监控:主要是对服务器自身、上层应用、关联服务数据交互监控;例如针对前端Web Server,就可以有很多种类型的监控,包括应用端口状态监控,便于及时发现服务器或应用本身是否崩溃、通过ICMP包探测服务器健康状态,更上层可能还包括应用各频道业务的监控,这些只是一部分,还有多种监控方式,依应用特点而定。还有一些问题需解决,如集群过大,如何高性能地进行监控也是一个现实问题。
        (2)集群状态类的监控或统计,为合理管理调优集群提供数据参考,包括服务瓶颈、性能问题、异常流量、攻击等问题。
 
       浏览器
        WWW浏览器是用来浏览因特网资源的工具软件。浏览器一般由一组客户、一组解释器和一个管理它们的控制器所组成。现在使用最多的浏览器软件是Microsoft公司的Internet Explorer(IE)和Netscape公司的Communicator。
   题号导航      2014年上半年 多媒体应用设计师 下午试卷 案例   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
 
第4题    在手机中做本题