我正在开发一种低数据速率的 VoIP 项目。我需要以低数据速率捕获音频并将其存储在内部缓冲区或 FIFO 中(不在文件中)。
我想使用低数据速率的 .AMR 编码器,这意味着 AudioRecord 已退出。MediaRecorder 看起来完全符合我的要求,只是它似乎是在写入文件。
MediaRecorder 需要一个 FileDescriptor...有什么办法可以编写一个实现 FileDescriptor 接口的类...充当字节的同步...但不是将它们发送到存储在缓冲区中的文件?FileDescriptor 上的文档特别指出,应用程序不应该自己编写,但为什么不可以呢?反正有可能吗?
http://docs.oracle.com/javase/1.4.2/docs/api/java/io/FileDescriptor.html
简而言之,我想开发自己的流,并欺骗 MediaRecorder 向它发送数据。也许在同一个 APK 中打开套接字的两端并为 MediaRecorder 提供要写入的套接字会做一些棘手的事情?使用套接字作为我的 FIFO?我对此有些陌生,因此非常感谢任何帮助/建议。
我在 RX 方面有一个相关的问题。我想要一个为 MediaPlayer 提供数据的缓冲区/fifo。我可以欺骗 MediaPlayer 接受来自我自己的专有流馈送的缓冲区的数据吗?