Ubuntu 中的 C/C++ 插座,用于接收来自 Android 麦克风输入的音频流

C/C++ socket in Ubuntu for receiving audio stream from Android microphone input

本文关键字:Android 麦克风 输入 音频流 中的 C++ 插座 用于 Ubuntu      更新时间:2023-10-16

将语音从Android手机流式传输到服务器进行音频分析似乎不是一件容易的事。

人造人:

在android中,录音机提供了一个很好的API,我从Stream Live Android Audio改编到服务器,将麦克风输入流式传输到任何服务器。

输出基本上由以下几行生成:

DatagramSocket socket = new DatagramSocket();
final InetAddress destination = InetAddress.getByName("1.1.1.1");
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,sampleRate,channelConfig,
audioFormat,minBufSize*10);
while(rec == true) {
            minBufSize = recorder.read(buffer, 0, buffer.length);
            packet = new DatagramPacket (buffer,buffer.length,destination,port);
            socket.send(packet);
 }

然而,使套接字工作(应该在 C/C++ 中)让我头疼。我通常想在我的 Ubuntu 服务器上执行三个步骤:

1.接收音频流(我在本地使用Portaudio进行音频录制,我在C/C++中找不到合适的工具可以将流用作输入。有没有类似插座连接的麦克风模拟器的东西??

2.分析流并将结果作为jsonstring(或只是第一个文本字符串)

3.将此结果流式传输回安卓设备。

我是网络编程的新手,我尝试了许多教程,例如:

http://codebase.eu/tutorial/linux-socket-programming-c/

http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html

http://www.the-tech-tutorial.com/?p=1555

他们似乎都不适合这项任务。所以:

  1. 如何在 C/C++ 中管理音频流。

  2. 然后以什么格式的流可用于进一步处理?

任何帮助将不胜感激。谢谢。

你可以看看QAudioOutput。在这个问题中,您可以阅读如何使用UDP数据报通过以太网发送音频流:

如何在Qt中通过以太网播放流音频?