CSDN博客

img accesine960
博客专家

java 语音聊天室

发表于2004/7/7 16:08:00  10170人阅读

javaSound的开源实现:http://www.tritonus.org/

最近准备做个语音聊天室,困难很多。以后会在这里不断加入相关资源和开发进展。

语音api原理

一个游戏软件中使用的 语音

  现在已经可以capture到话筒的声音到wav文件了。
  正在准备把捕捉到的流直接播放。用多线程,死机了2次。API很不熟悉。

  总体思路如下:
  1、每隔1秒,把捕捉到的音频流发送到server
  2、然后server把流发给聊天室的多个用户,自己除外。
  3、applet接收到后,播放这个流。

  简单的和 把大象放到冰箱中一样,但是搜索遍了网络,也没有找到一点clue。20040707 tcf

 争取类似下面这个:sample

文字聊天室已经做好了,用的不关闭的socket连接。
现在asp.net2.0也可以实现无刷新了

用Java实现网络语音信号传送

Sing Li 's guide : http://www.vsj.co.uk/java/display.asp?id=10

http://www.tritonus.org/plugins.html

 

http://cdisolutions.com/chatdemo/

http://www.codeproject.com/asp/CDIChatSubmit.asp

 

 

 

 

 

[quote]作者∶Dana Nourie

[img]http://gceclub.sun.com.cn/staticcontent/html/2004-05-08/GDC2004.jpg[/img]

Game Developers Conference(GDC) 吸引了超过 10,000 名出席者,该会议是为那些游戏开发专业人员召开的,他们驱动着 90 亿美元的视频游戏行业的发展。在这次会议上,开发人员能够参加超过 300 场演讲、教学和圆桌讨论,涉及了所有类型和平台上游戏开发的各个方面。

GDC 每年在加利福尼亚州圣何塞市会议中心举办。我参加了 Shawn Kendall 等演讲人所做的全天的 Professional Java Game Tutorial。Shawn Kendall 在 Full Sail 授课,并曾经为 Full Sail 和 Sun Microsystems 开发了基 于 Java 3D 游戏技术的演示;Syrus Mesdagh 也在 Full Sail 教授 AI 课程,曾经为 Full Sail 和 Sun Microsystems 开发了前沿游戏技术; Dustin Clingman 是 Full Sail Real World Education 的 Game Design and Development 的教授,并且是游戏工作室 Zeitgeist Games, Inc. 的总裁。 另外,两位来自 Sun Microsystems 的客座演讲人也进行了演讲,他们是 Jeff Kesselman 和 Doug Twilleager。

Shawn Kendall 通过询问在当前房子中 Java 开发人员的数目开始了他的演讲。大约 20 个人举了手。当他问有多少人希望在游戏开发中使用 Java 技术时,所有的 30 多人都举了手。看上去今年大家对速度和效率的关注并不大,大多数的出席者好像更关注于哪一种 Java 技术在游戏开发(包括移动平台)中比较有用。这场课程把焦点放在了多玩家网络游戏上,这使课程的大多数参与者很满意。

Shawn 解释他们将会公布最新的用于游戏开发的 Java API,包括其优点、缺点和存在的问题。每位演讲者都使用了幻灯片,除了主要的论点外, 这些幻灯片还包括了许多代码示例。这次课程按照以下部分松散地组织起来:
。New IO (NIO)
。Java Native Interface (JNI)
。Java Open AL (JOAL)
。网络
。Java 3D
。Java Open GL (JOGL)
Shawn Kendall 解释说去年的课程中他定义了一些使用 Java 进行游戏开发时遇到的问题,很高兴地宣布 J2SE 4.x 已经解决了所有那些问题。 由于有了新的 API,现在您几乎可以完全在 Java 中开发多玩家网络游戏,性能不再像以前那样成为问题。在市场上有许多使用 Java 技术开发的商业游戏,像 Star Wars,其中的一个是使用 100% 的 Java, Law & Order 开发的。

[b]New IO (NIO)[/b]

Syrus Mesdagh 通过详细介绍各种类型的缓冲、主要的磁盘驱动器、系统内存和应用程序缓冲区开始他的演讲。另外他还解释了缓冲区和 直接缓冲区之间的区别,以及如何应用缓冲区来高速缓存数据以达到提高性能的目的。但具有大缓冲区的磁盘实际上可能和中间缓冲区一样减慢性能。他然后举出示例代码,展示 Java 平台如何处理缓冲。

接下来,他提到了 NIO 的最大益处:
。高性能的文件 IO。
。支持更健壮转换的字符集。
。可伸缩的网络 NIO。
。通道 & 缓冲区。

NIO 在缓冲区管理、可伸缩的网络和文件 I/O、字符集支持以及正则表达式匹配等方面提供了新功能和经过改善的性能。

在讨论了 Java 堆和系统内存、MappedByteBuffer、各种 Java 方法的性能以及如何使用强制方法写入数据后, Syrus 展示了一张显示基准测试的幻灯片,比较了使用 Java 编程语言和使用 C 语言拷贝文件的过程。在缓冲区为 16K 时, 当本地代码才进行到 78% 时,Java 已经 100% 拷贝完成。Cyrus 也讨论了相对于非直接缓冲区而言,使用直接缓冲区的优势和益处。

房间里似乎没有人再需要更多性能比较方面的例证了,但却提出更多针对编写代码的细节方面的问题。在详细 讨论中展示了更多的代码示例。

[b]Java Native Interface (JNI)[/b]

每位演讲者都指出您几乎可以完全使用 Java 编程语言编写游戏,但不总是是这样,有一些情况您可能不得不调用本地函数, 这些调用有时是系统独立调用或类似的东西。为了完成这些工作,就需要使用 Java Native Interface (JNI) API。JNI 使得用 Java 编程语言编写的代码能够和用其他语言(如 C 和 C++)编写的代码集成在一起。这允许您在不必放弃遗留代码投资的情况下充分利用 Java 平台。

JNI 不像以前使用得那么多,这种需求正在随着新 Java 平台发布减少了。只是在您需要执行 Java 平台无法支持的任务时才使用 JNI。

[b]Java Open AL (JOAL)[/b]

Open AL 是一个开放源代码、跨平台的 3D 音频 API,适用于游戏应用程序和许多其他类型的音频应用程序。 Java Open AL 是一个基于现有 Open AL API 层次上的 Java 绑定的 API,为使用 Java 技术编写的游戏提供硬件支持和空间化音频。

Dustin Clingman 解释说如果您知道如何使用 Open AL,那么使用 Java Open AL (JOAL) 就很简单了。即使您对这个 API 不熟悉,学习使用它也是非常容易的,尽管在将其实现到游戏中还可能会有些问题。

Dustin 询问是否有人正在使用 JavaSound API,但没有人回答正在使用。然后他继续说 JOAL 直接和 JavaSound 竞争。 JavaSound 对许多类型的应用程序很有效,但它并没有像 JOAL 那样利用声卡等硬件。

他讨论了 Open AL 中的下列核心类:
。Alut 类 -- 简化初始化操作。
。Buffer 类 -- 高速缓存希望播放的音频数据。
。Source 类 -- 包含不直接和音频声音相关的声音信息,但包含开始和停止控制。

Open AL 是可扩展的,当前支持 EAX、AC3 和 Ogg Vorbis。JOAL 正在扩展 EAX 和附加支持,而对于标准播放是固化的。 Java 绑定的源代码树对于所需的自定义实现是开放的。

[b]网络[/b]

Jeffrey Kesselman,是 Sun Microsystems Game Technology Group 的服务器架构师。 他讨论了网络游戏的目前形式, 基本上都是 MUD,像 Everquest 游戏。他讨论了该模型的问题,并解释了等待时间和带宽的区别以及可靠性问题。对于一个数据包,有多大可能使它到达另一侧?UDP 和 TCP/IP,哪一种更加可靠?您需要在理解通信环境的情况下设计游戏。

[b]Game 通信[/b]

TCP/IP 是一个更可靠的、面向连接的协议,可能是您的游戏需要的的。玩家在一套帧同步的模拟中进行游戏。所有输入被每一帧分解。这样做的好处是每个人都能看到相同的东西,数据包可以比较小,而且安全。它的缺点是更新太频繁,它把每个人连接在一起,对等待时间非常敏感。

在开放环路异步格式中,每一个玩家都运行独立的模拟,更新是周期性的,比较适合于 Wide Area Networks (WAN)。如果您刚开始学习开发游戏,Local Area Networks (LAN) 会比较容易使用。
 
[b]连接类型[/b]

玩家之间的连接类型仍然比较多样,每种都有其自己的难题和可靠性问题:
。模拟调制解调器:太慢,但对于玩家来说仍然很普遍。
。DSL/Cable:比调制解调器更快,问题更少。
。Satellite:不普遍,由于高等待时间问题,不适于玩游戏。
。Local Internet。

[b]服务器端逻辑[/b]

在讨论了一些关于控制器对象状态通信和客户端逻辑之后,Jeffrey 讨论了服务器端逻辑的细节。

在服务器端,您需要考虑您的数据中心安全程度、玩家正在使用的连接类型、等待时间问题和可伸缩性。另外,您需要了解大多数游戏使用的是 MUD 模型。这意味着:区域=房间+几何形状。每一个区域都有其自己的服务器。因为玩家不会平均地在各区域间分布,这意味着某些服务器比其他服务器拥有更多的玩家。对于一个区域,服务器容量可能达到极限,而另一个区域则相对较空。这也会对那些希望合作或组成团队的玩家造成问题。服务器体系结构可能分开他们。

这个讨论导致了新服务器技术的宣布。

[b]Sun Sim Server Technology[/b]

Sun Sim Server Technology 和其他游戏服务器相比具有几个优点:
。为玩家分配了 CPU 和内存,而不是空间。
。整个世界的状态以数据的形式存在于持久的、容错的数据仓库中。
。减少了编程复杂性。
。处理层是事件驱动的,并且完全无状态。
。处理器在需要时检验部分世界,然后将其放回。

发布或可用的日期还没有给出。

[b]Java 3D 和 Java Open GL (JOGL)[/b]

Java 3D API 工作得很好,并且对于游戏开发是完全令人满意的。Java 3D 提供了一套面向对象的接口, 支持一个简单的、高层编程模型,您可以用来创建、呈现、控制 3D 对象和可视化环境的行为。Shawn Kendall 展示了一个依赖于 Java 3D 的赛车游戏例子,他们为去年的课程创建了这个例子。它运行得很好,看上去和任何您所见过的赛车游戏很相像。

但在游戏开发中,Java 3D 确实有一些局限性,这可能导致您使用 Java Open GL,它使您可以对图像具有更多的控制。 Java 3D 主要是一个 3D 场景图形 API。它确实要求一定的框架,但不是一个游戏框架。

JOGL 设计用于为 Java 编写的应用程序提供具有硬件支持的 3D 图形。它是 Sun Microsystems 的 Game Technology Group 提出的开放源代码技术的一部分。JOGL 提供了对 OpenGL 1.4 规范和几乎所有厂商扩展中 API 的完全访问,并集成了 AWT 及 Swing 窗口部件集。

[b]结束语[/b]

每位演讲者都使用了详细的幻灯片,给出了详尽的代码示例,并提供了许多说明。听众针对代码示例提问,并要求提供其他的示例, 好像对应用于游戏开发的 Java 技术非常热情很大。许多人也问到 Sun 为进一步的游戏技术还进行了什么储备,以及 Game Technology Group 将往何处去。

Doug Twilleager 回答了这些问题,并且讨论了一些 Sun 对桌面、Java Desktop 和 Loking Glass 方面的关注。这个课程从上午 10 点开始, 下午 6 点结束,中间包括休息和午餐时间。许多围绕使用 Java 技术进行游戏开发的概念和问题得到了澄清,看来该技术在游戏世界正变得更加流行,速度和效率不再像以前那样成为问题。
 
[b]更多信息[/b]

Game Developers Conference -- 行业的杰出人物举办超过 300 场演讲、课程、座谈和圆桌讨论,涉及到所有平台和所有类型的各个方面。
http://www.gdconf.com/

java.net -- Java 技术协作的发起者。
http://java.net/

Java Native Interface (JNI) -- Java Native Interface (JNI) 是一个标准的编程接口,通过该接口可以 编写 Java 本地方法、将 Java 虚拟机1嵌入到本地应用程序中。主要的目的是在给定平台上跨所有 Java 虚拟机实现的本地方法库的二进制兼容性。
http://java.sun.com/j2se/1.4.2/docs/guide/jni/

New IO (NIO) -- 定义作为数据容器的缓冲区,提供其他 NIO 包的概述。
http://java.sun.com/j2se/1.4.2/docs/api/java/nio/package-summary.html

JOAL-- JOAL Project 包括了 OpenAL API 的 Java 绑定的一个参考实现,设计用于为 Java 编写的游戏提供硬件支持的 3D 空间化音频。
https://joal.dev.java.net/

JOGL -- JOGL 提供了对 OpenGL 1.4 规范和几乎全部厂商扩展中的 APi 的完全访问,并且集成了 AWT 和 Swing 窗口部件集。
https://jogl.dev.java.net/ 

Practical Java Game Programming (游戏开发系列) Dustin Clingman、Shawn Kendall 和 Syrus Mesdaghi 合著。
http://www.amazon.com/exec/obidos/tg/detail/-/1584503262/qid=1080877238/sr=1-3/ref=sr_1_3/102-3409476-9424920?v=glance&s=books

来源:http://gceclub.sun.com.cn/staticcontent/html/2004-05-08/gdc2004.html 

[编辑 -  5/11/04 作者: Allen] [/quote]

 

0 0

相关博文

我的热门文章

img
取 消
img