《现代电子技术》2006年第23期摘录:毛剑波等:一种JMF数据源多路
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
毛剑波等:一种JMF数据源多路应用解决方案法中根据监听事件,调用Pw的initialize方法,创建并显示播放框架窗口,并启动播放器开始多媒体的播放。需要指出的是,利用可克隆数据源cloneableDS进行的本地播放,是将他克隆生成的数据源应用于多路发送和实现发送本地监视的前提。实际应用中,就是在进行多路发送之前,必须启动上述的本地播放,而在关闭本地播放之前,要先关闭多路发送及本地监视。n翮厂翮木地播放usB>l捕获数掂源的DSI<一声F从cloneableDS产。生插放器player构造播放框架窗川PW,设置player控制器崎听器并启动player]‘作多路发送(含发送的本地监视)从cloneableDS克降产。}数据源clonedDS从clonedDS产生处理器processor,配置并启动processor的ll作i:1:1processor对兜隆数据源进行干Ij应处弹,,’=生输…数据源,用j—RTP{岢理器产吖£媒体发送流,实现局域刚发送图1JMF、数据源多路应用流程示意(2)局域网多路发送局域网视频电话(会议)应用系统的最终目的是实现局域网上音视频媒体的相互传送,而且为组成由多人参加的视频会议,本地数据源必须应用于多路发送。JMF提供了各种方法去实现、管理RTP(实时传输协议)媒体流的发送与接收,而不管采用哪种方法,都要先利用JMF数据源,生成所谓的处理器processor,然后对输出RTP编码的数据,配置该处理器,最后从该处理器输出RTP编码数据源,用于JMF的会话管理器(SessionManager对象)或RTP管理器(RTPManager对象),产生媒体发送流,并实现局域网上的发送和管理。当有一路新的发送应用需要实现时,首先利用前面生成的可克隆数据源cloneableDS,克隆数据源clonedDS,用于生成处理器processor,完成相关配置及媒体格式控制之后,从processor输出RTP编码数据源outputDS,JMF会话管理器或RTP管理器使用该数据源并针对其需要发送的每一道(Track)数据,分别形成发送流,并实现局域网上发送。这些发送流的目标IP地址对该路应用来说是相同的,并可在相应的应用通信控制机制中获取(例如,可通过产生的套接字对象获取邀请者的IP地址),但给各个发送流配置的端口号则在全部多路发送应用中是惟一的。在应用系统开发中,可采用专门的客户服务器来管理端口分配,实现任意两个或多个客户之间的、任意时刻的视频会话开关自由。通常采用的方法是,对每个客户分配若干连续端口号,其数量可为待传送数据源中所含全部道数的Rn2~3倍,且与分配给其他客户的端口号不重叠。以下给出了一路传送应用的代码实现,其输入参数为该路传送的目标IP地址和基本端口号。publicsynchronizedintcreateTransmitStream(StringipAddress,intportBase){DataSourcedsOfStream—null:RTPManagerrtpMgrs[];SessionAddresslocalAddr—null.destAddr—null:InetAddressipAddr=null;SenDStreamsendStream=null;dsOfStream=createProcessor(ipAddress);//if(dsOfStream一一null)return0;PushBufferDataSourcepbds一(PushBufferDataSource)dsOfStream;PushBufferStreampbss[]一pbds.getStreams();rtpMgrs—newRTPManager[pbss.1ength];intport;for(inti--0;i<pbss.1ength;i++){try{rtpMgrs[i]一RTPManager.newlnstance();localAddr—newSessionAddress();port—portBase+2*i;iDAddr—InetAddress.getByName(ipAddress);destAddr—newSessionAddress(ipAddr,port);//yirtpMgrs[i].initialize(10calAddr);rtpMgrs[i].addTarget(destAddr);sendStream—rtpMgrsri].ereatesendStream(dsOf—Stream。i);sendstream.start();}catch(Exceptione){System.out.println(e.getMessage());return0;}}returnpbss.1ength;、·(3)发送本地监视数据源的本地播放可以监视媒体的捕获效果。但实际应用中也希望能监视从本机发送出去的RTP编码音视频媒体,即实现发送的本地监视。此方案采用向本机发送一路RTP编码数据源的方法,可将解决发送本地监视问题所需要的代码量最小化。当要求打开发送本地监视功能时,只要使用本机IP地址(可通过InetAddress类的静态方法getI。ocalHost()取得本机名,再用getHostAddress()获得本机的IP地址)及固定起始端口号参数,去实现新的一路传送即可。应用系统的媒体接收部分收到相应的一路来自本机的媒体流,经接收合并后取得相应的数据源,再交给应用的播放部分进行播放。可见,其视频处理、传送、接收和播放,不需要增加任何附加的代码开销,并可自由打开或关闭。3结语本文提出的JMF数据源的多路应用方案,以可克隆数据源的本地播放为出发点,采用克隆数据源生成处理器,形成发送流,实现多路发送,而采用向本机发送一路媒体流的方法,则可在充分共享代码的条件下,实现发送媒体流的本地监视。本方案简单规范、稳定可靠,可满足基于JMF的局域网视频电话(会议)系统开发需要。(下转第62页)
阅读此文(图):
点击此处在线翻阅