PluginRTC: IE/Safari Plugins compatible WebRTC-Experiments
This repository is a sub-part of: https://github.com/muaz-khan/WebRTC-Experiment
This repository isn't providing WebRTC plugins. It is simply using existing plugins in WebRTC-Experiments & Libraries e.g. RTCMultiConection.js, DataChannel.js and especially RecordRTC.js and MediaStreamRecorder.js.
=
- RTCMultiConection.js -
npm install rtcmulticonnection
Scroll to bottom to see how to use these plugins within other WebRTC Experiments.
=
- https://github.com/sarandogou/webrtc-everywhere#downloads
- https://temasys.atlassian.net/wiki/display/TWPP/Downloads+and+Installing
=
First step; link any of the following:
<script src="//cdn.webrtc-experiment.com/Plugin.EveryWhere.js"></script>
<!-- or -->
<script src="//cdn.webrtc-experiment.com/Plugin.Temasys.js"></script>
Second step; add following code:
var Plugin = {};
window.onPluginRTCInitialized = function(pluginRTCObject) {
Plugin = pluginRTCObject;
MediaStreamTrack = Plugin.MediaStreamTrack;
RTCPeerConnection = Plugin.RTCPeerConnection;
RTCIceCandidate = Plugin.RTCIceCandidate;
RTCSessionDescription = Plugin.RTCSessionDescription;
};
if (!!window.PluginRTC) window.onPluginRTCInitialized(window.PluginRTC);
Now you can use Plugin
object like this:
// capture video
var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
var isIE = !!document.documentMode;
var isPluginRTC = isSafari || isIE;
if (isPluginRTC) {
var mediaElement = document.createElement('video');
Plugin.getUserMedia({
video: true
}, function(stream) {
var body = (document.body || document.documentElement);
body.insertBefore(mediaElement, body.firstChild);
setTimeout(function() {
Plugin.attachMediaStream(mediaElement, stream);
// here you can append "mediaElement" to specific container
// specificContainer.appendChild(mediaElement);
}, 3000);
}, function(error) {});
} else {
navigator.getUserMedia(hints, success, failure);
}
When onaddstream
event is fired:
peer.onaddstream = function(event) {
if (isPluginRTC) {
var mediaElement = document.createElement('video');
var body = (document.body || document.documentElement);
body.insertBefore(mediaElement, body.firstChild);
setTimeout(function() {
Plugin.attachMediaStream(mediaElement, event.stream);
// here you can append "mediaElement" to specific container
// specificContainer.appendChild(mediaElement);
}, 3000);
} else {
// do chrome/Firefox relevant stuff with "event.stream"
}
};
When onicecandidate
event is fired:
peer.onicecandidate = function(event) {
if (!event.candidate) return;
// always use like this!
// don't use JSON.stringify
// or, don't directly send "event.candidate"
sendToRemoteParty({
candidate: event.candidate.candidate,
sdpMid: event.candidate.sdpMid,
sdpMLineIndex: event.candidate.sdpMLineIndex
});
};
When getting local session-description (SDP):
peer.setLocalDescription(localSdp);
// always use like this!
// don't use JSON.stringify
// or, don't directly send "RTCSessionDescription" object
sendToRemoteParty({
type: localSdp.type,
sdp: localSdp.sdp
});
=
- Personal Webpage — http://www.muazkhan.com
- Email — muazkh@gmail.com
- Twitter — https://twitter.com/muazkh and https://twitter.com/WebRTCWeb
=
PluginRTC is released under MIT licence . Copyright (c) Muaz Khan.