如何将流式视频和音频数据发送到服务器?

时间:2016-03-27 21:04:49

标签: html5 websocket streaming serverside-javascript client-side-scripting

我正在尝试使用html和javascript构建视频聊天网络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是否是完成此任务的好方法,如果没有,您会建议采用哪些方式。

感谢您的时间!

2 个答案:

答案 0 :(得分:1)

这个问题没有好的解决方案。浏览器无法通过html5和java脚本在没有插件(flash,java)的情况下完成此操作。

我发现只有api是WebRTC: https://webrtc.org/start/ http://web-engineering.info/node/57 他们正试图解决这个问题并提供解决方案而无需额外的软件,但目前它仍然是实验性的,而不是标准的。

答案 1 :(得分:0)

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

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

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