gpt4 book ai didi

webrtc - 使用 WebRTC 浏览器 => 服务器实时流式传输音频

转载 作者:行者123 更新时间:2023-12-03 23:17:14 26 4
gpt4 key购买 nike

我正在尝试将一些音频流从我的浏览器发送到某个服务器(udp,也尝试使用 websockets)。
我正在使用 webrtc 录制音频流,但是在将数据从 nodeJS 客户端传输到我的服务器时遇到问题。
任何的想法?是否可以使用 webrtc(openwebrtc) 将音频流发送到服务器?

最佳答案

要将音频从浏览器发送到服务器,您有几种不同的可能性。

网络套接字

只需通过二进制网络套接字将音频数据发送到您的服务器。您可以使用带有 ScriptProcessorNode 的 Web Audio API 来捕获原始 PCM 并无损发送。或者,您可以使用 MediaRecorder 记录 MediaStream 并使用像 Opus 这样的编解码器对其进行编码,然后您可以通过 Web Socket 进行流式传输。

Facebook's GitHub repo 上有一个使用视频完成此操作的示例。 .仅流式传输音频在概念上是相同的,因此您应该能够调整示例。

HTTP( future )

在不久的将来,您将能够使用 WritableStream 作为 Fetch API 的请求主体,从而允许您使用来自浏览器的流源创建普通的 HTTP PUT。这与您使用 Web Socket 所做的基本相同,只是没有 Web Socket 层。

WebRTC(数据 channel )

使用 WebRTC 连接和作为“对等点”的服务器,您可以打开数据 channel 并发送与您通过 Web 套接字或 HTTP 发送的完全相同的 PCM 或编码音频。

这增加了大量的复杂性,但没有真正的好处。不要使用这种方法。

WebRTC(媒体流)

WebRTC 调用支持直接处理 MediaStreams。您可以附加一个流并让 WebRTC 堆栈负责协商编解码器、适应带宽变化、丢弃未到达的数据、保持同步以及围绕限制性防火墙环境协商连接。虽然从表面上看这让事情变得更容易,但这也很复杂。没有任何适用于 Node.js 的软件包可以向您公开 MediaStreams,因此您不得不与其他软件打交道……它们都没有像它那样容易集成。

大多数走这条路的人将执行 gstreamer 作为 RTP 服务器来处理媒体组件。我不相信这是最好的方法,但这是我目前所知道的最好的方法。

关于webrtc - 使用 WebRTC 浏览器 => 服务器实时流式传输音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48283723/

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