Android实时流媒体监控的关键技术研究

Android实时流媒体监控的关键技术研究
Android实时流媒体监控的关键技术研究

Android实时流媒体监控的关键技术研究

摘要:以视频监控系统在物联网中的应用为背景,介绍了如何在Android平台上进行实时的视频监控系统的开发。在对Android操作系统进行深入分析的基础之上,提出了一个基于Android的流媒体监控方案,此方案通过移植X264开源库,实现了Android视频的H.264编码,并通过双缓冲文件搭建流媒体服务器对实时视频流进行发布。通过对系统的测试,指出了值得改进的方向,为今后的研究工作提供参考。关键词: Android;视频监控;H.264;双缓冲技术;流媒体服务器

终端平台的智能化和3G网络的覆盖带来了移动互联网时代,这对当今不断壮大的物联网带来了很多的便利。比如对物流车辆进行随时、随地、随身的视频监控,相比传统的PC机监控更加方便和高效。在移动终端上进行视频监控系统的开发,由于其硬件资源和网络环境的限制,开发难度远大于PC机,并且对移动终端和网络都有很高的要求。本文通过分析流媒体服务器的特点,在服务器上实现了一个双缓冲机制来达到实时发布流媒体的要求,通过服务器多线程的方式实现边采集边传输并实时的发布。本文采用Android操作系统作为终端视频采集的平台,借助Android系统平台开发的优点,可以很好地进行推广及后期应用。此外,为了保证数据传输的质量,本文通过在Android中移植X264开源库来实现流媒体视频的编码,并通过双缓冲文件优化流媒体传输机制以实现实时视频和移动监控的融合。1 系统分析与设计1.1 系统总体架构设计系统由视频移动终端、流媒体服务器、视频监控端3部分组成,系统组成框图。

其中,视频移动终端通过Anrdoid平台提供的api实时获取摄像头捕获的视频流,并通过JNI的方式调用底层的native代码以完成H.264的编码工作,之后通过socket传输到视频监控服务器。视频监控服务器包括应用服务器和流媒体服务器两部分。其中应用服务器作为整个系统的服务端,用于处理视频监控端的视频请求以及接收视频移动终端发来的实时视频流数据。流媒体服务器则用于将应用服务器接收的视频流数据封装成流媒体格式并实时发布。视频监控端采用Android平台构建,可以通过RTSP和HTTP两种协议访问流媒体服务器以获得观看实时视频的效果。1.2 视频采集和编码本系统采集的实时视频来源于Android系统支持的摄像头。考虑到无线网络带宽的限制,本系统采用H.264标准进行压缩编码。由于H.264编码对硬件要求较高,编码的速度会受到一定的影响,这样采集到的视频可能不够连贯。本系统采用多线程加缓冲队列的方法进行采集和编码。视频采集线程将捕获的每一帧数据放入一个缓冲队列中,视频编码线程从队列中获取视频帧集合来完成编码和传输的工作。具体流程图。

其中视频采集线程的伪代码如下:Begin://初始化摄像头,设置视频采集参数;While(视频采集处于激活状态){从摄像头获取一帧数据;while(缓冲队列已满)wait;//将线程挂起以等待队列可写将一帧数据压入帧缓冲队列;Notify;//通知编码线程队列可读}End视频编码线程的伪代码如下:Begin://设置编码参数(H.264),初始化编码对象;While(编码标志位为真){While(缓冲队列为空)wait;//将线程挂起以等待队列可读从缓冲队列取一帧数据;Notify;//通知采集线程队列可写JNI调用native代码对数据帧进行编码;If(编码成功){调用RTP组件对数据打包;通过UDP传输RTP包;}}End1.3 H.264视频流传输控制模型H.264的定义由视频编码层(VCL)和网络提取层(NAL)两部分组成。其中VCL作为H.264的核心算法引擎对视频数据进行压缩编码和解码;NAL层则根据不同的网络把数据打包成相应的格式并通过网络传送出去。为了保证较低的延时,需要将H.264视频流数据打包成RTP包,并加上时间戳和序列号等信息,然后通过UDP传输到服务器。RTP的打包模式

有3种:单NAL单元模式、非交错模式和交错模式。本文根据系统的要求,采用非交错模式按照编码的视频流顺序进行组包,适用于延时较低的实时系统。由于H.264编码对CPU消耗较大,如果放在java层则会大幅度影响系统性能。本系统将H.264编码模块放在native 层,用C/C++实现,通过jni调用编码接口,然后通过RTP传输。1.4 服务器设计服务器端采用双缓冲文件实现流媒体的生成和发布。传统的实时视频监控一般采用socket连接实现边传输边播放视频,视频数据并不会被缓存,并且如果要有新的客户端加入监控,则必须要新建一个socket连接。本系统通过加入流媒体服务器作为视频中转,很好地解决了这一问题。由于流媒体服务器发布实时流媒体需要实时的视频源,本系统的应用服务器将接收的实时视频流数据写入一个缓冲文件作为流媒体服务器的视频源,此缓冲文件通过linux命名管道实现。此外,流媒体服务器发布流媒体也需要一个缓冲文件,用于存放被编码成流媒体格式后的视频流数据,以供客户端调用。服务器的工作流程图。

2 系统实现2.1 Android Camera视频采集为了实时捕获Android摄像头的画面,需要用到Android Camera。Android Camera包含取景和拍照两个功能,它实际上是建立在C/S架构上的。Camera运行的时候,可以大致分成服务器和客户端两个部分,他们分别运行在两个不同的进程中,通过Binder机制来完成进程间通信。这种Android特有的Binder机制可以保证客户端和服务器独立的变化,客户端调用接口AIDL定义的接口,功能则在服务器中实现,并且进程间通信的部分对上层程序不可见。具体实现中,通过Android Framework提供的android.hardware.Camera类来完成和Camera Service服务端通信。由于需要对采集到的每一帧画面进行压缩编码处理,可以通过调用Camera对象的setPreviewCallback函数来设置一个回调对象,此回调对象中的onPreviewFrame函数可用于完成对当前帧的捕获,这样就可以在此函数中对采集到的视频进行编码的处理了。2.2 JNI调用X264库考虑到无线网络环境的不稳定性和带宽有限的问题。本文对采集到的视频进行H.264标准的高效压缩编码。

