实时音频流库
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 文件达到一定大小时,您返回并重新写入标题以包含大小值,然后关闭文件并开始一个新文件。以上是关于实时音频流库的主要内容,如果未能解决你的问题,请参考以下文章