繁体   English   中英

从HTML5设备中的线路创建实时音频流

[英]Create live audio stream from line in device for HTML5

我正在使用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);
}

您的问题的答案实际上取决于您是否要将音频流式传输到兼容HTML5的浏览器,或者您是否只想播放录制的音频。

根据W3Schools,所有主流浏览器都支持主要的音频格式(wav / ogg / mp3):

http://www.w3schools.com/html/html5_audio.asp

使用HTML5 audio标签播放预先录制的音频文件非常简单。 上面的链接描述了如何实现这一目标。

将音频直播到HTML5浏览器是一个完全不同的故事。 你需要某种流媒体服务器。 我建议不要试图自己实现这个。 为此只使用外部库要容易得多。

我现在能想到的唯一可靠的解决方案是使用免费提供的.Net P / Invoke库中的一个用于libvlc,它提供对VLC媒体播放器的流功能的访问。

以下StackOverflow问题描述了如何使用libvlc设置音频流服务器:

使用libvlc将mp3流式传输到网络

你可以尝试在C#中完成同样的事情。 它可能需要一些P / Invoke工作,但它是我能想到的最可行的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM