收听实时音频流

Posted

技术标签:

【中文标题】收听实时音频流【英文标题】:Listen to an live audio stream 【发布时间】:2021-09-20 03:38:22 【问题描述】:

我目前正在使用标准套接字从 c++ 流式传输我的麦克风。现在我想从网络上听这个流。 我曾尝试直接从音频标签访问流,但这不起作用。

我也尝试将内容类型设置为音频/wav,但这也没有用。

我尝试写入文件并直接从音频元素访问它,但它没有将新写入的部分添加到音频元素。它也从音频的开头开始,我读到它有很高的延迟。

有没有办法以极低的延迟传输音频?

我考虑过每 50 毫秒发出一次获取请求并将新数据添加到音频或录制 50 毫秒的音频并在最后一个剪辑的末尾更改音频的 src。

【问题讨论】:

【参考方案1】:

通过 WebSocket 流式传输音频缓冲区,然后尝试使用 <audio> 元素播放它不是要走的路。

以低延迟将音频流式传输到浏览器的方法是使用WebRTC。

WebRTC 内置于浏览器中,可实现点对点实时通信。

也就是说,您可以使用 C++ 中的一些 WebRTC 实现,例如 libwebrtc 或 Gstreamer 来流式传输您的麦克风输入,然后使用浏览器上的本机 javascript API 接收音频流并将其放置在 @987654325要在浏览器中侦听的 <audio> 元素的 @ 属性。

【讨论】:

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

实时音频流套接字卡在浏览器中

使用 C++ 教程和示例代码进行音频流传输 [关闭]

如何实时收听麦克风输入并进行分析?

手机之间的实时音频流

AVAudioEngine 实时音频播放问题

如何从实时流中播放音频