安卓客户端和Node.js服务器

3

我正在尝试开发一个类似于PTTDroid的项目,也就是一个按住说话或对讲机应用程序。

问题在于这个应用程序不能使用3G来访问网络,因此我决定使用Node.js服务器并实现一个Android客户端与其通信。我试图使用Phonegap进行多平台项目,但问题是对于音频录制,您无法访问缓冲区,只能启动、停止或暂停录制过程,而无法在捕获数据时发送数据。所以我的问题是,是否可能通过本地Android函数(Audiorecord类)实时流式传输音频捕获到类似Socket.IO的Node.js服务器?

我发现了这个project,Asimi JS,但我不知道是否有其他人知道更好的方法来实现我想要的功能。

非常感谢您的帮助!

2个回答

3
当然有可能实现这个功能,但是标准的NodeJS http服务器不建议使用,因为它使用TCP。你需要使用UDP作为音频的传输层,因为它更快,并且小包丢失通常不会成为问题。
老实说,听起来你需要在原生平台上编写一些演示应用程序,所以不要使用phonegap。你需要原生平台才能访问麦克风并通过UDP进行流式传输。
当您拥有演示版工作时,可以尝试其他平台,但不要试图一下子做到所有 - 如果那样容易,其他人早就做到了。
让我向您推荐一个简单的UDP服务器,使用您最熟悉的语言(如NodeJS、Java、C、C++、C#)。让UDP服务器接收并保存内容到文件中,然后您可以播放文件以验证结果。作为简单的客户端,请在Android或iOS上构建一个客户端,并流式传输已经录制并包含在应用程序中的文件。当您完成此设置后,可以尝试捕获麦克风,然后构建用户界面,支持多个手机,然后构建记录对话的服务器,构建用户数据库等等。但是,请从主要功能的原型开始。

3
我终于找到并解决了我的问题(至少我认为是这样)...首先,我创建了一个服务器通过DatagramSocket发送和接收UDP数据包,之后,为了实现服务器和客户端之间的通讯,在我使用3G连接时,我需要具有静态端口和IP地址,这就是为什么我的服务器无法与客户端连接的原因。在数据连接中,用户的IP和端口不总是相同的,如果您想要发送和接收数据,必须始终打开相同的套接字。另一方面,服务器必须在连接时存储客户端的地址和端口。
非常感谢ExxKA的帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接