吴朗 2014-10-21 07:53 采纳率: 0%
浏览 3062

android音频实时采集 传输到PC端播放

android音频实时采集 传输到PC端播放 服务端是用c写的,客户端通过Socket向服务端传递数据

问题是这样的:
(1)开启两个线程,线程A,线程B。
(2)建立100个bufffer,每个的大小为4k,线程A通过AudioRecod不断向100个buffer里面写入数据,写满100个后,再从头开始写(覆盖掉原来写的)。
(3)线程B从上面的100个buffer里面不断读取数据,并将这些数据传递(socket___tcp)到服务端(pc),在pc上播放这音频。
其中(2)中的部分该怎么实现啊?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 22:41
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这是一个典型的多线程和异步IO问题。以下是一个简单的示例:

    public class AudioReceiver extends Thread {
    
        private static final int BUFFER_SIZE = 4 * 1024;
        private Socket socket;
    
        public AudioReceiver(Socket socket) {
            this.socket = socket;
        }
    
        @Override
        public void run() {
            try {
                byte[] buffer = new byte[BUFFER_SIZE];
                while (true) {
                    // 收到数据时处理
                    if (socket.getInputStream().read(buffer) > 0) {
                        // 将接收到的数据发送到客户端
                        sendDataToClient(buffer);
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        private void sendDataToClient(byte[] data) {
            // 发送数据到客户端
            System.out.println("Sending data to client");
            // 这里你可以添加任何必要的逻辑来发送数据到客户端
        }
    }
    

    在这个示例中,我们创建了一个新的线程,这个线程会在服务器接收到来自客户端的数据时进行处理。然后我们在主循环中不断地读取缓冲区的内容,并将它们发送到客户端。

    注意:你需要根据你的具体需求调整这个示例。例如,你可能需要处理不同的情况,或者使用更复杂的算法来优化性能等。

    评论

报告相同问题?

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表