H.264是目前一个广泛使用的具有高压缩比的视频编码格式,具有较高的视频压缩性能,适合用窄带传输,适用于移动互联网和流媒体播放。本文采用X264开源库来对实时视频进行压缩编码。首先需要在Android操作系统上移植X264库。由于X264是用C语言写的一个开源库,为了能够被Android平台使用,需要用到NDK工具对其进行编译。NDK是用来编译本地代码的工具,作为Android SDK的一个补充,用于将原生的C/C++代码集成到应用中,并通过JNI的方式被上层java程序调用。本文采用JNI方式调用X264库的步骤如下所示。(1)JNI接口设计设计调用本地代码的函数接口。本文需要对采集的视频进行H.264编码,编码部分需要定义3个接口。分别如下:private native long CompressBegin(int width,int height);private native int CompressBuffer(long encoder,int type,byte[] in,int insize,byte[]out);private native int CompressEnd(long encoder);其中native关键表明这3个函数来自于native代码。CompressBegin接口是编码初始化接口,通过传递视频画面的宽和高来对H.264编码器进行初始化设定;CompressBuffer接口是编码接口,通过传递encoder编码器结构和视频流字节数组来对当前帧的视频流数据进行H.264编码,编码后的结果存储在out数组中;CompressEnd接口用于释放编码资源。(2)实现本地方法JNI接口设计完毕之后,需要用C语言实现接口。创建一个H264Android.c的文件,用来实现第一步中定义的3个接口。(3)生成动态链接库实现JNI接口之后,需要生成.so 的动态链接库以供java程序调用。为了生成动态链接库,需要编写Android.mk文件并通过NDK工具对本地代码进行交叉编译。交叉编译时需要针对X264库编写相应的Android.mk文件,核心内容如下所示:include $(CLEAR_VARS)LOCAL_C_INCLUDES+=libx264/includeLOCAL_MODULE:=H264AndroidLOCAL_SRC_FILES:=H264Android.cLOCAL_LDFLAGS+=$(LOCAL_PATH)/libx264/lib/libx264.aLOCAL_LDLIBS:

=-L$(SYSROOT)/usr/lib-lgccinclude$(BUILD_SHARED_LIBRARY)其中,LOCAL_C_INCLUDES 标明了编译需要的外部头文件路径;LOCAL_MODULE标明了当前生成模块名称;LOCAL_SRC_FILES标明了编译需要用到的源文件;LOCAL_LDFLAGS标明了编译需要用到的外部静态库;LOCAL_LDLIBS标明了引用的外部库文件。通过引用X264的静态库,即可将X264编译到native代码中,并被上层java程序调用。编译成功之后,会在Android项目的根目录下的libs文件夹中形成一个libH264Android.so的动态链接库,编译完成。(4)Java 程序调用本地代码Android中的Java程序可以通过System.loadLibrary ("H264Android")函数调用第3步中生成libH264Android.so动态链接库。并使用声明的native方法来完成视频编码的功能。2.3 视频传输的实现视频传输通过TCP和UDP两种方式配合实现。为了保证视频采集终端和服务器之间有可靠的通信机制,采用TCP 连接来进行控制信息的传输,当视频终端收到有效的传输视频的控制信息之后,采用UDP连接发送实时的视频流到服务器。服务器视频接收线程会将收到的有效视频数据写入到一个缓冲文件Camera.h264中,此文件被作为流媒体服务器的视频源。2.4 FFmpeg流媒体服务器架设

服务器端采用FFmpeg作为流媒体服务器。FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证。FFmpeg既可以对视频进行编解码,也可以搭建基于http和rtsp协议的流媒体服务器。本系统服务器利用Camera.h264缓冲文件作为FFmpeg的视频源进行流媒体的发布。由于ffmpeg发布流媒体需要用到其中的FFserver 组件,ffserver组件的启动需要编写相应的ffserver.conf配置文件,主要配置如下所示:Port 8090//配置RTSP端口号BindAddress 0.0.0.0//绑定本地IP地址MaxClients 1000//配置最大连接数<Feed feed1.ffm>//配置流媒体缓冲文件File/tmp/feed1.ffmFileMaxSize 200 KB//缓冲文件大小为200 KB</Feed><Stream camera.asf>//配置发布的流媒体格式Feed feed1.ffmFormat asfVideoFrameRate 15VideoSize 352x240</Stream> 其中,Port指定了流媒体服务器绑定的端口。<Feed feed1.ffm>标签定义了流媒体服务器运行所需要的一个缓冲文件,大小为200 KB。<Stream camera.asf>标签定义了流媒体服务器输出的视频格式以及视频相关的参数。如本系统输出的流媒体格式为.asf格式。在ffserver启动时,会根据ffserver.conf 文件中的配置新建一个feed1.ffm缓冲文件。此缓冲文件用于存放来自视频源文件的实时视频流。FFmpeg会根据配置文件中的视频输出格式将视频源中的文件进行转换,转换之后的数据会写入feed1.ffm文件中。本系统中,feed1.ffm文件大小被限制在200 KB,当200 KB 的空间被用完后,新数据会从文件的开头进行写入。这样可以保证当有新的客户端加入监控时,观看到的是最新的视频。3 系统测试为了验证H.264视频在无线网络中的传输性能,本系统选取了2台Android 2.3系统的手机进行测试。测试环境如下:视频终端:Google Nexus S CPU主频:1 GHz 内存:512 MB 操作系统:Android 2.3 服务器采用Ubuntu10.04搭建。表1对双缓冲和无缓冲的流媒体传输机制进行了测试和对比,显示了随着分辨率和每秒传输帧数/(F/S)的变化导致的丢包率和延时的变化。

经过测试,在采用了双缓冲机制发布流媒体之后,客户端能够以更小的延时播放流媒体服务器发布的H.264视频流。由于丢包率主要取决于传输带宽,改变传输模式对丢包率的提升并不是很大。在高速移动互联网的环境下进行视频监控成为了物联网行业一个比较热门的应用。本文在流媒体服务器的搭建上采用双缓冲文件技术,有效地保证了视频源的实时性,降低了网络传输的延时。此外,考虑到无线网络环境中视频数据传输的困难,本文采用H.264标准对实时视频进行压缩编码,有效地提高了带宽利用率。由于本文传输视频数据采用的RTP 组包模式[5]并没有考虑到实际的应用背景,会产生一定程度的数据丢包,因此只是和应用与

对实时画面要求不高的场景,比如物联网物流行业等,如果要实时传输更清晰的视频数据,则需要采用良好的失序和拥塞处理技术,并重写RTP的组包算法,这样可以保证视频数据的稳定性和完整性,这也是今后要研究和改进的方向。

流媒体技术的工作原理及应用和发展

