Android中的MediaRecorder和UDP(DatagramSocket)

Android中的MediaRecorder和UDP(DatagramSocket),android,udp,media-player,voip,datagram,Android,Udp,Media Player,Voip,Datagram,我目前正在编写一个类似VoIP客户端的程序。我正在尝试在两个客户端之间建立连接,并发送和接收从麦克风录制的数据 我目前正在使用文件,但它看起来像一个糟糕的实现: 记录器开始记录到临时文件。计时器启动,停止记录器,查看文件大小,然后使用DatagramPacket发送内容 看起来糟透了。我想知道MediaRecorder和MediaPlayer类是否有办法将UPD套接字分别作为其文件输出和输入(即DatagramSocket) 我可以使用套接字中的文件描述符,但是套接字使用TCP。我想使用UDP,

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

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

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

看起来糟透了。我想知道MediaRecorder和MediaPlayer类是否有办法将UPD套接字分别作为其文件输出和输入(即DatagramSocket)

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

有没有人能想出一个好的解决办法

非常感谢大家

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

祝你好运,
B-Rad

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


*更新:这只适用于android 4.0或更高版本:请参阅api限制,这是完全错误的!您必须将数据编码到一个流中,这是android本机不支持的你是对的,你可以简单地通过UDP发送帧,但那不是流,那些是原始(视频/音频)帧!