Sco*_*ott 5 c# html5 audio-streaming naudio
我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)
您的问题的答案实际上取决于您是否想要将音频流式传输到 HTML5 兼容的浏览器,或者您是否只想播放录制的音频。
根据 W3Schools 的说法,所有主要浏览器都支持主要音频格式 (wav/ogg/mp3):
http://www.w3schools.com/html/html5_audio.asp
使用 HTML5 标签播放预先录制的音频文件audio非常简单。上面的链接描述了如何实现这一点。
将音频实时传输到 HTML5 浏览器是一个完全不同的故事。您需要某种流媒体服务器。我建议不要尝试自己实现这一点。为此使用外部库要容易得多。
我现在能想到的唯一可靠的解决方案是使用 libvlc 的免费 .Net P/Invoke 库之一,它提供对 VLC 媒体播放器的流功能的访问。
以下 StackOverflow 问题描述了如何使用 libvlc 设置音频流服务器:
您可以尝试在 C# 中完成同样的事情。它可能需要一些 P/Invoke 工作,但这是我能想到的最可靠的解决方案。