将音频流传输到Android中的http-post

Ift*_*tah 5 android audio-recording audio-streaming

我试着

  1. 记录来自Android设备的语音,
  2. 将数据编码为某些音频编码(M4A,FLAC,Ogg)
  3. 流将其上传到我的服务器(chunked http post) - 录制正在进行中.

任何想法如何实现这些?


我尝试使用Android MediaRecorder (记录音频,编码并保存到文件)并使用Android HttpClient和InputStreamEntity,它允许从输入流上传数据.我使用来自https://github.com/Teaonly/android-eye/blob/master/src/teaonly/droideye/StreamingLoop.java的 "StreamingLoop" 将输出文件描述符连接到inputStream,这样我就可以使用MediaRecorder的输出HttpClient的输入.

然而这失败了 - 当我停止录制时,我得到:

06-27 17:58:47.259: A/libc(6759): Fatal signal 11 (SIGSEGV) at 0x00000010 (code=1), thread 6759

这会使应用程序崩溃,并且到达服务器的文件无法通过VLC播放,因此这是失败的两倍.

有什么想法,不同的方法做上面的要求1..3或如何调试它?

Rob*_*ree 2

使用 Audiorecord 类而不是 mediaRecorder。前者的 API 可让您直接访问支持麦克风的缓冲区。您可以控制从缓冲区写入流的处理程序(如 http chunked-encoding 连接)。这将满足您的流媒体需求。

查看使用 audioRecord 的 git proj...

https://github.com/Audioboo/audioboo-android?source=c

请参阅 class=FLACRecorder.run() ,它读取 AudioRecord 缓冲区并将其写入编码器(FLAC)。如果您想流式传输 flac 编码的字节,您可以使用此应用程序,获取编码器下游的字节并将其写入 http 连接,就像在此类中一样。