我正在研究RTCPeerConnection js。我想用webrtc在android平台上播放ip cam stream(M3U / HLS)或任何视频流。我不知道如何将外部流附加到webrtc会话。
是否可以使用webrtc或其他实时协议api?
答案 0 :(得分:2)
您应该依靠像Kurento这样的媒体服务器来播放来自本地网络摄像头以外的其他来源的视频流。 您可以定义PlayerEndPoint以通过各种协议(文件,HTTP,RTSP)读取视频源,并将它们作为具有WebRtcEndpoint的WebRTC流广播到任何客户端,或者作为带有HttpGetEndpoint的HTTP流广播。
在此处查看他们的架构:http://www.kurento.org/docs/current/mastering/kurento_architecture.html
另一个媒体服务器是Janus,但我不知道。
答案 1 :(得分:1)
如果您可以从相机接收数据并将其显示在元素中,则可以使用stream = video.mozCaptureStreamUntilEnded();获取MediaStream,您可以附加到PeerConnection。
注意:目前仅限Firefox;这应该在不久的将来合并到规范中,最终由Chrome支持。 Firefox目前正在实现提议的规范添加的另一部分:canvas.captureStream()。
注意:通常,IP摄像机可能无法从您可以放入video.src的URL提供可直接浏览的视频流。例如,您无法从仅提供RTP流的IP摄像机获取可用流。
答案 2 :(得分:0)
通常,您可以控制远程ip cam,以便将基本RTP流发送到IP:PORT。但是webrtc需要在SDP中协商许多强制和可选功能,并在媒体路径上使用:其中,您有加密(DTLS-SRTP),ICE,多路复用,VP8。
集成ip cam的唯一方法是从ip cam接收已经与视频媒体的webrtc兼容的SDP描述。 (RTP / SAVPF配置文件,具有所有必需的webrtc功能。)在这种情况下,ip cam将自行处理所有内容,您只需将其SDP描述提供给最终用户。
webrtc和媒体紧密耦合:实际上,发送媒体的应用程序还需要处理从协商(SDP)到媒体级别的所有内容。
我猜想某些ip cam中可能已经存在webrtc实现。
答案 3 :(得分:0)
AymericM感谢您的快速反应。 要么我根本不了解webrtc问题,要么我无法呈现我想要的内容。 Webrtc正在接收和传输从我的设备的相机接收的视频。我不认为相机支持你提到的所有标准。他们呢?
让我形成这样的测试设置; PC正在使用VLC广播其相机(因此我可以安排每个设置,传输协议,编解码器,分辨率等)。我的设备在同一个网络上。我想在我的设备上运行webrtc,我想用它来传输视频,但不是我的设备相机,我想要PC的相机。无论需要什么格式,我都可以使用VLC进行调整。 一旦成功,我可以尝试使用真正的IP摄像头,看看哪些像这样工作。
我认为这段代码可能有助于描述问题。我正在寻找blablabla方法..
<button id="openRoom">Open Room</button>
<button id="joinRoom">Join Room</button><br />
<script src="//cdn.webrtc-experiment.com/RTCMultiConnection.js"> </script>
<script>
var stream = blablabla("http://172.16.180.198:8080/videofeed");
var connection=new RTCMultiConnection();
connection.dontCaptureUserMedia = true;
connection.attachStreams.push(stream, stream);
connection.attachExternalStream(stream, true);
document.getElementById('openRoom').onclick = function() {
connection.open();
};
document.getElementById('joinRoom').onclick = function() {
connection.connect();
};
</script>