gpt4 book ai didi

android流音频到服务器

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:29 27 4
gpt4 key购买 nike

我想了解套接字是如何工作的,特别是我需要一些服务器端的代码示例来接收设备从 mediarecorder 发送的流。

非常感谢您的帮助。

我真正的最终目的是在设备上讲话并在 PC 上收听,只是一个方向。

目前我可以使用以下代码发送流:

String hostname = "192.168.1.10";
int port = 8000;
Socket socket = null;
try {
socket = new Socket(InetAddress.getByName(hostname), port);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(pfd.getFileDescriptor());

try {
recorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

recorder.start();

最佳答案

似乎没问题,但我个人更喜欢在设备上缓冲音频并将其从另一个线程发送到服务器,而不是像您那样将录音机直接连接到套接字。因为本地缓冲将允许您优雅地处理连接中断。

假设您正在录制,用户通过隧道并失去互联网连接——如果您直接进行流式传输,套接字将关闭,用户会感到恼火 :-) 但是,如果您在本地缓冲数据,您可以重新建立连接并从中断处继续将音频发送到服务器,希望用户甚至不必知道刚刚发生了连接中断,因为它神奇地起作用了。

为了让它工作,您必须将记录写入本地缓冲区,并有一个单独的线程检查该缓冲区上的新数据并尽快发送到服务器。

关于android流音频到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8576427/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com