html - 如何向服务器发送流式视频和音频数据?

标签 html websocket streaming serverside-javascript client-side-scripting

我正在尝试使用 html 和 javascript 构建视频聊天 web api。到目前为止,我发现这段代码可以访问客户端设备上的麦克风和网络摄像头,并在该客户端的屏幕上显示视频和音频。这是代码:

<html>
<head>

<script>

navigator.getUserMedia = navigator.getUserMedia ||
                         navigator.webkitGetUserMedia ||
                         navigator.mozGetUserMedia;

if (navigator.getUserMedia) {
   navigator.getUserMedia({ audio: true, video: { width: 1280, height: 720 } },
      function(stream) {
         var video = document.querySelector('video');
         video.src = window.URL.createObjectURL(stream);
         video.onloadedmetadata = function(e) {
           video.play();
         };
      },
      function(err) {
         console.log("The following error occurred: " + err.name);
      }
   );
} else {
   console.log("getUserMedia not supported");
}

</script>
</head>

<body>

<video></video>

</body>
</html>

要使视频聊天网络应用程序正常工作,视频和音频数据必须发送回服务器,服务器可以处理该数据并将其发送到其他客户端计算机,两个人都可以进行视频聊天。我做了一些研究,我相信 websockets 可能是我将视频和音频数据发送到服务器以及服务器发送到其他客户端计算机的最佳选择。我希望能够使用服务器端和客户端 javascript 制作 websocket。当我做一些研究时,我发现了一些代码,解释了如何创建 websocket 连接,然后如何向服务器发送一些数据。这是我为此找到的代码:

  var ws = new WebSocket("ws://localhost:9998/echo");

           ws.onopen = function()
           {
              // Web Socket is connected, send data using send()
              ws.send("Message to send");
              alert("Message is sent...");
           };

我不明白的是服务器如何使用服务器端 javascript 接收该数据。我也不明白服务器端 javascript 应该如何通过 websocket 将该数据发送到另一台客户端计算机上的客户端 javascript。 我非常感谢有关如何将流式视频和音频数据发送到服务器,然后服务器使用服务器端 javascript 接收数据,然后服务器发送该数据的所有想法、源代码和链接到另一台客户端计算机。同样,我想知道 websockets 是否是完成此任务的好方法,如果不是,您会建议哪些方法。

感谢您的宝贵时间!

最佳答案

我认为您可能会受益于使用像 Kurento 这样的媒体服务器.您可以查看教程,使用 nodejs 服务器端实现,here .他们使用 websockets 在服务器端和客户端之间进行通信,扩展任何教程对您来说都将非常容易。

服务器端 javascript 代码在媒体世界中被称为信令服务器。那段代码负责路由调用、连接和注册用户、身份验证等。它还负责控制媒体的交换方式,但不在实际的媒体交换中。媒体在客户端和媒体服务器之间流动。

免责声明:我是 Kurento 团队的一员。

关于html - 如何向服务器发送流式视频和音频数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36252655/

相关文章:

java - 处理流数据、更新 GUI、使用线程,并且不错过任何一个节拍?

javascript - 如何检查数组是否包含多个同一个单词

html - 带有图像的表格单元格中的神秘填充

streaming - 如何在 hadoop 流中使用将文件名作为参数的二进制可执行文件?

java - 使用 Spring 和外部消息代理进行消息传递

python - 如何绕过阻止其他 websocket 调用的 websocket 调用

Node.js 在服务器和客户端之间同步音频流?

html - Bootstrap : How to center align content inside column?

javascript - 自定义 javascript/jquery 不适用于 Angular View

Apache 负载均衡 tomcat websocket