论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
播放基于Java的QuickTime流媒体系列之一
 作者:佚名     2007-3-14 16:32:48        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

这并不是即将问世的QuickTime for Java book一书的摘录,虽然我希望是的。你看,问题是,在QTJ世界中大多数的我们都一直假定QTJ中的流媒体API已经损坏,我并不是想为此事而掩盖什么。好的,我继续来通过各种各样的人通过不同的技术进行工作的掩盖获取去这样做,但是我不想再来一次。

此外,流媒体冲突的情况似乎特别的糟糕。没有人能得到它的演示代码工作方式――this post to the quicktime-java list 是令许多用户对获取苹果公司的AudioBroadcaster 和DrawableBroadcaster演示工作方式绝望的典型。让事情更糟糕,演示之一依靠一个在QTJ6.1版本中作为退回到原始的GUI提供的已经被取消的GUI预览组件类,提供组件只对Movies ,MovieControllers 和GraphicsImporters ,而不是流式的Presentations ,视频捕捉,或者某些图形美好得像来自多种资源“合成”制作。

所以,官方给出的演示它首先看起来是不会工作,和现在的关键类有冲突(如果在Java 1.4中运行会抛出RuntimeExceptions异常)。预测实际的流式内容和QTJ 6.1看上去会非常糟糕。

令我欣喜,甚至是有点吃惊的是,有报道称流媒体能够在QTJ6.1中工作。在本文章中,我将介绍通过QTJ实现简单的网络广播的基础

需求

QuickTime的流媒体API,在Java中由只可在Mac OS(Classic和OS X)中运行的包quicktime.streaming声明。在QTJ中存在Windows版本的类,但是它们却不能工作

但是,你可以使用Windows版本的QuickTime作为流媒体的客户端,如果在Java中运行并不是关键的,你可获取Darwin Streaming Server,一个开源项目可在Windows 2000 Server 和2003 Server上运行如同在Solaris 9 和 Red Hat Linux 9上一样。

使用QuickTime流媒体最简单的事情就是我在此说明的生动内容。你需要至少一个音频输入设备,如一个内置的麦克风或者一个耳机。当然,拥有一个QuickTime支持的摄像机,如一个iSight,将会更让人印象深刻。

Streaming 是什么,不是什么

给出了术语“流”的含义并不容易明确术语“Streaming”的正确含义。例如,QuickTime长期支持一种“快速启动”的特征――如果QuickTime明确拥有足够的开始播放的资源并且不会用完目前下载速率下的资源一段录像能开始播放――那是一些用户将Streaming 的一种形式弄错了。

自然的,这有它自己的优势:容易创建并且确保了所有的包都到达了客户端。但是真正的 Streaming ,换句话说,Streaming 符合Internet工程工作小组(IETF)的标准,这是一个完全不同的问题,直到QuickTime 5才被支持,并且直到QTJ 6才支持Java。

Streaming 的形式允许服务器控制传输,但很难在实时中保证最优化运行。客户端未下载潜在的大文件,这样的方法是独特的便利的直接广播。事实上,QuickTime的流媒体使用两种“实时”的流媒体传输协议:实时传输协议(RTP)来传输媒体数据包,实时流协议(RTSP)用于控制信息。

RTP使用潜在的有损UDP连接,所以所有的人都有意的忍耐再传输期间的包的丢失。这就意味着客户端需要友好的操作未获取所有数据的视频帧或者音频例子。更好的方法是通过基于TCP/IP的连接,它可以使用不确定的重试(也会因此需要一个不确定的时间)来获取丢失的包。

Presentation和SDP文件

在QuickTime中,流媒体传输等同一个电影――一个电影可以有音轨和视轨,一个元数据的聚集将它们全都联系在一起,此表示会将一些多种的音频和视频流的元数据联系起来。音频和视频你非常喜欢的流媒体种类也是值得关注的,自从某些其他的媒体类型(sprites,Flash内容)被QuickTime支持后并没有操作好失去的包,并不适合作为流媒体传播。

