one-to-many-video-broadcasting/README.md
If 10 users join your broadcasted room, 40 RTP ports will be opened on your browser:
=
For 10 users session, in one-way broadcasting:
i.e. total 20 outgoing RTP ports will be opened on your browser.
On each participant's side; only 2 incoming RTP ports will be opened.
Unlike one-way broadcasting; one-to-many broadcasting experiment opens both outgoing as well as incoming RTP ports for each participant.
=
<script src="https://www.webrtc-experiment.com/one-to-many-video-broadcasting/meeting.js"></script>
=
var meeting = new Meeting('meeting-unique-id');
// on getting local or remote streams
meeting.onaddstream = function(e) {
// e.type == 'local' ---- it is local media stream
// e.type == 'remote' --- it is remote media stream
document.body.appendChild(e.video);
};
// check pre-created meeting rooms
// it is useful to auto-join
// or search pre-created sessions
meeting.check();
document.getElementById('setup-new-meeting').onclick = function() {
meeting.setup('meeting room name');
};
=
meeting.userid = 'username';
=
You can use each and every signaling channel:
meeting.openSignalingChannel = function(callback) {
return io.connect().on('message', callback);
};
If you want to write socket.io over node.js; here is the server code:
io.sockets.on('connection', function (socket) {
socket.on('message', function (data) {
socket.broadcast.emit('message', data);
});
});
That's it! Isn't it easiest method ever!
Want to use Firebase for signaling?
// "chat" is your firebase id
meeting.firebase = 'chat';
=
meeting.onmeeting = function(room) {
var li = document.createElement('li');
li.setAttribute('user-id', room.userid);
li.setAttribute('room-id', room.roomid);
li.onclick = function() {
var room = {
userid: this.getAttribute('user-id'),
roomid: this.getAttribute('room-id')
};
meeting.meet(room);
};
};
onmeeting is called for each new meeting; and meet method allows you manually join a meeting room.
=
Participants' presence can be detected using onuserleft:
// if someone leaves; just remove his video
meeting.onuserleft = function(userid) {
var video = document.getElementById(userid);
if(video) video.parentNode.removeChild(video);
};
=
onaddstreamIt is called both for local and remote media streams. It returns:
video: i.e. HTMLVideoElement objectstream: i.e. MediaStream objectuserid: i.e. id of the user stream coming fromtype: i.e. type of the stream e.g. local or remotemeeting.onaddstream = function(e) {
// e.type == 'local' ---- it is local media stream
// e.type == 'remote' --- it is remote media stream
document.body.appendChild(e.video);
};
=
This WebRTC One-to-Many video-broadcasting experiment works fine on following web-browsers:
| Browser | Support |
|---|---|
| Firefox | Stable / Aurora / Nightly |
| Google Chrome | Stable / Canary / Beta / Dev |
| Android | Chrome Beta |
=
WebRTC One-to-Many video-broadcasting is released under MIT licence . Copyright (c) 2013 Muaz Khan.