现在是否可以使用GetUserMedia API从networking摄像机读取videostream,并直接发送到服务器进行进一步的广播?

我需要build立一个Web应用程序,使用WebRTC获取networking摄像机videostream和麦克风audiostream,并立即将其转换到服务器进一步广播到多个客户端。 该应用程序必须在全双工实时进行。 我的意思是这将是一种实时video聊天。 这将是某种教育应用程序。 所以问题是:现在有可能吗? 我应该使用哪些技术? 我应该在后端使用带有WebSocket和Node.js的WebRTC吗? 或者我可以使用PHP而不是节点? 我可以使用Socket.io吗? 有没有其他方法来实现这一目标? 可能是闪光?

       

网上收集的解决方案 "现在是否可以使用GetUserMedia API从networking摄像机读取videostream,并直接发送到服务器进行进一步的广播?"

WebRTC中的PeerConnection API不需要后端服务器来在对等点之间进行一个或多个连接。

你需要一个后端服务器的唯一的事情就是作为一个介体来首先build立对等体之间的连接。 为此,您可以使用WebSocket API,Ajax或任何其他必要的手段来实现这一点。 另外,是的,您可以使用PHP为WebSocket编写服务器端(或者您希望用来build立对等连接的任何方法)。 这真的取决于你。

目前,只有Chrome和Firefox支持足够的WebRTC API才能进行video聊天。 很快,Opera很可能会join这个组合,但是没有人确定WebRTC是否会被添加到IE11中,而且苹果似乎也不打算在短时间内将Safari WebRTC添加到Safari中(因为他们拥有自己的专有技术那听起来很熟悉?!)。

无论如何,WebRTC是你最好的select。 作为补充说明,我不认为有可能使用JS将video和audio发送到服务器,然后让服务器将该数据转发给其他对等。 相反,您需要使用WebRTCbuild立点对点连接,然后从那里开始。

编辑 :如果您使用TURN服务器,则可以通过服务器重新路由audio和video数据,但这实际上是最不理想的情况,而且只有在使用WebRTC API时才能这样做。

它可以帮助你。

MediaStreamRecorder是用于logginggetUserMedia()stream(仍在执行中)的WebRTC API。 它允许networking应用程序从现场audio/video会话中创build一个文件。

以下是将stream发送到服务器的示例实现。

<video autoplay></video> <script language="javascript" type="text/javascript"> function onVideoFail(e) { console.log('webcam fail!', e); }; function hasGetUserMedia() { // Note: Opera is unprefixed. return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia); } if (hasGetUserMedia()) { // Good to go! } else { alert('getUserMedia() is not supported in your browser'); } window.URL = window.URL || window.webkitURL; navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; var video = document.querySelector('video'); var streamRecorder; var webcamstream; if (navigator.getUserMedia) { navigator.getUserMedia({audio: true, video: true}, function(stream) { video.src = window.URL.createObjectURL(stream); webcamstream = stream; // streamrecorder = webcamstream.record(); }, onVideoFail); } else { alert ('failed'); } function startRecording() { streamRecorder = webcamstream.record(); setTimeout(stopRecording, 10000); } function stopRecording() { streamRecorder.getRecordedData(postVideoToServer); } function postVideoToServer(videoblob) { var data = {}; data.video = videoblob; data.metadata = 'test metadata'; data.action = "upload_video"; jQuery.post("http://www.kongraju.in/uploadvideo.php", data, onUploadSuccess); } function onUploadSuccess() { alert ('video uploaded'); } </script> <div id="webcamcontrols"> <button class="recordbutton" onclick="startRecording();">RECORD</button> </div> 

您可以将录制的文件发送到服务器。

参考文献:

http://www.w3.org/TR/mediastream-recording/

与多个参与者进行实时双工video聊天是video会议,为此,您需要一个混合参与者的audio和video并将其广播给他们的服务器组件。 你非常需要这个媒体服务器。 对于WebRTC有几个可用的; 看看Doubango的网真服务器: https : //code.google.com/p/telepresence/

Mobicents具有相同的SIP堆栈,但webRTC的多媒体function是有限的。

否则,为什么不开始写一个? 🙂