3

我正在尝试开发像PTTDroid这样的项目,我的意思是 Push-To-Talk 或 Walkie-Talkie 应用程序。

问题是在这个应用程序中你不能使用 3G 访问网络,所以我决定使用 Node.js 服务器并实现一个 Android 客户端与之通信。我尝试使用 Phonegap 进行多平台项目,问题是对于音频记录,您无法访问缓冲区,您只能开始和停止或暂停录制过程,但不能在捕获时发送数据。所以我的问题是,可以通过 Socket.IO 或类似的 Node.js 服务器通过原生 Android 功能(Audiorecord 类)实时流式传输音频捕获吗?

我发现了这个项目,Asimi JS,但我不知道其他人是否知道更好的方法来做我想做的事。

非常感谢您的帮助!

4

2 回答 2

3

当然可以,但不建议使用标准的 NodeJS http 服务器,因为它使用 tcp。您希望使用 UDP 作为音频的传输层,因为它会更快,并且可能发生的小丢包很可能不会成为问题。

老实说,听起来您需要在本机平台上编写一些演示应用程序 - 所以不要使用 phonegap。您需要本机平台才能访问诸如麦克风之类的东西并通过 UDP 流式传输。

当你有一个演示工作时,你可以在之后继续尝试另一个平台,但从一个简单的设置开始,而不是尝试一次完成所有工作 - 如果这很容易,其他人会在你之前完成它。

让我推荐一个简单的 UDP 服务器,使用您最熟悉的任何语言,例如(NodeJS、Java、C、C++、C#)。让 UDP 服务器接收内容并将其保存到文件中,然后您可以在台式计算机上播放该文件以验证结果。作为一个简单的客户端,在 Android 或 iOS 上构建一个,并流式传输您已经记录并包含在应用程序中的文件。当你有这个设置工作时,你可以尝试捕获麦克风,然后做一个用户界面,然后支持多个电话,然后构建一个记录对话的服务器,然后构建一个用户数据库,等等。但是从您的主要功能的原型开始。

于 2013-03-15T14:23:23.577 回答
3

我终于发现并解决了我的问题(至少我是这么认为的)......首先我创建了一个服务器来通过DatagramSocket发送和接收UDP数据包,然后实现服务器和客户端之间的通信,当时我是通过3G连接,我需要一个静态端口和IP,这就是为什么我的服务器无法连接到客户端。使用数据连接时,用户 IP 和端口并不总是相同的,如果要发送和接收,则必须始终打开相同的套接字。另一方面,服务器必须在连接时存储来自客户端的地址和端口。

非常感谢您的帮助ExxKA

于 2013-03-27T07:49:36.667 回答