流媒体技术的原理、应用及发展 一.流媒体 流媒体又叫流式媒体,它是指商家用一个视频传送服务器把节目当成数据包发出,传 送到网络上。用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显示出来。这个过程的一系列相关的包称为“流”。流媒体实际指的是一种新的媒体传送方式,而非一种新的媒体。所谓流媒体是指采用流式传输的方式在Internet播放的媒体格式。流式传 输方式则是将整个A/V及3D等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视 频服务器向用户计算机连续、实时传送。在采用流式传输方式的系统中,用户不必等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备(硬件或软件)对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒 体文件的剩余部分将在后台的服务器内继续下载。 与单纯的下载方式相比,这种对多媒体文件边下载边播放的流式传输方式不仅使启动 延时大幅度地缩短,而且对系统缓存容量的需求也大大降低。在网络上传输音/视频等多媒体信息目前主要有下载和流式传输两种方案。实现流式传输有两种方法: ?实时流式传输(Real-time streaming transport) ?顺序流式传输(progressive streaming transport)。 一般来说,如为实时广播,或使用流式传输媒体服务器,或应用实时流协议(RTSP)等,即为实时流式传输。如使用超文本传输协议(HTTP)服务器,文件即通过顺序流发送。采用哪种传输方法可以根据需要进行选择。当然,流式文件也支持在播放前完全下载到硬盘。 (1)实时流式传输 实时流式传输总是实时传送,特别适合现场广播,也支持随机访问,用户可快进或后退以观看后面或前面的内容。但实时流式传输必须保证媒体信号带宽与网络连接匹配,以便传输的内容可被实时观看。实时流式传输需要专用的流媒体服务器与传输协议。 (2)顺序流式传输 顺序流式传输是顺序下载,在下载文件的同时用户可观看在线内容,在给定时刻,用户只能观看已下载的部分,而不能跳到还未下载的部分。由于标准的HTTP服务器可发送 顺序流式传输的文件,也不需要其他特殊协议,所以顺序流式传输经常被称作HTTP流式 传输。 顺序流式传输比较适合高质量的短片段,如片头、片尾和广告,由于这种传输方式观看的部分是无损下载的,所以能够保证播放的最终质量。但这也意味着用户在观看前必须经历时延。顺序流式传输不适合长片段和有随机访问要求的情况,如讲座、演说与演示;也不支持现场广播,严格说来,它是一种点播技术。 二、流媒体技术原理 流式传输的实现需要合适的传输协议。由于TCP需要较多的开销,故不太适合传输实时数据。在流式传输的实现方案中,一般采用HTTP/TCP来传输控制信息,而用实时传 输协议/用户数据报协议(RTP/UDP)来传输实时数据。 流式传输的实现需要缓存。因为一个实时音视频源或存储的音视频文件在传输中被分解为许多数据包,而网络又是动态变化的,各个包选择的路由可能不相同,故到达客户端的时延也就不同,甚至先发的数据包有可能后到。为此,需要使用缓存系统来消除时延和抖动的影响,以保证数据包顺序正确,从而使媒体数据能够连续输出。

Android应用程序开发(第二版)课后习题答案最新版

第一章 Android简介 1.简述各种手机操作系统的特点. 答案: 目前,手机上的操作系统主要包括以下几种,分别是Android、iOS、Windows Mobile、Windows Phone 7、Symbian、黑莓、PalmOS 和Linux。 (1)Android是谷歌发布的基于Linux的开源手机平台,该平台由操作系统、中间件、用户界面和应用软件组成,是第一个可以完全定制、免费、开放的手机平台。Android底层使用开源的Linux操作系统,同时开放了应用程序开发工具,使所有程序开发人员都在统一、开放的开发平台上进行开发,保证了Android应用程序的可移植性。 (2)iOS是由苹果公司为iPhone、iPod touch、iPad以及Apple TV开发的操作系统,以开放源代码的操作系统Darwin为基础,提供了SDK,iOS操作系统具有多点触摸操作的特点,支持的控制方法包括滑动、轻按、挤压和旋转, 允许系统界面根据屏幕的方向而改变方向,自带大量的应用程序。 (3)Windows Mobile是微软推出的移动设备操作系统,对硬件配置要求较高,一般需要使用高主频的嵌入式处理器,从而产生了耗电量大、电池续航时间短和硬件成本高等缺点,Windows Mobile系列操作系统包括Smartphone、Pocket PC和Portable Media Center。

随着Windows Phone 7的出现,Windows Mobile正逐渐走出历史舞台。 (4)Windows Phone 7具有独特的“方格子”用户界面,非常简洁,黑色背景下的亮蓝色方形图标,显得十分清晰醒目,集成了Xbox Live游戏和Zune音乐功能,可见Windows Phone 7对游戏功能和社交功能的重视。 (5)Symbian是为手机而设计的实时多任务32位操作系统,它的功效低,内存占用少,提供了开发使用的函数库、用户界面、通用工具和参考示例。操作系统不是完全开放的,核心代码不开放,但是API文档是公开的。 (6)黑莓系统主要在黑莓手机上使用,其特色是支持电子邮件推送功能,邮件服务器主动将收到的邮件推送到用户的手持设备上,而不需要用户频繁地连接网络查看是否有新邮件。同时,黑莓系统提供手提电话、文字短信、互联网传真、网页浏览及其它无线信息服务功能。黑莓系统主要针对商务应用,具有很高的安全性和可靠性。 (7)PalmOS由拥有较多的第三方软件,是32位的嵌入式操作系统,主要在移动终端上使用,操作系统本身所占的内存极小,不具备录音和MP3播放功能。 (8)Linux手机操作系统具有开放源代码的特性,但是也包含入门难度高,集成开发环境差,Linux的产品与个人计算机的连接性较差,具有较强的开发实力的公司很少等不足。 2.简述Android平台的特征

Android移动设备中的传感器关键技术设计

Android移动设备中的传感器关键技术设计 摘要 随着经济的发展,Android系统在电子信息、通信系统特别是移动设备方面应用十分广泛。比如:摩托罗拉、三星等智能手机大多采用的是Android系统。 Android系统提供的加速度传感器和陀螺仪是基于硬件的传感器,其中有三个传感器既是基于硬件的也是基于软件的传感器。文章根据Android系统的五个传感器技术的应用,进行了论述研究。 一、引言 随着手机等移动设备的发展,人们对移动设备的要求不仅仅限于接打电话、QQ等传统手机功能,要求智能手机具备更加完善强大的娱乐商务功能,目前传统计算机的应用功能基本全部实现智能手机上。 Android作为一种流行系统平台,令人津津乐道的特性数不胜数,其中最为耀眼的是Android平台的各种传感器。 二、基于Android移动设备的传感器技术概述 (一)Android平台简介 Android的中文翻译是安卓,本来的意思是机器人,是Google公司基于Linux 自由及开放代码的操作系统,这种操作系统较好的整合应用软件、用户界面、操作系统和中间件,打造了一个移动终端开放完整的移动软件,在2007年11月5日正式开发成功面试。Android(安卓)最初是由Andy Rubin开发的一种操作系统,主要支持的移动设备是手机。2005年8月,Google收购安卓并未安卓注资,2007在Google的领导下改良Android系统,使Android成为一种基于Linux自由及开放代码的操作系统,除了支持智能手机还支持平板电脑等移动设备。Android 是完全开放的操作系统,它的迅速发展使其发展趋势趋向多元化,Google公司强大的互联网功能和服务优势,Android的移动技术应用的前景非常美好。 (二)基于Android平台传感器概述 传感器是被测量信号输入的第一道关口,是传感器系统中的元件组成部分,它包括载体和电路连接的敏感元件和转换元件,但是传感器系统却是组合某种信息处理能力元件的传感器。传感器是一种检测装置,是实现移动设备自动控制、自动检测的前提装置。Android平台应用的传感器技术有姿态传感器技术、光电传感器技术、磁场传感器技术和加速度传感器技术等诸多耀眼的传感器技术,传感器系统功能非常强大,为用户提供了巨大的便利。 三、基于Android移动设备的传感器技术应用 (一)基于Android移动设备的加速度传感器技术应用

实验8 流媒体服务器配置(学习类别)

