基于JMF的内外网多媒体数据传输技术


问题的提出1 随着网络与多媒体技术的不断发展,多媒体数据传输技 术的应用日益广泛,已越来越多地应用到网络聊天、远程教 育、视频会议、在线游戏等软件中。公司Sun Microsystems 开发的()为多媒体数据JMFJavaTM Media Framework API 的实时传输与控制提供了许多功能强大的接口,使编程变得 容易,我们还可以结合高性能、高可靠性及跨平台的优Java 势,开发出可以高效、稳定地运行于的多媒体数据传Internet 输软件。然而,网络环境复杂多变,有些主机可能处于防火 墙后,有些主机可能没有全球唯一的地址而只有一个内部IP 保留地址该主机与外部网络连接时,其地址要经过即(NAT 网络地址转换),对这些主机,Network Address Translation 外部的主机不能直接访问到他们(为了表述简单,本文将有 全球唯一标识地址的主机称为外部主机,并称其所处的网IP 络为外部网,把需要经过转换或防火墙内部的主机称为NAT 内部主机,称这类主机所处的局域网为内部网)。目前的许 多多媒体传输软件仍没有解决内部主机与外部主机之间通信 的问题,例如广为使用的,虽然文本传输能够跨越此限QQ 制,但文件和音频、视频的传输遇到该情况仍会出错而无法 工作。 对于面向广大学生和家庭用户的多媒体数据传输软件, 软件的使用者很可能在使用内部网的宿舍、家庭和网吧上 网,因此,跨越防火墙限制解决多媒体数据在内外部/NAT 网主机之间以及处于不同内部网的主机之间的双向通信问题 显得尤为重要,这是多媒体数据在网络中传输的关键技术之 一,也是本文研究的重点。 简介2 JMF 是公司开发的一个可选软件包,JMFSun Microsystems 它扩展了平台的多媒体功能,能够捕获、播放、转换J2SE 包括音频和视频在内的多种媒体格式,可以将音频、视频和 其它基于时间的媒体整合到应用程序和小程序中,为多Java 媒体开发者提供了一个强大的工具箱,使开发者不用关心底 层复杂的实现细节,就能够编写出功能强大的多媒体程序, 开发出可扩展的、跨平台的应用软件。 可以分为两部分:和,前者JMFJMF APIJMF RTP API 主要用于捕获、处理、存储和播放媒体,后者主要用于在网 络上发送和接收流媒体。本文研究的重点是多媒体数据的传 输问题,因此关注于后者——。JMF RTP API 提供了对实时传输协议(JMF RTP APIRTPReal-time )的支持。此协议是由开发的,Transport ProtocolIETF1996 年成为正式文档,适用于、视频等实时媒体传送的RFCVoIP 协议。为交互式音频、视频等具有实时特性的数据提供RTP 端到端的传送服务。与传统的注重高可靠性数据传输的运输 层协议相比,它更加侧重的数据传输的实时性。一般是在 之上运行协议。如果支持它的网络能提供组播功UDPRTP 能,则也可用组播将数据送给多个目的用户。用会RTPJMF 话管理器在发送端和接收端建立会话连接并协调会RTPRTP 话,同时跟踪会话的参与者和被传输的流,并从本地参与者 的角度维护会话状态。 内外部网上主机间通信问题的解决思路3 通常的防火墙配置只接收内部网对外的请求或防火墙信 任的外部通信,而多媒体数据传输呼叫可以来自任何未知或 未经请求的一方。由于这类呼叫不属于任何一类内部通信请 求,因此会被阻塞于外。而对于经过的主机来说,由于NAT 外部无法找到该主机,使得呼叫无法进行。也就是说,在外 部主机请求向内部主机发送数据或要求内部主机向外部传送 数据时,请求无法通过防火墙或执行转换的服务器或路Nat 由器而到达内部主机,但内部主机向外部主机的请求却不受 阻碍。 这看似一个无法解决的问题,但经过研究发现,虽然呼 叫的方向受到限制,但数据传输的方向是与呼叫的方向无关 的。也就是说,一旦呼叫得到应答,连接建立,双方的数据 基金项目:教育部高教司重点攻关项目“现代教育支撑平台研究与 开发” 作者简介:傅骞(—),男,博士生,研究方向为计算机辅 1978 助教育;曲朝霞,硕士生 收稿日期:2003-05-09 : E-mail fredqian@263.net 基于的内外网多媒体数据传输技术JMF 傅骞,曲朝霞 (北京师范大学信息科学学院,北京) 100875 摘要: 随着网络的不断发展,多媒体传输技术的应用越来越广泛。但目前的多媒体传输普遍存在着内外网通信无法进行或受到某些限制的 问题,该文提出了该问题的一种解决思路,并描述了其在中的具体实现。JMF 关键词: 网络地址转换实时传输协议多媒体JMF; ; ; Multimedia Transport Technology Based on JMF FU Qian, QU Zhaoxia (College of Information Science, Beijing Normal University, Beijing100875) 【Abstract】With the development of Internet, the transport technology of multimedia is being used more and more widely. But there is still one problem existing in most applications nowadays: the data transmitting from the outer net to the inner net is restricted. In this article, a method for this and its implementation in JMF are described. 【Key words】JMF; NAT; RTP; Multimedia 第30卷 第11期 Vol.30 № 11 计 算 机 工 程 Computer Engineering 2004年6月 June 2004 ·多媒体技术及应用· 中图分类号:TN919.8 文章编号:1000— 3428(2004)011 — 0141— 02 文献标识码:A — 141— 传输就可以是双向的。因此,由内部网上的主机先呼叫外部 网上的主机,外部主机应答,从而建立连接,对双方主机而 言,利用这个连接既可用于收,也可用于发,还可既收又 发,有必要的话,还可以用这种方法在两台主机间建立两个 连接通道,分别用于收和发,例如对实时传输的音视频,就 应该分别有一个专门用于收的连接和一个专门用来发的连接 来处理连续不断的数据流。这样一来,外部主机与内部主机 之间的数据通信问题就解决了。但一定要满足这个前提:内 部主机先向外部主机发出呼叫。 为了满足这一前提,必须有一台服务器,记录所有可能 建立连接的主机的信息。每台内部主机都与该服务器有一个 连接,当外部主机需要呼叫内部主机时,它只要知道该主机 在服务器上的信息,由服务器通知该主机向外部主机发出呼 叫请求,以建立连接。 图是外部主机请求与内部主机建立连接的过程。1AB 图外部主机请求与内部主机建立连接的过程 1 AB 若是两台主机位于两个不同的内部网中,则他们之间的 直接连接是不可能的,不仅它们之间的连接要通过服务器建 立,它们之间的数据传输也必须通过与它们分别相连的转发 服务器为中间桥梁,将他们向对方发送的数据转发出去。也 就是说,所有由一个内部网主机发向另一个内部网主机的数 据,都先发到转发服务器,由转发服务器代为转发(图 )。由于使用转发服务器会有一定的延迟,同时为了减轻2 转发服务器的负担,联系双方只要有一方处于外部网,就应 如图那样为之建立直接的连接而不经转发服务器。1 建立连接建立连接 内部网上的主机A 防火墙或 防火墙或 转发服务器 Nat设备Nat设备 内部网上的主机B 图不同内部网的主机之间连接的建立2 内外部网间数据通信在中的具体实现4 JMF 基于协议为流媒体的传输提供了一套方便的接JMFRTP 口。的体系结构主要由以下个部分构成:会JMF RTP API4 话管理器,数据,事件,控制。内外部网间数RTPRTPRTP 据传输问题的解决主要依赖于会话管理器的类RTPManager 的()方法中参数的构建。initializeRTPConnector p0 是一个抽象的接口,需要对其中的方法一RTPConnector 一实现,同时根据内外部网通信的需要,建立相应的方法和 属性,才能完成两台主机间会话的初始化。这个接口的实 现,是流传输的基础,也是解决内外部网通信的关键。RTP 根据前文所述思路,不妨为的实现构建两个RTPConnector 类:用于外部网上的和用于内部网RTPServerSocketAdapter 上的,这两个类借助基于的数据RTPClientSocketAdapterUDP 报套接字建立连接并传送数据。下面是这两个类中与建立连 接有关的部分代码,其它对接口中方法的实 RTPConnector 现在此略去不提。 代码段(用于外部网上主机等待内部网上主机与之主1 动建立连接并收发数据流):RTP public class RTPServerSocketAdapter implements RTPConnector{ DatagramSocket dataInSock, dataOutSock, ctrlInSock, ctrlOutSock; DatagramPacket init_data_packet, init_ctrl_packet; ⋯⋯各变量初始化(略)⋯⋯/* */ public void initServerSock(){ 等待来自呼叫方数据端口的数据报/* */ dataOutSock.receive(init_data_packet); 利用收到的数据报绑定连接,使该发出的数据报能够/* socket 发到对方socket */ dataOutSock.connect(init_data_packet.getAddress(),init_data_ packet.getPort()); 等待来自呼叫方控制端口的数据报/* */ ctrlOutSock.receive(init_ctrl_packet); 利用收到的数据报绑定连接,使该/* 发出的数据报能够发到对方socketsocket */ ctrlOutSock.connect(init_ctrl_packet. getAddress(),init_ctrl_packet.getPort()); } ⋯⋯其它的属性、方法和内部类/*** (略)⋯⋯ ***/ } 代码段(用于内部网上主机主动呼叫外部网上主机与2 之建立连接并收发数据流):RTP public class RTPClientSocketAdapter implements RTPConnector{ DatagramSocket dataInSock, dataOutSock, ctrlInSock, ctrlOutSock; DatagramPacket init_data_packet, init_ctrl_packet; ⋯⋯各变量初始化(略)⋯⋯/* */ public void initClientSock(){ 向外部网发送数据,使其接到数据后能向本套接字发数据/* */ dataInSock.send (init_data_packet); 向外部网发送数据,使其接到数据后能向本套接字发控制数/* 据 */ ctrlInSock.send (init_ctrl_packet); } ⋯⋯其它的属性、方法和内部类(略)⋯⋯/*** ***/ } 准备建立连接的内、外部网上的主机分别构建 、对象,外部RTPClientSocketAdapterRTPServerSocketAdapter 网上的主机先调用函数,等待来自内部网的initServerSock() 数据,接着内部网的对象调用函数,根据已initClientSock() 知的地址和端口号,向外部网上的主机发送数据,外部网上 的主机收到来自内部网的数据包后,利用数据包中携带的地 址和端口信息,将接收到数据的与此地址和端口绑Socket 定,之后便可用此向对方发送数据。内外部网间主机Socket 的通信问题由此得到解决。 建立连接的过程如图。3 另外,由于协议的不可靠性,类的UDPDatagramSocket 对象在发送和接收数据包时可能会有丢失和错误,因此,可 用协议辅助检查连接建立过程中传输信息是否准确收TCP 到,若没有,则重传,以确保双方连接准确建立。 (下转第页)167 — 142— 外部主机A 内部主机B 服务器 1、我需要连接主机B 2、请与主机A建立连接 3、我是主机B,你我之间的连接建立了 4、数据传输通道建立 远程监控系统中,无论是服务器还是客户端,都需要解 决线程同步和通信问题。视频压缩、视频显示、视频数据发 送需要访问相同的缓冲区,串口多种数据的发送和串口接收 也需要访问相同的缓冲区。当两个以上的线程同时访问同一 个缓冲区时,就可能产生读写数据错误问题,所以必须实现 线程处理的读写同步问题。系统利用一些全局变量和事件来 解决现成的通信与同步问题。 小结6 目前,数字化网络安防系统正在以前所未有的速度向前 发展。当然,楼宇自控领域中的数字化安防系统的理想解决 方案是直接将音视频的采集压缩功能集成在摄像机中,这/ 样,从摄像机出来的数据直接就是数字数据,可以实现更远 距离、更简单方便的多媒体数据处理和数据传输。但是,这 样集成的代价比较高,目前还不具有普遍的适用性。 本系统在楼宇控制系统原有设备的基础上,充分利用了 的技术优势,实现了在低成本、低带宽条件下,获MPEG-4 得较好的图像监控质量和用户交互性,因此,具有较强的实 用性和通用性。随着计算机技术、音视频技术、控制技/ 术、通信技术的发展,数字化网络安防技术在楼宇自控系统 中的应用前景将越来越广阔。 参考文献 张益贞刘滔实现编解码技术北京1 , . Visual C++MPEG/JPEG[1]. : 人民邮电出版社 , 2002-11 潘爱民王国印译技术内幕北京:2 Kruglinski D J. , . Visual C++ [4]. 清华大学出版社, 2002-02 柴雅静数字视频局域网监控系统的设计与实现计算机与信息3 . . 技术 , 2000,(10) 宋玉峰周泓远程数字视频监控系统的设计与实现计算机工4 , . . 程: , 2002, 28(8)238 李煜译多媒体数字压缩原理与标准北京电子工5 Gibson J D. . . : 业出版社, 2000-08 沈承东谭庆平基于的数字视频监控系统的设计与实现6 , . MPEG4. 计算机工程:, 2002, 28(8)235 段军棋蒋丹远程视频监控系统的设计与实现电子科技大学7 , . . 学报:, 2002,31(5)523 (上接第页)122 图算法执行时间的对比图算法返回规则数量的对比2 3 总结及展望5 本文的算法同以前的算法有很多不同之处,它通过维护 几个数组,而不是反复读取数据库来挖掘聚类关联规则,大 大提高了算法的运行速度,减小了最终得到的关联规则的数 目,很有实践意义。本文只讨论了左部有两个数值属性的关 联规则的聚类问题。根据这个思路,很容易把这个算法扩展 到左部属性为任意维的情况。如果是多维则先形成二维矩, 形集,再在此基础上生成三维立体集合,直到m维的多维体 集合。本文中使用的是等宽划分的方法,接下来可以考虑使 用等深划分或基于熵的划分对数据进行分段。 参考文献 1 Agrawal R, Imielinski T, Swami A. Mining Association Rules Bet- ween Sets of Items in Large Databases. Washington D. C: In: Proceed- ings of the ACM SIGMOD Conference on Management of Data,, 1993 2 Agrawal R, Srikant R. Fast Algorithms for Mining Association Rules. Santiago, Chile: In: Proceedings of the 20th International Conference on Very Large Databases, 1994: 487-499 3 Srikant R, Agrawal R. Mining Quantitative Association Rules in Large Relational Tables. Montreal,Canada: In: Proceedings of the ACM SIGMOD International Conference on the Management of Data, 1996 张朝晖陆玉昌张钹挖掘多值属性的关联规则软件学报4 , , .. , 1998,9(11) :801-805 5 Fukuda T,Morimoto Y, Morishita S, et al. Data Mining Using Two- dimensional Optimized Association Rules: Scheme, Algorithms and Visualization. Montreal,Canada: In:Proceedings of the ACMSIGMOD International Conference on Management of Data,1996: 13-24 — 167— ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ (上接第页)142 结束语5 目前上实现多媒体数据传输的软件很多,但具有Internet 跨平台能力并能解决内外部网间主机及不同内部网间主机通 信问题的软件还是凤毛麟角。本文提出了在中解决内外JMF 部网通信问题的一种思路,并描述了其具体实现。相信随着 公司对的不断改进,该技术的应用也将会越来越广SunJMF 泛。 参考文献 1 IETF RFC 1889, RTP: A Transport Protocol for Real Time Applica- tions. http://www.kblabs. com/lab/lib/rfcs/1800/rfc1889.txt.html.2003- 5-20 2 JavaTM Media Framework API Guide. http://java.sun.com/products/ java -media/jmf/.2002-5-21 0 20 40 30 20 10 0 Minsupp*100 T(s) 0 10 20 30 20 10 0 Minsupp*100 N*103 0 0 0 0 创建RTPServerSocketAdapter对象 创建RTPClientSocketAdapter对象 dataOutSock.receive dataOutSock.connect ctrlOutSock.receive ctrlOutSock.connect dataInSock.send ctrlInSock.send 外部主机 内部主机 调用initServerSock()函数 调用initClientSock()函数 向内部主机收发数据 向外部主机收发数据双向数据通讯 图3 JMF中内外部主机连接建立的过程
还剩2页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享pdf获得金币 ] 3 人已下载

下载pdf