为 HTML5 从设备中的线路创建实时音频流
Posted
技术标签:
【中文标题】为 HTML5 从设备中的线路创建实时音频流【英文标题】:Create live audio stream from line in device for HTML5 【发布时间】:2013-11-10 08:17:44 【问题描述】:我正在使用NAudio 将音频信号从设备中的线路捕获到字节数组中。我可以通过 UDP 广播在我的 WLAN 上成功发送该字节数组,并在另一台计算机上接收它。一旦接收到字节数组,我就可以播放音频流了。
我的目标是从设备中的线路传输音频信号,以便它可以被 html5 音频标签或jPlayer 使用。您是否有关于如何将输入字节数组转换为兼容 HTML5 格式的流的示例或阅读材料?
我想在不使用任何第三方应用程序的情况下创建一个 .Net 解决方案。
这是我如何通过 UDP 捕获和广播音频信号的示例。
var waveIn = new WaveInEvent();
waveIn.DeviceNumber = deviceID;
waveIn.WaveFormat = Program.WAVEFORMAT;
waveIn.BufferMilliseconds = 50;
waveIn.DataAvailable += OnDataAvailable;
var udpSender = new UdpClient();
udpSender.JoinMulticastGroup(Program.MulticastIP);
waveIn.StartRecording();
private void OnDataAvailable(object sender, WaveInEventArgs e)
udpSender.Send(e.Buffer, e.BytesRecorded, Program.EndPoint);
【问题讨论】:
您能否详细说明您如何发送和接收信号?或者,如果您有示例项目,请与我们分享。谢谢! 【参考方案1】:您的问题的答案实际上取决于您是想将音频流式传输到兼容 HTML5 的浏览器,还是只想播放录制的音频。
根据 W3Schools,所有主流浏览器都支持主流音频格式(wav/ogg/mp3):
http://www.w3schools.com/html/html5_audio.asp
使用 HTML5 audio
标签播放预先录制的音频文件非常简单。上面的链接描述了如何做到这一点。
将音频实时流式传输到 HTML5 浏览器是一个完全不同的故事。您需要某种流媒体服务器。我建议不要尝试自己实施。为此使用外部库要容易得多。
我现在能想到的唯一可靠的解决方案是为 libvlc 使用免费提供的 .Net P/Invoke 库之一,它提供对 VLC 媒体播放器的流媒体功能的访问。
以下 *** 问题描述了如何使用 libvlc 设置音频流服务器:
Use libvlc to stream mp3 to network
您可以尝试在 C# 中完成同样的事情。它可能需要一些 P/Invoke 工作,但这是我能想到的最可行的解决方案。
【讨论】:
以上是关于为 HTML5 从设备中的线路创建实时音频流的主要内容,如果未能解决你的问题,请参考以下文章