java实时视频传输

上传人:痛*** 文档编号:65423471 上传时间:2022-03-23 格式:DOC 页数:7 大小:122.50KB
收藏 版权申诉 举报 下载
java实时视频传输_第1页
第1页 / 共7页
java实时视频传输_第2页
第2页 / 共7页
java实时视频传输_第3页
第3页 / 共7页
资源描述:

《java实时视频传输》由会员分享,可在线阅读,更多相关《java实时视频传输(7页珍藏版)》请在装配图网上搜索。

1、1 1利用JAVA实现局域网的跨平台实时视频传输吴良斌(福建信息职业技术学院福州,350003 )摘 要:本文首先分析了在局域网中视频传输的特点和模型及存在的问题,并针对不同的平台,提岀一种通用的实时视频传输的解决方案。那就是在媒体框架基础上进行扩展,实现一个与平台无关的基于 RTP/RTCPRTP/RTCP 协议的流式媒体传输模型的系统设计,由于流媒体传输系统本身是一个复杂和广泛的研究领域,它本身处于不断改进的过程中。基于此在本文的最后阐述了今后流媒体可能的研究方向。关键词:JAVAJAVA;客户/ /服务器;RTP/RTCPRTP/RTCP ;实时视频传输;JMFJMF绪论目前在局域网内部

2、实时传输视频已经得到广泛应用。且以传输视频的局 域网大多数是有线局域网,主要因为有线局域网技术成熟,传输速度快,稳 定性好。但在视频数据量大时,也会出现工作不稳定、数据堵塞、甚至于严 重的延迟现象。要能实现视频传输与平台的无关性,我们首先要知道在局域 网中视频传输的典型模式。在局域网中视频传输采用的是服务器/客户机模式,一个视频系统的功能模块如下图所示,它包括5 个功能模块:视频采集和视频显示:视频采集设备负责将视频信息输入计算机,如数 码摄像头等。而视频显示负责播放视频信息,如一般的显示终端。编码和解码工具:编码软件负责将视频采集设备传送过来的视频信号编 码成流媒体格式,而解码软件与之相反负

3、责将媒体数字信号转化成终端可识 别的信息。视频压缩和视频解压:视频媒体数据量巨大必须将编码后的视频媒体数 据进行高效的压缩,然后将压缩后的数据在网络上传输。其相应的解压模块 负责将数据还原成为原来的流媒体格式。传输协议:流媒体数据由于自身的特点,在网络上传输时将采用和过去 诸如文字,静态图像等不同的网络协议来进行传输。传输网络:一般来说视频传输可以在现有任何网络上进行传输,更高的带宽将有利于视频传输效率的提高,也能够保证其播放质量。实时视频传输工作流程在上图中,可以看到作为整个传输模式的底层,传输协议有着至关重要的作用。在本文实现的方案中主要采用的是RTP/RTC 协议,该协议是由 IETF为

4、视音频的实时传输而设计的传输协议。当前的视频传输系统存在的问题主 要有:可扩展性差、格式不统一等。我们都知道 JAVA 具有平台无关性的特点,对此本文利用 JMF (JavaMedia Framework)的多功能并对其原有接口加以扩SUNSUN 公司提出的 JMFJMF 多展,就可以实现基于 RTP/RTC 啲流媒体传输模型。1 基于 JMSg 构实现 RTP/RTC 传输模型JMF(Java Media Framework) 是 Su 必司提出的 Java 媒体架构,它是对应 Java2 平台标准版(J2SE)的一种可选用的应用编程接口(API) JM 用勺源代码通过 SCSL(Sun 社

5、团源代码许可模式)发布。下面给出本文实现视频传输系统的 结构及其有关的代码。1.1 结构介绍1.1.1服务器:接受多台客户端连接,传送客户端信息VideoServer.java :定义服务器 Socket 和输入输出流ServerFrame.java :定义服务器界面1.1.2客户端:通过服务器,互相浏览视频、收听音频和文字交流RTPTransmit.java :定义 RTP 视音频数据传送RTPReceive.java :定义 RTP 视音频数据接收VFWAuto.java :调用 JMF 视音频设备接口Client.java :定义客户端 Socket 和控制 RTP 传输MainFram

6、e.java :定义客户端主界面和功能1.1.3其他类:服务器和客户端共享包Custlnfo.java :客户端信息类Customer.java :客户端请求包,序列化Msg .java :客户端文字聊天记录1.2关键组件的实现1.2.1 视频、音频设备捕获 在“系统设置”窗口中调用JMF 的设备搜索接口,调用代码如下:VFWAuto.java 部分代码: public VFWAuto() Vector devices = (Vector) Capture Device Ma nager.getDeviceList( nu II).cl on e();Enumeration enurrM =