流媒体服务器配置 (1)实验名称 流媒体服务器配置。 (2)实验目的 a)理解流媒体服务的工作原理; b)掌握Windows Media服务器的安装; c)掌握Windows Media服务器的配置、使用和管理。 (3)实验原理 流媒体(Stream Media)是指在网络上进行流式传输的连续实时播放的多媒体文件,如音频、视频和三维媒体文件等多媒体文件经过特定的压缩方式解析成压缩包,由视频服务器向用户计算机顺序传送。 采用流媒体可以提高多媒体在网上实时播放的质量和流畅程度。由于多媒体文件的数据量非常大,如果采用传统的把文件从网上下载到本地磁盘的方式,受到网络带宽的限制,会让用户等待的时间太长,并且也要占用用户大量的磁盘空间。如果采用实时播放的方式,可以直接从网上将多媒体信息逐步下载到本地缓存中,在下载的同时播放已经下载的部分,用户不必等到整个文件下载完毕即可播放,这样既避免了让用户等待太久,也不会占用用户太多的磁盘空间。 (4)实验内容 a) 安装Windows Media服务器; b) 建立流媒体服务; c) 访问流媒体服务。 (5)实验拓扑 Switch Media 172.19.10.16/24 图3-5-1网络连接拓扑图 a) 计算机Media Server的ip地址为172.19.10.16,子网掩码为255.255.255.0 (6)实验设备 两台计算机和一台交换机。

(7)实验过程 为了建立流媒体服务,本实验需要准备以下的流媒体文件。在计算机Media Serve上建立文件夹“C:\mymovie”,拷贝一些流媒体文件放到该文件夹中。使用的计算机Media Serve的IP地址是 “172.19.10.16”,主机名“A16”。 a)安装Windows media services 在Windows系统下,按照这样的步骤进行安装:“开始”→“设置”→“控制面板”→“添加/删除程序”→“添加/删除Windows 组件”→“Windows Media Services”。 图3-5-2安装Windows Media Services图3-5-3添加发布点向导 b)使用Windows media services提供点播服务 1)创建和设置发布点“mymovie”。右键单击“发布点”,选择“添加发布点(向导)”来完成发布点 的创建(如图3-5-3所示)。在“内容类型”选项中选择“目录中的文件(数字媒体或播放列表)(适用于通过一个发布点实现点播播放)”(如图3-5-5所示)。 图3-5-4设置发布点名称图3-5-5设置内容类型 然后,在“发布点类型”选项中选择“点播发布点”(如图3-5-6所示);并在“目录位置”选项中选择路径“F:\mymovie”(如图3-5-7所示);再在“内容播放”选择“循环播放”和启动“发布点日志记录”(如

流媒体技术的原理、应用及发展

摘要:Internet的迅猛发展和普及为流媒体业务发展提供了强大的市场动力,流媒体业务正日益普及,流媒体技术广泛应用于互联网信息服务的方方面面。首先介绍了流媒体技术的基础、基本原理以及流式传输的基本过程,接着重点介绍了流媒体技术在视频点播、远程教育、视频会议和Internet直播方面的应用,最后介绍了流媒体技术的发展现状和展望。 关键词:多媒体通信,多媒体业务,流媒体,流式传输,原理,应用,发展 随着现代网络技术的发展,网络开始带给人们形式多样的信息。从在网络上出现第一张图片到现在各种形式的网络视频、三维动画,人们的视听觉在网络上得到了很大的满足。但人们又面临着另外一种不可避免的尴尬:在网络上看到生动清晰的媒体演示的同时,不得不为等待传输文件而花费大量时间。为了解决这个矛盾,一种新的媒体技术应运而生,这就是流媒体技术。 流媒体是指在网络中使用流式传输技术的连续时基媒体,如音频、视频或多媒体文件。而流式传输技术就是把连续的声音和图像信息经过压缩处理后放到网站服务器上,让用户一边下载一边收听观看,而不需要等待整个文件下载到自己的机器后才可以观看的网络传输技术。 目前,在网络上传输音视频(A/V)等多媒体信息主要有下载和流式传输两种方案。一方面,由于音视频文件一般都较大,所以需要的存储容量也较大;同时由于受网络带宽的限制,下载这样的文件常常需要几分钟甚至几小时,所以采用下载方法的时延也就很大。而采用流式传输时,声音、图像或动画等时基媒体由音视频服务器向用户计算机连续、实时传送,用户只需经过几秒或数十秒的启动时延而不必等到整个文件全部下载完毕即可观看。当声音、图像等时基媒体在客户机上播放时,文件的剩余部分将在后台从服务器上继续下载。流式传输不仅使启动时延大大缩短,而且不需要太大的缓存容量。流式传输避免了用户必须等待整个文件全部下载完毕之后才能观看的缺点。一、流媒体技术基础 实现流式传输有两种方法:实时流式传输(Real-time streaming transport)和顺序流式传输(progressive streaming transport)。一般来说,如为实时广播,或使用流式传输媒体服务器,或应用实时流协议(RTSP)等,即为实时流式传输。如使用超文本传输协议(HTTP)服务器,文件即通过顺序流发送。采用哪种传输方法可以根据需要进行选择。当然,流式文件也支持在播放前完全下载到硬盘。 1.实时流式传输 实时流式传输总是实时传送,特别适合现场广播,也支持随机访问,用户可快进或后退以观看后面或前面的内容。但实时流式传输必须保证媒体信号带宽与网络连接匹配,以便传输的内容可被实时观看。这意味着在以调制解调器速度连接网络时图像质量较差。而且,如果因为网络拥塞或出现问题而导致出错和丢失的信息都被忽略掉,那么图像质量将很差。实时流式传输需要专用的流媒体服务器与传输协议。 2.顺序流式传输 顺序流式传输是顺序下载,在下载文件的同时用户可观看在线内容,在给定时刻,用户只能观看已下载的部分,而不能跳到还未下载的部分。由于标准的HTTP服务器可发送顺序流式传输的文件,也不需要其他特殊协议,所以顺序流式传输经常被称作HTTP流式传输。顺序流式传输比较适合高质量的短片段,如片头、片尾和广告,由于这种传输方式观看的部分是无损下载的,所以能够保证播放的最终质量。但这也意味着用户在观看前必须经历时延。顺序流式传输不适合长片段和有随机访问要求的情况,如讲座、演说与演示;也不支持现场广播,严格说来,它是一种点播技术。

用 Eclipse 开发 Android 应用程序

在 Eclipse 环境中进行 Android 应用程序开发 开始之前 本教程介绍如何在 Eclipse 环境中进行 Android 应用程序开发,包括两个示例应用程序。第一个示例是一个基本的应用程序,涉及构建和调试的所有阶段。第二个应用程序示例涉及比较复杂的 Android 特性,包括联系人搜索和 Google Maps 地址查找。要想从本教程获得最大收益,具备移动开发经验会有帮助,但不是必需的。开发 Android 应用程序需要Java? 编程技能,但是对于本教程不是必需的。 关于本教程 我们为什么要关注 Android?有两个原因使 Android 成为重要的平台。首先,Google 引入了 Android,它在很短时间内就获得了市场的关注。Google 正在进军移动市场。它在这个市场上采取的第一个行动就是发布 Android 和 Open Handset Alliance,这是一个令人印象深刻的起点。第二,Android 不仅仅是另一种包含电话、菜单和触摸屏功能的移动平台。您将在本教程中了解到,Android 提供了一种不同的应用程序开发方法。由于可以对请求的操作和代码进行运行时绑定,Android 的体系结构支持高度可定制的软件环境。无论是考虑市场因素还是 Android 的技术方面,它都是一个值得研究的平台。 本教程分为以下几节: ?Android 基础知识和必需的工具 ?Android Software Developer Kit ?构建和调试 SaySomething Android 应用程序 ?创建内容提供器和 Google Maps 应用程序 系统需求 本教程需要结合使用几种技术。 Eclipse 平台Eclipse 是一个运行插件的平台。您应该安装 Eclipse Classic 的最新版本(本教程使用 V3.3.1)。Android Developer Tools按照安装 Android SDK中的说明安装 Android Developer Tools(Eclipse 插件)。 源代码本教程中的源代码片段包括: ?AndroidManifest.xml(片段)—这个文件是 Android 应用程序的应用程序部署描述符。 ?IntentReceiver —演示 IntentReceiver 的实现,这个类处理 AndroidManifest.xml 文件中 IntentFilter 标记所公布的 intent。 ?SaySomething.java —实现一个 Android 活动,这是本教程的示例应用程序的主要入口点。 ?Main.xml —这个文件包含 Android 活动所用的视觉元素或资源。 ?R.java —这个文件是由 Android Developer Tools 自动生成的,它把视觉资源“连接” 到 Java 源代码。 ?AndroidManifest.xml(完整)—这是完整的 AndroidManfest.xml 文件,包含每个重要元素的描述。

流媒体技术及其教育应用

流媒体技术及其教育应用 一.引言 在网络上传输音/视频等多媒体信息目前主要有下载和流式传输两种方案。A/V 文件一般都较大,所以需要的存储容量也较大;同时由于网络带宽的限制,下载常常要花数分钟甚至数小时,所以这种处理方法延迟也很大。流式传输时,声音、影像或动画等时基媒体由音视频服务器向用户计算机的连续、实时传送,用户不必等到整个文件全部下载完毕,而只需经过几秒或十数秒的启动延时即可进行观看。当声音等时基媒体在客户机上播放时,文件的剩余部分将在后台从服务器内继续下载。流式不仅使启动延时成十倍、百倍地缩短,而且不需要太大的缓存容量。流式传输避免了用户必须等待整个文件全部从Internet 上下载才能观看的缺点。流媒体指在Internet/Intranet中使用流式传输技术的连续时基媒体,如:音频、视频或多媒体文件。流式媒体在播放前并不下载整个文件,只将开始部分内容存入内存,流式媒体的 数据流随时传送随时播放,只是在开始时有一些延迟。 “流媒体”的概念包括以下两个层面。其一,流媒体是计算机网络尤其是中低带(Internet/Intranet)上需要实时传输的多媒体文件,比如声音、视频文件。在传输前需要压缩处理成多个压缩包,并附加上与其传输有关的信息(比如,控制用户端播放器正确播放的必要的辅助信息),形成实时数据流。数据流最大的特点是允许播放器及时反应而不用等待整个文件的下载。其二,流媒体是对多媒体信息进行“流化”处理,是一种解决问题的方式,可以使视频等对实时性要求严格的多媒体文件在上在Internet/Intranet既无下载等待需求又不占用客户端硬盘空间的情况下保证实时播放。 流媒体技术是综合的技术, 包括采集、编码、传输、储存、解码等多项技术。流媒体应用系统一般由分编码端、服务器端、用户终端三部分组成。流媒体技术在教育或学校的应用前景广阔, 可用于课件点播、交互教学、电视转播、远程监控、视频会议等。 二.流媒体技术基础 1.流媒体技术原理 流式传输的实现需要缓存。因为Internet 以包传输为基础进行断续的异步传输,对一个实时A/V 源或存储的A/V文件,在传输中它们要被分解为许多包,由于网络是动态变 化的,各个包选择的路由可能不尽相同,故到达客户端的时间延迟也就不等,甚至先发的数据包还有可能后到。为此,使用缓存系统来弥补延迟和抖动的影响,并保证数据包的顺序正确,从而使媒体数据能连续输出,而不会因为网络暂时拥塞使播放出现停顿。通常高速缓存所需容量并不大,因为高速缓存使用环形链表结构来存储数据:通过丢弃已经播放的内容,流可以重新利用空出的高速缓存空间来缓存后续尚未播放的内容。流式传输的过程一般是这样的:用户选择某一流媒体服务后,Web 浏览器与Web 服务器之间使用HTTP/TCP 交换控制信息,以便把需要传输的实时数据从原始信息中检索来;然后客户机上的Web 浏览器启动A/VHelper 程序,使用HTTP从Web服务器检索相关参数对Helper程序初始化。这些参数可能包括目录信息、A/V 数据的编码类型或与A/V检索相关的服务器地址。A/VHelper 程序及A/V 服务器运行实时流控制协议RTSP),以交换A/V 传输所需的控制信息。与CD 播放机或VCRs 所提供的功能相似,RTSP 提供了操纵播放、快进、快倒暂停及录制等命令的方法。A/V 服务器使用RTP/UDP协议将A/V 数据传输给A/V 客户程序(一般可认为客户程序等同于Helper 程序),一旦A/V 数据抵达客户端,A/V客户程序即可播放输出。 需要说明的是,在流式传输中,使用RTP/UDP 和RTSP/TCP 两种不同的通信协议与A/V 服务器建立联系,是为了能够把服务器的输出重定向到一个不同于运行A/VHelper 程序所在客户机的目的地址。实现流式传输一般都需要专用服务器和播放器。

