gpt4 book ai didi

javascript - 如何将实时音频从浏览器流式传输到 Icecast 服务器

转载 作者:行者123 更新时间:2023-12-03 01:44:30 24 4
gpt4 key购买 nike

有没有办法可以将实时音频输入从浏览器发送到 Icecast 服务器?

我正在使用 getUserMedia API 来接收音频输入,我希望这是到 Icecast 服务器的实时流。

getAudioInput(){
const constraints = {
video: false,
audio: {deviceId: this.state.deviceId ? {exact: this.state.deviceId} : undefined},
};

window.navigator.getUserMedia(
constraints,
this.streamAudio,
this.handleError
);
}

在我的 streamAudio 函数中,我想将其流式传输到 Icecast 服务器。我可以使用某种 xmlhttprequest 来完成此操作还是需要通过套接字完成?

最佳答案

不幸的是,这在今天是不可能的。另请参阅:Fetch with ReadableStream as Request Body

基本上,浏览器不允许可流式传输的 HTTP 请求正文。因此,您无法对动态生成的数据执行长时间运行的 HTTP PUT。在发送请求之前,必须完全解析请求正文。

浏览器中有关 Fetch 和 Streams 接口(interface)的规范规定应该可以使用流作为请求正文,但目前还没有浏览器实现它。

如今只有两种方法可以从浏览器中获取流。其中之一是使用 Web Sockets。这是最简单的方法,需要您处理媒体数据的编码(通常通过 MediaRecorder API)。第二种方法是使用WebRTC。使用 WebRTC,您可以直接使用其 MediaStream 处理(很难在服务器端进行),也可以使用其数据流。如果您只是直接将数据发送到服务器,那么使用数据流与 Web 套接字相比并没有真正的好处。

我过去构建过使用 WebSocket 方法的基于 Web 的客户端。另请参阅:https://stackoverflow.com/a/40073233/362536

关于javascript - 如何将实时音频从浏览器流式传输到 Icecast 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50701071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com