7、devices.elements();while (enuml .hasMoreElements() Capture Device Info cdi = (CaptureDevicelnfo) enurrM.n extEleme nt();String name = cdi.getNameQ;if (name.startsWith(vfw:)Capture Device Ma nager.removeDevice(cdi);int nDevices = 0;for (int i = 0; i 1) System.err.println(Found device + name);System.e

8、rr.println(Querying device. Please wait.);com.s un .media.protocol.vfw.VFWSourceStream.autoDetect(i);n Devices+;VFWAuto.java 调用了 JMF 的视频设备搜索接口,它返回一个 Vector 数组, 里面存放包含设备信息的Capture Device Info 类对象。获取本地视音频数据public static javax.media.Player player = null;public static MediaLocator audioml = null,videoml

9、=null;DataSource dataSources = new DataSource2;建立混合数据源dataSources0 = Man ager.createDataSource(videoml);dataSources1 = Man ager.createDataSource(audioml);DataSource ds = Manager.createMergingDataSource(dataSources);player = Manager.createRealizedPlayer(ds);建立媒体播放器player.start();Comp orient comp;if (

10、comp = player.getVisualComponent() != null) /comp.setSize(localVideoPanel.WIDTH,localVideoPanel.HEIGHT);localVideoPanel.removeAII();localVideoPa nel.add(comp); localVideoActive=true;1.2.2 视音频数据实时传输 步骤一:建立两个数据源,分别存储音频数据和视频数据。dataSources0 = Man ager.createDataSource(Mai nF rame.videoml);dataSources1 =

11、 Man ager.createDataSource(Mai nF rame.audioml);/videoml 和 audioml 是 MediaLocator 类实例,是主窗口的视频、音频数据地 址DataSource ds = Manager.createMergingDataSource(dataSources);组合视频音频数据,建立新的数据源dsProcessor processor = Manager.createProcessor(ds);利用参数 ds,建立数据处理器 processor步骤二:检查视频数据格式是否合法Format checkForVideoSizes(For

12、mat original, Format supported)int width, height;Dimension size = (VideoFormat)original).getSize();Format jpegFmt = new Format(VideoFormat.JPEG_RTP);Format h263Fmt = new Format(VideoFormat.H263_RTP);if (supported.matches(jpegFmt)width = size.width % 8 = 0 ? size.width : (int)(size.width / 8) * 8); h

13、eight =size.height % 8 = 0 ? size.height: (int)(size.height / 8) * 8);else if (supported.matches(h263Fmt)if (size.width = 128)width = 128;height = 96;else if (size.width = 176)width = 176;height = 144;elsewidth = 352;height = 288;放置视频组件3 3elsereturn supported;return (new VideoFormat(null,new Dimensi

14、on(width, height),Format.NOT_SPECIFIED,null,Format.NOT_SPECIFIED).intersects(supported);返回 Format 类型步骤三:传输视频音频数据private RTPManager rtpMgrs;private String createTransmitter()PushBufferDataSource pbds = (PushBufferDataSource)dataOutput;Push Bufferstream pbss = pbds.getStreams();rtpMgrs = new RTPManage

15、rpbssength;for (int i = 0; i 11 11 1ivfwicrosoft WDN knage Ca|i.审 跡商设备別養襦几骨樹时远 T刖新祓奇宛袁图 4 用户列表及文字聊天界面上,而是应该把流媒体当作一个系统工程,编码、传输、分享、网络以及设 备都是互相联系的一个整体。怎么能在这样一个系统里,最有效地将流媒体 以一种最适合用户终端设备的形式传送给用户,并且不增加服务器和网络负 担,将是能否在流媒体领域的竞争中立于不败之地的根本。参考文献:11 兰茹,卓力小波编码与网络视频传输M.M.北京:科学出版社 ,2005.,2005.22 朱鹏,李春文.基于 RTPRTP 的网络视频传输系统的设计与实现 D.D.计算机工程与应用,2003.,2003.33 钟玉琢,向哲,沈洪流媒体和视频服务器M,M,北京:清华大学出版社,2003.2003.44 李燕灵,马瑞芳,左力.基于 RTP/RTCPRTP/RTCP 的实时视频数据传输模型及实现 D.D.微电子 学与计算机,2005.,2005.作者简介:吴良斌,(1977-),男,福建三明人,助教,研究方向 :网络编 程、网络安全。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!