Android应用开发基础习题

-- 任务一Android 开发环境的搭建 第一部分知识回顾与思考 1.Android 的四层架构分别包括哪几层?分别起到什么作用? 答:Linux 内核层(Linux Kernel ):基于Linux 内核,内核为上层系统提供了系统服务。 系统库层(Libraries ):系统库基于C/C++ 语言实现,通过接口向应用程序框架层提供编程接口。 应用框架层(Application Framework ):为开发者提供了一系列的Java API,包括图形用户界面组件

View 、SQLite 数据库相关的API 、Service 组件等。 应用程序层(Applications ):包含了Android 平台中各式各样的应用程序。 第二部分职业能力训练 一、单项选择题(下列答案中有一项是正确的,将正确答案填入括号内) 1.Android 四层架构中,应用框架层使用的是什么语法?(C)A .CB .C++C.Java D.Android 2.Android 四层架构中,系统库层使用的是什么语法?(B)A .VBB.C /C++C.Java D .Android 3.应用程序员编写的Android 应用程序,主要是调用(B)提供的接口进行实现。 A .应用程序层DCB.应用框架层.应用视图层.系统库层

二、填空题(请在括号内填空) 1.在Android 智能终端中,有很多应用如拍照软件、联系人管理软件,它们都属于Android 的(应用程 序)层。 2.为了让程序员更加方便的运行调试程序,Android 提供了(模拟器),可以方便的将程序运行其上, 而不要实际的移动终端。 程序运行,我们需要安装(Java 3.为了支持)。JDK 三、简答题 1.简述Android 开发环境安装的步骤。 答:下载并安装JDK ,配置JDK 的环境变量; 从Anroid 官网上下载Android 开发组件(包含Eclipse 和

流媒体服务器配置教程

流媒体服务器配置教程 流媒体文件是目前非常流行的网络媒体格式之一,这种文件允许用户一边下载一边播放,从而大大减少了用户等待播放的时间。另外同过网络播放流媒体文件时,文件本身不会在本地磁盘中存储,这样就节省了大量的磁盘空间开销。正是这些优点,使得流媒体文件被广泛应用于网络播放。 Windows Server 2003系统内置的流媒体服务组件Windows Media Services(W indows媒体服务,简称WMS)就是一款通过Internet或Intranet向客户端传输音频和视频内容的服务平台。WMS支持.asf、.wm a、.wmv、.mp3等格式的媒体文件。能够像Web服务器发布HTML文件一样发布流媒体文件和从摄像机、视频采集卡等设备传来的实况流。而用户可以使用Windows Media Player 9及以上版本的播放器收看这些媒体文件。本章内容以Windows Server 2003(SP1)系统为例,介绍如何使用WMS打造网络媒体中心。 默认情况下,Windows Server 2003(SP1)没有安装Windows Media Ser vices组件。用户可以通过使用“Windows组件向导”和“配置您的服务器向导”两种方式来安装该组件。以使用“配置您的服务器向导”安装为例,操作步骤如下所述: Step1 在开始菜单中依次单击【管理工具】→【配置您的服务器向导】菜单项,打开“配置您的服务器向导”对话框。在欢迎对话框中直接单击【下一步】按钮。 Step2 配置向导开始检测网络设备和网络设置是否正确,如未发现错误则打开【配置选项】对话框。选中【自定义配置】单选钮,并单击【下一步】按钮。 Step3 打开“服务器角色”对话框,在“服务器角色”列表中显示出所有可以安装的服务器组件。选中【流式媒体服务器】选项,并单击【下一步】按钮, Step4 在打开的“选择总结”对话框中直接单击【下一步】按钮,配置向导开始安装Win dows Media Services组件。在安装过程中会要求插入Windows Server 2003(SP1)系统安装光盘或指定系统安装路径,安装结束以后在“此服务器现在是流式媒体服务器”对话框中单击【完成】按钮。 成功安装Windows Media Services组件以后,用户可以测试流媒体能不能被正常播放,以便验证流媒体服务器是否运行正常。测试流媒体服务器的步骤如下所述: Step1 在开始菜单中依次单击【管理工具】→【Windows Media Services】菜单项,打开Windows Media Services窗口。 Step2 在左窗格中依次展开服务器和【发布点】目录,默认已经创建“<默认>(点播)”和“S am ple_Broadcast”两个发布点。选中“<默认>(点播)”发布点,在右窗格中切换到【源】选项卡。在【源】选项卡中单击【允许新的单播连接】按钮以接受单播连接请求,然后单击【测试流】按钮, Step3 打开“测试流”窗口,在窗口内嵌的Windows Media Player播放器中将自动播放测试用的流媒体文件。如果能够正常播放,则说明流媒体服务器运行正常。单击【退出】按钮关闭“测试流”窗口, 提示:用户可以重复上述步骤测试“Sample_Broadcast”广播发布点是否正常。另外在Windows Server 2003(SP1)系统中,即使安装了声卡驱动程序,系统依然没有启动音频设备。用户需要在“控制面板”窗口中打开“声音和音频设备”对话框,并选中【启用Windows音频】复选框。 就像Web站点向网络上发布网页一样,流媒体服务器是通过建立发布点来发布流媒体内容和管理用户连接的。流媒体服务器能够发布从视频采集卡或摄像机等设备中传来的实况流,也可以发布事先存储的流媒体文件,并且发布实况流和流媒体文件的结合体。一个媒体流可以由一个媒体文件构成,也可以由多个媒体文件组合而成,还可以由一个媒体文件目录组成。 流媒体服务器能够通过点播和广播两种方式发布流媒体,其中点播方式允许用户控制媒体流的播放,具备交互性;广播方式将媒体流发送给每个连接请求,用户只能被动接收而不具备交互

Android应用开发试题

Android应用开发试题 一、选择题(每题2分,共30分) 1. 下列不是手机操作系统的是?(D) A.Android B. Window Mobile C. Apple IPhone IOS D.windows vista 2.Android的VM虚拟机是哪个?A A.Dalvik B.JVM C.KVM D.framework 3. AndroidVM虚拟机中运行的文件的后缀名为(B) A.class B.apk C.dex D.xml 4. 下面关于Android DVM的进程和Liunx的进程,应用程序的进程说法正确的是 A.DVM指dalivk的虚拟机.每一个Android应用程序都在自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例,而每一个DVM都是在Liunx中的一个进程,所以说可以认为是同一个概念。B B.DVM指dalivk的虚拟机.每一个Android应用程序都在自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例,而每一个DVM不一定都是在Liunx 中的一个进程,所以说可以认为不是一个概念。 C.DVM指dalivk的虚拟机.每一个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例,而每一个DVM不一定都是在Liunx中的一个进程,所以说可以认为不是同一个概念。 D.DVM指dalivk的虚拟机.每一个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例,而每一个DVM都是在Liunx中的一个进程,所以说可以认为是同一个概念。 5. 下列哪个可做EditText编辑框的提示信息?(D) A. android:inputType B. android:text C. android:digits D. android:hint 6. 在AndroidManifes.xml中描述一个Activity时,该Activity的label属性是指定什么( B) A.指定Activity的图标 B.指定Activity的显示图标 C.指定Activity和类相关联的类名 D.指定该Activity的唯一标识 7. 关于ContentValues类说法正确的是( A ) A.它和Hashtable比较类似,也是负责存储一些名值对,但是它存储的名值对当中的名是String类型,而值都是基本类型。 B.它和Hashtable比较类似,也是负责存储一些名值对,但是它存储的名值对当中的名是任意类型,而值都是基本类型。 C.它和Hashtable比较类似,也是负责存储一些名值对,但是它存储的名值对当中的名可以使空,而值都是String类型。 D.它和Hashtable比较类似,也是负责存储一些名值对,但是它存储的名值对当中的名是String类型,而值也是String类型。 8. Activity对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行( A) A.onPause() B.onCreate() C.onResume() D.onStart 9. 下列哪个不是Activity的生命周期方法之一?(B) A. onCreate B. startActivity C. onStart D. onResume 10.如果在android应用程序中需要发送短信,那么需要在AndroidManifest.xml文件中增加什么样的权限( D). A.发送短信,无需配置权限

浅谈安卓开发代码混淆技术

浅谈安卓开发代码混淆技术 关键字:代码混淆,代码保护,应用安全,应用加固,安卓安全 随着移动互联网的快速发展,应用的安全问题不断涌现出来,于是越来越多的应用开发者将核心代码由java层转到native层,以对抗成熟的java逆向分析工具,然而如果native层的代码如果没有进行任何保护,还是比较容易被逆向分析工作者获取其运行逻辑,进而完成应用破解或者进行其他的操作。那么提高native代码的安全性有什么好办法吗?答案是肯定的,今天我们就来介绍一种有效对抗native层代码分析的方法——代码混淆技术。 那么,什么是代码混淆呢?代码混淆的学术定义如下: 代码混淆(code obfuscation)是指将计算机程序的代码,转换成一种功能上等价,所谓功能上的等价是指其在变换前后功能相同或相近。其解释如下:程序P经过混淆变换为P‘,若P没有结束或错误结束,那么P’也不能结束或错误结束;而且P‘程序的结果应与程序P具有相同的输出。否则P’不是P的有效的混淆。 目前对于混淆的分类,普遍是以Collberg 的理论为基础,分为布局混淆(layout obfuscation)、数据混淆(data obfuscation)、控制混淆(control obfuscation)和预防混淆(preventive obfuscation)这四种类型。 1. 布局混淆 布局混淆是指删除或者混淆软件源代码或者中间代码中与执行无关的辅助文本信息,增加攻击者阅读和理解代码的难度。软件源代码中的注释文本、调试信息可以直接删除,用不到的方法和类等代码或数据结构也可以删除,这样

即可以使攻击者难以理解代码的语义,也可以减小软件体积,提高软件装载和执行的效率。软件代码中的常量名、变量名、类名和方法名等标识符的命名规则和字面意义有利于攻击者对代码的理解,布局混淆通过混淆这些标识符增加攻击者对软件代码理解的难度。标识符混淆的方法有多种,例如哈希函数命名、标识符交换和重载归纳等。哈希函数命名是简单地将原来标识符的字符串替换成该字符串的哈希值,这样标识符的字符串就与软件代码不相关了;标识符交换是指先收集软件代码中所有的标识符字符串,然后再随机地分配给不同的标识符,该方法不易被攻击者察觉;重载归纳是指利用高级编程语言命名规则中的一些特点,例如在不同的命名空间中变量名可以相同,使软件中不同的标识符尽量使用相同的字符串,增加攻击者对软件源代码的理解难度。布局混淆是最简单的混淆方法,它不改变软件的代码和执行过程。 2. 数据混淆 数据混淆是修改程序中的数据域,而对代码段不作处理。常用的数据混淆方式有合并变量、分割变量、数组重组、字符串加密等。 合并变量是将几个变量合并为一个数据,原来的每个变量占据其中一个区域,类似于一个大的数据结构。分割变量则是将一个变量分割为两个变量,对分割前后提供一种映射关系,将对一个变量的操作转化为对分割后两个变量的操作。 数组重组有数组的分割、合并、折叠和平滑等几种方式。分割是将一个数组分成2个或多个相同维度的数组;合并则相反;折叠是增加数组的维数;平滑则是相反。 在ELF文件中,全局变量和常量字符串存放在数据段中,反汇编工具可以轻易查找到字符串与代码之间的引用关系。在软件破解中,通过一些字符串提示可

流媒体技术发展现状

第一章流媒体技术的现状与发展 流媒体的发展过程 1.1.1 现有视频格式概述 影像格式(Video) 日常生活中接触较多的VCD、多媒体CD这些都是影像文件。 大量图像信息,同时还容纳大量音频信息。所以,影像文件的容量往往是非常大的。 1.1.2 VOD视频点播技术 视频点播技术的出现,是视频信息技术领域的一场革命,其巨大的潜在市场,使世界主要发达国家都投入了大量的资金,加速开发和完善这一系统。 1.1.3流媒体技术的出现 流媒体技术的出现,正好弥补了VOD技术的不足之处。 1.2流式传输的格式及特点 1.2.1流媒体能为我们做什么 流媒体的定义很广泛, 后放上网站服务器,让用户一边下载一边观看、收听,而不需要等整个压缩文件下载到自己机器就可以观看的视频/ 持的某种特定文件格式:压缩流式文件,它通过网络传输,并通过个人电脑软件进行解码。 1.2.2 流媒体技术、格式纵览 流媒体给网民们带来了巨大的影响,曾几何时,如果需要下载一部VCD格式的影片,大小约为650M,宽带的今天也需要下载3个多小时。如果影片采用流媒体技术来进行压缩,只需要100M,并且用户可以边看边下载,整个下载的过程都在后台运行。最大的优点,就是不会占用本地的硬盘空间。其实流媒体采用的是有损压缩,就好比我们常说的MP3,因此在音影品质上有所差异。

1.2.3流式视频格式 前边提到过视频格式,现在再来说一下流式视频格式。 目前,很多视频数据要求通过Internet来进行实时传输,前面我们曾提及到,视频文件的体积往往比较大,而现有的网络带宽却往往比较“狭窄”。客观因素限制了视频数据的实时传输和实时播放,于是一种新型的流式视频(Streaming Video)格式应运而生了。这种流式视频采用一种“边传边播”的方法,即先从服务器上下载一部分视频文件,形成视频流缓冲区后实时播放,同时继续下载,为接下来的播放做好准备。这种“边传边播”的方法避免了用户必须等待整个文件从Internet上全部下载完毕才能观看的缺点。到目前为止,Internet上使用较多的流式视频格式主要是以下三种: 1.2.4流式传输的特点 流媒体是一种可以使音频、视频和其它多媒体能在Internet及Intranet上以实时的、无需下载等待的方式进行播放的技术。流媒体文件格式是支持采用流式传输及播放的媒体格式。流式传输方式是将动画、视音频等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视频服务器向用户计算机连续、实时传送。在采用流式传输方式的系统中,用户不必像非流式播放那样等到整个文件全部下载完毕后才能看到当中的内容,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用相应的播放器或其它的硬件、软件对压缩的动画、视音频等流式多媒体文件解压后进行播放和观看,多媒体文件的剩余部分将在后台的服务器内继续下载。 1.3 流媒体系统的组成 流媒体系统包括以下5个方面的内容: 1. 编码工具:用于创建、捕捉和编辑多媒体数据,形成流媒体格式 2. 流媒体数据 3. 服务器:存放和控制流媒体的数据 4. 网络:适合多媒体传输协议甚至是实时传输协议的网络 5. 播放器:供客户端浏览流媒体文件 这5个部分有些是网站需要的,有些是客户端需要的,而且不同的流媒体标准和不同公司的解决方案会在某些方面有所不同。

FMS流媒体服务器设置

FMS流媒体服务器设置 众所周知,Macromedia Flash Communication Server和Macromedia Flash Player组合为视频会议应用提供了令人激动人心的可行性。在硬件的选择和软件参数设置上面依然是很繁重的和不可思议的。开发人员时常需要处理声音同步,画面突然定格以及延迟问题。甚至是经验丰富的Macromedia Flash开发人员,开发一个高质量的以Flash技术为基础视频会议应用也成为一个挑战,因为要面对眼花缭乱的摄像设备,网络环境和软件设置。 然而,当今很多的Flash Communication Server应用中,客户需要使用Flash技术来创造出高质量的视频会议系统。2004年,在为客户们开发这一类项目期间,我们对宽带交互视频应用的性能优化方面作了重要的研究,我们的目标是,在视频质量与音频质量之间找到一个好的平衡,限制CPU和带宽的占用,以减少跳帧、延迟和声音不同步等问题。我们很高兴将我们的发现以白皮书的形式推荐给Flash开发员社区 https://www.360docs.net/doc/6a8032542.html,在Flash Communication Server开发领域是被公认的专家级的领导性公司。我们世界级的团队创造了很多的方案将那些限制变成可能。嵌入式开发,实时多用户模拟,快速的原型开发和实时商务协作应用方面,都是我们专攻的领域。 很多运行在桌面电脑上的视频会议应用在CPU占用和带宽上都非常的消耗资源。为了得到一个优化的结果,需要在视频会议应用的视频音频质量和资源消耗上面发现一个平衡点,同时不会出现跳帧,停滞,或者音频不同步等现象 硬件选择上的捉襟见肘和不恰当的软件设置经常会造成不愉快的视频会议体验,而且那么多复杂的选项看上去创造出一个高质量的视频会议体验几乎是不可能的,即使是提供了最好的开发工具。这使客户和开发人员都很气馁,可以确信甚至是在当今的技术条件下,视频会议应用也很难达到不同人群对丰富的音频和栩栩如生的视频的要求 优化硬件设置和软件设置是明智的选择,但是也会造成下面三个结果,要么是一个小故障不断的应用,要么是一个根本无法使用的应用,和一个让人感动的满足客户期望的高质量应用。在开发视频会议应用过程中我们采用了Macromedia的技术,在https://www.360docs.net/doc/6a8032542.html,,我们为客户的视频协作项目花费了大量的时间来决定最好的选择和设置。我们通过在Flash开发员社区做出的分享,希望能够帮助更多的高质量的视频应用在将来成为现实 尽管在使用Flash技术实现的视频会议应用中,Flash Communication Server扮演了至关重要的角色,但是它主要的是起到了视频会议中从一个客户端到另外一个客户端数据流的中继器的作用。在我们的测试环境中,我们注意到即使是相当一般的服务器硬件配置,例如只有一个2.8GHz的奔腾4 CPU和512M内存的系统,在专业版许可的限制下也能够容易的胜任视频会议的环境需要。 对于视频会议的限制,主要的问题存在于客户端,因为在客户端的电脑有大量要处理的工作。当发布一个流的时候,客户端机器必须采集视频和音频数据,进行编码,然后通过网络将数据发送到服务器上,所有的这些都是实时的。并且在很多的视频交互环境中,同一个客户端机器需要将其他参与者发布的流下载到本机,进行解码,然后通过屏幕和扬声器或者耳机呈现出来,所有的这些都是实时进行,或跟实时非常接近。因此我们将优化工作的焦点完全放在客户端电脑上面。 根据各种客户需求,对一个应用的作出硬件的配置和建议是开发人员应当具备的能力。然而,我们发现挑选对视频会议应用具有影响的硬件非常的复杂。即使你正在开发一个基于Web 的视频会议应用,这个应用不对客户端硬件作任何设置,这也可能将对发现一个最小化的配置需求有帮助,对期望的客户端电脑配置和网络设置方面也是有帮助的。 我们的目标是作出有效的硬件选择,即达到高质量的音频视频流效果,又使客户端的CPU 和网络负担降到最小。在测试期间,我们发现CPU的高负载和低性能有很大的关系,由于

流媒体技术在电大远程开放教育中的应用

流媒体技术在电大远程开放教育中的应用 张鲁斌 (吐鲁番广播电视大学,新疆吐鲁番838000) 摘要:随着internet 教育应用的深入发展,大数据量的多媒体教案资源在网上的传输显得越来越重要和迫切。如何应用新技术为电大开放教育教案服务已成为广大电大教育工作者所关注的课题。我们只有在充分认识流媒体技术的基础、流媒体系统的构成、流媒体的主要技术方案、流媒体教案资源开发和流媒体技术在电大开放教育中的应用方式等问题的基础上,才能把流媒体技术更好地应用到开放教育的教案中去。 关键词:流媒体技术;电大;开放教育;应用 随着国际互联网的迅速普及,计算机正在经历着一场网络化的革命,人们不在只满足于文字和图片的网页内容,而是希望在网上看到形式多样的节目。在教育领域,通过互联网传送音频、视频信号来实现网上在线课堂教案,使学员和教师虽然远隔千里但却有身临其境、近在眼前的感觉,是学习者尤其是利用业余时间学习的人所期盼的。网上教案这种形式使得身处各地的学生都能得到一流教师的指导,且无时间、空间、地域的限制,是真正意义上的“远程教育”。因此,以计算机多媒体技术和计算机网络技术为基础的现代远程教育在世界各地的发展势头如火如荼。但是,由于传统多媒体手段具有大传输量的特点而与当今慢速的网络传输环境发生了矛盾。虽然高速的网络建设和使用者个体拥有成本等原因,短期内还不能大范围普及。“流”技术的出现使得在网络上传输多媒体内容成为可能,网上在线课堂得以实现。然而,当前的电大开放教育中教案资源建设却依然存在一对矛盾。一方面是网上多媒体教案资源的不足,另一面是众多的多媒体教案资源无法上网,究其原因可以归结为网络带宽始终有限。面对有限带宽,实现远程教育视频、音频、动画、多媒体课件和网络课程传输的最佳解决方案就是流媒体技术的应用。 一、流媒体的基础特征与结构 1、流媒体的基础概念 流媒体是从英文Streaming Media 翻译过来的。它是一种可以使音频、视频和其它多媒体能在Internet 及Internet 上以实时的、无需下载等待的方式进行播放的技术。流媒体文件格式是支持采用流式传输及播放的媒体格式。流式传输方式是将动画、视音频等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视频服务器向用户计算机连续、实时传送。在采用流式传输方式的系统中,用户不必像非流式播放那等到整个文件全部下载完毕后才能看到其中的内容,而是只需要经过几秒或几十秒的启动延时即可在用户的计算机上利用相应的播放器或其它的硬件、软件对压缩的动画、视音频等流式多媒体文件减压后进行播放和观看,多媒体文件的剩余部分将在后台服务器内继续下载。 2、流媒体的基本特点 (1)启动延时大幅度地缩短 用户不能等待所有内容下载到硬盘上才开始浏览。我们曾经用10M 到桌面的校园网络来浏览新丝路宽频电影,无论是上班时间还是晚上,速度都相当快。一般来说,一个45 分钟的影片片段在一分钟之内就显示在客户端上,而且播放过程一般不会出现断续的情况。另外,全屏播放对播放速度几乎无影响,但快进、快倒时需要时间等待。 (2)对系统缓存容量的需求大大降低 由于Internet 是以包传输为基础进行断续的异步传输,数据被分解为许多包进行传输,动态变化的网络使各个包可能选择不同的路由,故到达用户计算机的时间延迟也就不同。所以,在客户端需要缓存系统来弥补延迟和抖动的影响和保证数据包传输顺利的正确,使媒体数据能连续输出,不会因网络

相关文档
最新文档