你可能被建议去建立一个流媒体,你会需要创建一个Presentation 并开始它。但是现在呢?最普遍的这样做的方法是创建一个会话描述协议(SDP)文件,将其放入静态工厂方法Presentation.fromFile()。SDP文件以一种适当的简单的文本格式,由RFC 2327和several updates所定义。

我发现这些都是早期的理论而不是实际操作,但是稍后让我们担心的是执行详细信息。这是一个被一些Apple的流媒体使用的例子,在Tim Monroe的QuickTime Toolkit Volume Two中:

v=0
c=IN IP4 224.2.1.2/20/1
m=audio 1000 RTP/AVP 12
m=video 2000 RTP/AVP 101
a=rtpmap:101 H263-1998

以下是每一行的解释:

·v=0:这是SDP的版本号。在这里版本号是0表示在SDP中没有次要的号码。

·c=IN IP4 224.2.1.2/20/1:这是提供在描述中使用的连接的信息。IN

IP4表示是一个IPv4的网络地址。224.2.1.2是地址(注意这是一个多点传输地址,所有许

多的客户端能连接到广播),20是存在时间,1是临近使用的多点传输地址的数量。

·m=audio 1000 RTP/AVP

12:m=这一行定义了用于广播的流媒体。在这里明显的是audio,发送经由到RTP到端口100

0。12在简单的QCELP音频中定义了有效负载类型。这些在RFC 3551中定义了。

·m=video 2000 RTP/AVP

101:这一媒体行定义了一个video媒体流,由RTP传输到端口2000。有效负载类型为95,所

以使用101表示在原始的RFC中视频格式没有给出负载类型,在SDP中替换它会被映射到一个

众所周知的常量中。

·a=rtpmap:101

H263-1998:这个完成键入在前一行指出的动态负载。使用此类型,你会使用一个在96和12

7之间的值(本例中是101),然后用一个字符串命名此负载类型(H263-1998)。

这当然好,但是当在我的例程序中使用它的时候,我只获得了一个视频流却没有声音。所以,我使用了一个很不同的SDP,最初在QTJ的DrawableBroadcaster演示中出现。是的,他们不赞同这么做:

m=audio 2656 RTP/AVP 96
c=IN IP4 239.60.60.60
a=rtpmap:96 x-qt
m=video 2700 RTP/AVP 96
a=rtpmap:96 x-qt

这里最大的不同就是音频和视频都使用了相同的动态负载映射,这并不是针对一个真正的编码器,而是一般的x-qt。在这里胜利的是你能在运行时间上挑选任一QuickTime的音频和视频编码器,而不是在SDP文件中强迫导致。

底侧是这些可以不是由非QuickTime客户端可分析的,反之使用十分标准的和/或者旧的编码器并且在SDP中指定他们使它更像其他的客户端(Real, JMF等)能够操作你的系统。这就是你的SDP文件。现在不要加入一个Presentation。

(T117)


责任编辑:lss
  相关新闻
实现基于 Ajax 的无限级菜单
基于AJAX和JSF打造丰富的互联网组件
基于J2EE架构的模拟考试系统
服务器--开发基于JBoss的J2EE应用
java高级编程:基于JNDI的应用开发
模式:Struts—基于MVC设计模式的JSP
编写一个基于Java Robot类的屏幕捕获工具
实现基于 Ajax 的无限级菜单
基于JMS的数据汇集系统的研究与实现
JSP中基于Session的在线用户统计分析
实现基于 Ajax 的无限级菜单
基于AJAX和JSF打造丰富的互联网组件
Struts 和 Tiles 辅助基于组件的开发(4)
基于JDBC的数据库连接池技术研究与应用
基于JDBC的数据库连接池高效管理策略
实体对象的抽象以及一种基于数据库的实现(2)
实体对象的抽象以及一种基于数据库的实现(1)
基于AJAX技术的DataGrid控件编程
教您怎样部署基于WebSphere的J2EE应用
基于Ajax的应用程序架构设计汇总
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号