gpt4 book ai didi

javascript - 在 getUserMedia 捕获后,使用 WebRTC 将 MediaStream 发送到主机服务器

转载 作者:IT王子 更新时间:2023-10-29 03:09:33 30 4
gpt4 key购买 nike

我正在使用 getUserMedia() 捕获音频数据,我想将它发送到我的服务器,这样我就可以将它保存为 MySQL 字段中的 Blob。

这就是我想要做的。我已经多次尝试使用 WebRTC 来做到这一点,但我什至不知道这是否是正确的,甚至是最好的方法。

有人可以帮助我吗?

这是我用来从麦克风捕获音频的代码:

navigator.getUserMedia({
video:false,
audio:true,
},function(mediaStream){

// output mediaStream to speakers:
var mediaStreamSource=audioContext.createMediaStreamSource(mediaStream);
mediaStreamSource.connect(audioContext.destintion);

// send mediaStream to server:

// WebRTC code? not sure about this...
var RTCconfig={};
var conn=new RTCPeerConnection(RTCconfig);

// ???

},function(error){
console.log('getUserMedia() fail.');
console.log(error);
});

如何将此 mediaStream 发送到服务器?

在谷歌搜索之后,我一直在研究 WebRTC但这似乎只是用于点对点通信 - 实际上,现在我正在研究更多,我认为这是要走的路。这似乎是从客户端浏览器到主机网络服务器的通信方式,但我尝试的任何方法都无法正常工作。

我一直在经历 the W3C documentation (我觉得这太抽象了),我一直在经历 this article on HTML5 Rocks (提出的问题多于答案)。显然我需要一种信令方法,谁能建议哪种信令方法最适合发送 mediaStreams、XHR、XMPP、SIP、Socket.io 或其他方法?

服务器端需要什么来支持接收WebRTC?我的 Web 服务器正在运行一个基本的 LAMP 堆栈。

此外,最好等到 mediaStream 完成录制后再将其发送到服务器,还是直接发送 mediaStream 更好?记录?我想知道我是否打算以正确的方式这样做。我已经用 javascript 和 HTML5 编写了文件 uploader ,但是上传其中一个 mediaStreams 似乎非常复杂,我不确定我是否正在接近它。

如有任何帮助,我们将不胜感激。

最佳答案

您不能在运行时上传直播流本身。这是因为它是实时流。

因此,这给您留下了一些选择。

  1. 使用众多录音机之一录制音频流 RecordRTC工作得很好。等待流完成,然后上传文件。
  2. 使用计时器发送较小的录制音频 block ,然后在服务器端再次合并它们。 This is an example of this
  3. 将通过 websockets 出现的音频数据包发送到您的服务器,以便您可以在那里操作和合并它们。 My version of RecordRTC does this .
  4. 与您的服务器建立实际的对等连接,以便它可以获取原始 rtp 流,您可以使用一些较低级别的代码记录该流。这可以通过 Janus-Gateway 轻松完成。 .

至于等待发送流还是分 block 发送,这完全取决于您录制多长时间。如果需要更长的时间,我会说分 block 发送录音或通过 websockets 主动发送音频数据包是更好的解决方案,因为从客户端上传和存储更大的音频文件对客户端来说可能很费力。

Firefox 实际上有一个 own solution for recording但 chrome 不支持它,因此它可能不适用于您的情况。

顺便说一句,提到的信令方法用于 session 建立/销毁,实际上与媒体本身无关。如果您可能使用上面显示的第 4 种解决方案,您只会真正担心这一点。

关于javascript - 在 getUserMedia 捕获后,使用 WebRTC 将 MediaStream 发送到主机服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25523289/

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