5

我目前正在编写一个程序,它是一种 VoIP 客户端。我正在尝试在 2 个客户端之间建立连接并发送和接收从麦克风记录的数据。

我目前正在使用文件,但它看起来像一个糟糕的实现:

录音机开始录制到一个临时文件。计时器启动,停止记录器,查看文件大小,然后使用 DatagramPacket 发送内容。

这似乎非常糟糕。我想知道 MediaRecorder 和 MediaPlayer 类是否有办法将 UPD 套接字分别作为文件输出和输入(即 DatagramSocket)。

我可以使用来自套接字的文件描述符,但套接字使用 TCP。我想使用 UDP,所以我猜是 DatagramSocket,但我似乎找不到在我的 MediaRecorder 和 MediaPlayer 类中使用它的方法。

有人请对此有一个好的解决方案吗?

非常感谢

4

2 回答 2

3

您可能对 ParcelFileDescriptor 感兴趣,然后特别是fromDatagramSocket(...)函数,然后您可以使用 getFileDescriptor 函数来设置播放器的数据源

*更新:这只有在你有 android 4.0 或更高版本时才有效:请参阅 api 限制

于 2012-01-26T15:16:34.787 回答
-1

全部,

一种方法是实现第二个线程,该线程在抽象空间(UNIX 命名套接字)中设置 LocalServerSocket。然后在第一个线程中创建一个连接到 LocalServerSocket 的 LocalSocket。完成此步骤后,即可在第一个线程中获取LocalSocket的FileDescriptor,并将其设置为MediaRecorder的OutputFile。在第二个线程中,您刚刚从剥离的 LocalSocket 中读取,然后写入您的 DatagramSocket。Ez Pz。

祝你好运,B-Rad

于 2010-12-22T22:16:11.700 回答