Java 通过套接字流式传输时计算MediaRecorder的实时传输速率

Java 通过套接字流式传输时计算MediaRecorder的实时传输速率,java,android,mediarecorder,Java,Android,Mediarecorder,我正在使用MediaRecorder捕获用户的语音,并通过Wi-Fi套接字连接以AMR-WB格式传输: setOutputFile(ParcelFileDescriptor.fromSocket(socket.getFileDescriptor()); 我想在屏幕上显示传输速率,我正在寻找实现这一点的最佳方法。 我自己可以想出两个解决方案: 创建LocalSocket LocalServerSocket循环并使用缓冲区传输数据。这可能会增加不必要的延迟并增加性能开销 根据编解码器的特性计算

我正在使用MediaRecorder捕获用户的语音,并通过Wi-Fi套接字连接以AMR-WB格式传输:


setOutputFile(ParcelFileDescriptor.fromSocket(socket.getFileDescriptor());

我想在屏幕上显示传输速率,我正在寻找实现这一点的最佳方法。 我自己可以想出两个解决方案:

  • 创建LocalSocket LocalServerSocket循环并使用缓冲区传输数据。这可能会增加不必要的延迟并增加性能开销
  • 根据编解码器的特性计算传输数据。e、 (每个样本的大小)*(每秒样本数)。此解决方案不适用于具有随机延迟的网络或具有可变编码速率的编解码器

还有其他方法吗?

ParcelFileDescriptor.createPipe()将为您创建一个管道


然后,您可以写入管道并计算从另一端读取的字节数,然后再将它们流到以太…

ParcelFileDescriptor。createPipe()
将为您创建一个管道


然后,您可以写入管道并计算从另一端读取的字节数,然后再将它们流到以太…

我仍然需要缓冲来自一个管道的传入数据并将其写入另一个管道。我说的对吗?是的,就像你计划用一个套接字一样,但没那么麻烦。我仍然需要缓冲从一个管道传入的数据并将其写入另一个管道。我说的对吗?是的,就像你计划用插座一样,但没那么大惊小怪。