实时音频流库

Posted

技术标签:

【中文标题】实时音频流库【英文标题】:Real time audio streaming library 【发布时间】:2011-03-01 00:26:44 【问题描述】:

我希望将我的 android 手机中的麦克风输入流式传输到 c# 服务器。我能够捕获并将数据很好地发送到 c# 服务器。我的问题在于在服务器上实时播放该流。

我无法保存到文件并从中读取(据我所知),因为 wav 文件的部分标头信息是它的大小。所以这是行不通的,因为它在不断变化。

我有播放文件的所有可用信息(采样率、通道数、音频格式(pcm 16 位))。

有人知道可以支持这个的库吗?另外,如果有人知道的话,我正在寻找一种可以在 winform 中使用的控件来控制此麦克风数据的播放。

提前致谢!

【问题讨论】:

【参考方案1】:

您可以使用waveOutOpen API(使用 PInvoke)从流式输入中播放“原始”样本数据。这一系列 API 调用让您可以打开播放设备,然后将样本缓冲区(每个缓冲区的长度任意)排队等待播放。

您不需要在播放之前将接收到的音频块保存到磁盘 - 事实上,您不不想这样做,除非您真的想要录制音频。

waveOutOpen链接:

http://www.koders.com/csharp/fidA53BE0F5147E80A51FAC4A7CA140B80436D056EC.aspx?s=waveoutopen

http://winmm.codeplex.com/

【讨论】:

谢谢。这看起来像我需要的。我也需要保存音频。 在播放的同时将原始音频保存到 WAV 文件非常容易。基本上,您首先编写 44 字节的标头,然后开始附加原始音频块。当您的 WAV 文件达到一定大小时,您返回并重新写入标题以包含大小值,然后关闭文件并开始一个新文件。

以上是关于实时音频流库的主要内容,如果未能解决你的问题,请参考以下文章

手机之间的实时音频流

基于EasyDL搭建音频在线实时分类系统

如何实时流式传输音频文件

matlab中的实时音频

将实时音频与 Android 中录制的音频进行比较

使用 AVAudioEngine 的实时音频