您的当前位置:首页正文

流媒体网络直播教学平台的设计与实现

来源:九壹网
维普资讯 http://www.cqvip.com 2006年第12期(总第46期) 中目琵代孝 蓑备 流媒体网络直播教学平台的 设计与实现 尚俊兰 (华北机电学校 山西长治046000) 摘要:本文首先介绍微软最新Window s Media流媒体开发平台的特点。在深入研究Window s Media Encode r 9 SDK开发机制的基础上,根据实际需求,定制开发了一个流媒体缡码嚣部件。并结合Wi ndow s Medi a se r ve r 流媒体服务器实现网络直播教学功能。 关键词:Window s Medi a流编码嚣流媒体服务嚣 随着网络和流媒体技术的发展,大多数院校采用网 Vc++6.0调用Windows Media Encoder 9 SDK中提供 络实时授课和课件点播异步教学过程相结合的教学方 的各种接口开发定制一个流媒体网络教学直播系统。 式,以适应教学规模的扩大,实现教育资源共享,增强 2.Windows Media流媒体系统结构 办学效益。微软公司近年来推出的Windows Media技 一个完整的流媒体系统包括编码内容生成、内容的 术具有方便性、先进性、集成性、低费用等特点,2003 分发和发布以及媒体内容的播放。 年微软推出的Windows Media 9.0系列,在以前版本 的基础上做了很多改进,使得采用这一新技术能够方便 快捷地构造出实用的流媒体网络教学系统。 摧米艇r_’1 犏 jl!I r}_ _.11  聃nd 措sJ-lM并。 r di^} ~ 一、Windows Media流媒体简介 叫 寥橱jIl荐_ l l 端旦 …Windows Media servi ce是Microsoft提出的流 I终端n 信息解决方案,其目的是在Internet和intranet上实 3.编码器模块功能设计 现包括音频、视频信息在内的多媒体流信息的传输。 在对Windows Media Encoder功能进行分析的基 Microsoft Windows Media service是一个能适应多 础上,、结合校园网中的流媒体应用,确定编码器模块主 种网络带宽条件的流式多媒体信息的发布平台,提供包 要完成教师授课实时音/视频采集,屏幕采集,流媒体 括流式媒体的制造、发布、管理和播放的一整套解决方 文件转换功能。根据对模块的功能分析,为了提高代码 案,另外还提供了开发工具包(SDK)供二次开发使用。 的可重用性,将系统最基本的功能抽象为一个Ccap类, 1.Windows Media主要技术特点 在Ccap类中定义以下公共成员函数完成一个抽象的捕获 (1)流媒体的速率范围非常广; 过程。 (2)采用了先进的视频、音频压缩编码方法; 表1 C c a P类成员函数及功能 (3)支持多速率编码文件; 函数 功能 (4)强大的数据同步功能; hitEnc0deO; //卡』J始化编弼l器刈象。 (5)免费的全套解决方案。 SetSource(int type) ,/设 媒体来源 Windows Media Encoder 9功能强大,可以进行 S ̄tProfileO: ,/设髓编码配箭义件 文件格式转换、实况流编码、屏幕捕捉、网络流化等。 StatuCallBack(); ,/编码状态凹凋函数。 通过S DK,可以对编码器软件进行定制(包括界面定 SmrtEncod ̄); ,/编码过程函数。 制、编码任务的计划、批量处理等)。本系统利用 UninitEn ̄odc0, ,/反初始化,释放COM对象指针。 口35。 维普资讯 http://www.cqvip.com 中国嚣{Ic 蓉备 Windows Media Encoder SDK是一套完全基于 件 2006年第12期(总第46期) COM的开发系统"u-SDK提供一系列接口完成特定的功 Profi le文件是一个描述流配置信息的数据集合, 包括帧速率、编码器、缓存窗口、媒体属性(视频宽 度、高度、压缩格式、质量)等,用来控制输出流媒体 文件的属性。对编码器的配置主要是设定编码器的类 型、图像大小、输出流的速率等,最终编码内容的质量 好坏和配置文件有很大关系。Media Encoder 9.0内 置了适合不同应用环境的配置文件,可在 能。在使用接口樊之前,-先初始化coM管理器,结束时 调用CoUninitialize()语句进行反初始化。 创建编码应用程序的基本步骤如下: (1)InitEncode(),功能::初始化编码器对象 //初始化COM库,得到指向IWMEncoder接口的指针 hr=Colnitialize(NULL): hr=CoCreat elnstance(CLSID WMEncoder, NULL,CLSCTXINPROC SERVER,I IWMEncoder, —ID—(VO i d'lc'lc)&pEncoder): (2)SetupSource(int type),功能:建立编码 源或源组 源指的是欲编码的多媒体流,源可以来自音频、视 频、网页和脚本。多个源的集合称为源组,编码过程将 维持这些源之间的同步关系。在以前的版本中,源组必 须至少包含一路音频,但在9.O版本中可以单独编码视 频,因而可以更有效地利用带宽。通过IWMEncSource GroupColl ection接口处理“源组集合”,IWMEnC SourceGroup接口处理 源组”,IWMEncSource处理 各路“媒体流”。在源组中添加不同的多媒体源,可实 现本系统视频采集、屏幕采集、流媒体文件转换功能。 下面以屏幕捕获源为例介绍添加源的过程。 在Encoder 9.0 SDK中,将屏幕捕获作为一个插 件,并专门提供TWindows Media Video 9 Screen 编解码器,用来对屏幕捕获过程进行优化。使用该种方 式捕获的屏幕画面清晰,可以很好地处理位图图像和屏 幕动作,特别适合于软件演示或操作培训I等课程的教 学。 hr=pEncoder一>get—SourceGroupCo1 ect ion (&pSrcGrpCo11); //得到指向源组集合的指针pSreGrpCol 1 hr=pSrcGrpCol l一>Add(CComBSTR(”SG l”), &pSrcGrp); //增加一个名为SG1的源组 hr=psrcGrP一>AddSourC e(WMENC—VIDEO, &pSrcVid); //在源组中加入视频源 h r=P S r c V i d一>S e t I n P u t(C C 0 m B S T R ( ScreenCap://ScreenCapture1 ); //将屏幕捕获作为视频源。 (3)SetupProfi le():选择或设置流编码配置文 36 IWMEncProf i l e中直接选用。若想适合特定的网络应 用,可对其中的全部参数重新定制,此时要使用 IWMEncProfile 2接口对象。 hr=CoCreatelnstance(CISID—WMEncProfi le2, NULL,CLSCTXINPROCSERVER,IID—IWMEnc ———Profi le2,(VOid木木)&g pPro): //创建WMEncProfi le2对象 hr=gpPro一>putVal idateMode(VARIANT—TRUE): —//指明配置在创建之后立刻生效 hr=g—pPr0一put—Profi l eName(CComBSTR (“Custom Screen Capture Profile”)); //提供该配置的文件名 ‘ hr=g—pPro一>put ContentType(17); //设置编码内容,取值为17表示编码内容既包含 视频,又包含音频。 hr=gpPro一>put——VBRMode(WMENC—VIDEO,0, WMENCPVM——NONE); //设置编码模式,可变编码模式或常比特率(CBR) 模式。 hr=g—pPro一>AddAudience(200000,&pAudnc): //增加一个“听众”,通过IWMEncAudienceObj 对象添加目标听众,目标听众即客户端的网络状况设 置。 pAudience一>put—VideoBufferSize(0,5000); //设置编码缓冲区长度为5秒。 pAudience一>put—VideoFPS(0,VIDEOFRAMERATE 'lc 5000); //设置视频帧率,屏幕捕捉设为5fpS,即每秒5 帧。 g_pPro一>Val idate(); //确定配置生效。 hr=pSr eGrP一>put—Pr0fi1 e(CComVariant (g_pPro)): //设定源组使用该配置文件 维普资讯 http://www.cqvip.com 2006年第12期(总第46期) 中目琵代孝=唷袭备 (4)启动编码过程 h r=P E n c o d e r一>P r e P a r e T 0 E n c o d e (VAR I ANT—TRUE): hr=pEncoder一>Start(); ’ (5)StatuCallBack():编码状态回调函数 编码过程是一个异步过程,编码开始后,应用程序 启动一个专门的线程来处理编码过程。通过 IWMEncoderEvent S回调接口捕捉事件,响应编码过 程配置信息及编码状态的改变。 直播平台的构建首先通过编码器对需要直播的视频 内容进行实时编码.然后传递给Windows Media服务 器,实现单播广播。编码器端的广播设置项目为:通过 本机端口广播或推向Windows media服务器。 .(6)通过本机端口将流媒体内容广播的代码实现 hr:pEncoder一>get—Broadcast(&pBrdCst): //仓4建1wMEncBroadcast对象 Hr=pBrdCst一>put—PortNumber(WMENC—PROTOCOL HTTP,1054): //指定使用HTTP协议和空闲端口1054实时广播教 学内容 在实时教学中,可预先在网上发出听课通知,学生 端通过网络教学平台网站实时观看教学内容。客户端也 可直接使用Windows Media Player中的“文件”—— “打开uRL”命令,在URL地址栏内输入MMS://编码器 计算机IP地址:端口号,使用MMS协议接收流式内容。 MMS(Microsoft Media Server)多媒体服务协 议是微软定义的一种流媒体传输协议,用来访问并流式 接收Windows Media服务器中的ASF文件,MMS协议用 于访 ̄Windows Media发布点上的单播内容的协议,如 果想要对点播的内容进行播放控制,则必须使用MMS协 议。 4.配置Windows Media流媒体服务器 在开始传输内容之前,必须启动Windows Media 管理器。对Windows Media Services服务器进行设 置,添加并配置发布点,然后设置发布内容。Windows Media服务器使用.asf文件作为单播或组播源,通过单 播或组播把内容播放到客户或服务器端f{]。 启动Windows Media管理器,选择“单播发布 点”命令,打开如图2所示的“配置单播发布点”对话 框。 图2 配置单播发布点对话框 由于要进行直播,所以在“发布点类型”选项中选 择“广播”。新建一个“广播单播发布点”。根据向导 对话框进行相应设置。关键步骤如下: (1)为广播发布点指定源;广播发布点的源可以 是:Windows Media编码器、远程广播站或远程发布 点。本例选择Windows Media编码器。 (2)为发布点指定别名和路径;路径为指向Wi n— dows Media编码器的URL,默认的路径是MSBD://格 式。端口是7007。本例设置为http://127.0.0.1,端 口为8080。MSBD协议是Media Stream Broadcast Di Stri buti0n的缩写,称为流媒体广播分发协议。 MSBD协议主要用于测试客户端、服务器连接和ASF的质 量,但不是接收并播放ASF内容的主要方法 Windows Media编码器自7.1版本后不支持MSBD协议,改用HTTP 协议。 (3)选择发布方法。设置协议翻转的顺序和为ASF 流创建相应的Asx发布文件。 建好发布点,编码器开始编码后,进行发布点的测 试。配置正确,将会看到相应的视频。为了保证广播质 量,可以对“最大客户数”和“最大带宽”进行设置。 参考文献 【1】肖磊,王志坚.W i ndOWs Me d i a编程与应用 【M】.北京:清华大学出版社 【2】岳峰等.基于流媒体技术的网络视频监控研 究【J】。计算机应用研究,2 O O 5,2 【3】MicI'OS0ft Corpol-atiOil. Windows Medi a Encoder 9.0 sDK开发者文档 【4】白煜等,Wi ndOW S Medi a与Rea l网络流媒体 实例教程【M】.北京:清华大学出版社 口37 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top