【问题标题】:C/C++ socket in Ubuntu for receiving audio stream from Android microphone inputUbuntu 中的 C/C++ 套接字,用于从 Android 麦克风输入接收音频流
【发布时间】:2014-04-03 21:50:49
【问题描述】:

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

安卓:

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

输出基本上是用以下几行生成的:

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. 将此结果流式传输回 android 设备。

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

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. 那么流以何种格式可用于进一步处理?

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

【问题讨论】:

  • 看起来不直观,您需要删除库请求,否则有人可能会关闭您的问题。至于其余的,您是否设法实现了android设备和PC之间的连接? netcataplay / arecord 是您在测试时可能会发现对传输音频有用的两个工具。

标签: android c++ c sockets audio


【解决方案1】:

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

How i can play streaming audio over Ethernet in Qt?

【讨论】:

    猜你喜欢
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    相关资源
    最近更新 更多