multirtc-websocket
Version:
1) It is a skype-like demo using WebRTC for realtime connections! 2) It allows you enable/disable webcams; and join with or without webcams! 3) It allows you share screen using existing peer connections! 4) It allows you share files with preview and downl
276 lines (234 loc) • 31.1 kB
HTML
<!--
// Muaz Khan - www.MuazKhan.com
// MIT License - www.WebRTC-Experiment.com/licence
// Experiments - github.com/muaz-khan/WebRTC-Experiment
-->
<html lang="en">
<head>
<title>MultiRTC! / RTCMultiConnection Demo ® Muaz Khan</title>
<meta name="description" content="MultiRTC is a WebRTC skype-like application that allows all features as skype provides E.g. text conversation, file sharing, enable/disable screen, enable/disable webcam or microphone etc. It provides additional features like auto-text translation in about 41 languages. It also provides customization of each feature so that you can set each value yourself e.g. chunk-size, intervals, etc." />
<meta name="keywords" content="MultiRTC,RTCMultiConnection,WebRTC,Demos,Experiments,Muaz Khan,WebRTC and Skype,Skype like Demo" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<link rel="author" type="text/html" href="https://plus.google.com/+MuazKhan">
<meta name="author" content="Muaz Khan">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- ui-stylesheet -->
<link href="style.css" rel="stylesheet">
<link href="scrol-bars.css" rel="stylesheet">
<!-- www.RTCMultiConnection.org/changes-log/ -->
<script src="//cdn.webrtc-experiment.com/RTCMultiConnection.js"> </script>
<script src="linkify.js"> </script>
</head>
<body>
<div class="settings">
<button id="settings" title="Customize many options according to your own needs!">Settings</button>
</div>
<div class="self-url">
<label><a href="https://github.com/muaz-khan/WebRTC-Experiment/tree/master/MultiRTC-simple">MultiRTC Demo</a> is using <a href="https://www.webrtc-experiment.com/">WebRTC</a> and <a href="http://www.RTCMultiConnection.org/">RTCMultiConnection.js</a>!</label>
</div>
<h1 style="border: 0;text-align: center;width: 187px;">
<img src="images/logo.png"><br />
<a href="http://www.rtcmulticonnection.org/docs/" target="_blank" style="text-decoration:none;">MultiRTC!</a>
</h1>
<div class="users-list" title="Click to view all shared screens and videos!">
<div class="numbers-of-users">0</div>
<img src="images/users.png">
</div>
<div class="main-input-box">
<textarea placeholder="Send a message"></textarea>
<p id="who-is-typing"></p>
<div class="controls">
<button id="allow-webcam" class="icon" disabled title="Enable Your Webcam"></button>
<button id="allow-mic" class="icon" disabled title="Enable Your Microphone"></button>
<button id="allow-screen" class="icon" disabled title="Enable Your Screen"></button>
<button id="share-files" class="icon" disabled title="Select and Share Your Files"></button>
</div>
</div>
<div class="settings-panel">
<input type="checkbox" id="autoTranslateText">
<label for="autoTranslateText" title="Click to chat with users from different locales! All incoming text messages will be auto converted in your language!">Auto translate text into</label>
<select id="language" title="Select Language in which all incoming messages will be auto converted!">
<option value="en">English</option>
<option value="ar">Arabic (العربية)</option>
<option value="zh-CN">Chinese (Simplified Han) [中文简体]</option>
<option value="zh-TW">Chinese (Traditional Han) [中國傳統]</option>
<option value="ru">Russian (Русский)</option>
<option value="de">Dutch</option>
<option value="fr">French (Français)</option>
<option value="hi">Hindi (हिंदी)</option>
<option value="pt">Portuguese (Português)</option>
<option value="es">Spanish (Español)</option>
<option value="tr">Turkish (Türk)</option>
<option value="nl">Nederlands</option>
<option value="it">Italiano</option>
<option value="pl">Polish (Polski)</option>
<option value="ro">Roman (Român)</option>
<option value="sv">Swedish (Svensk)</option>
<option value="vi">Vietnam (Việt)</option>
<option value="th">Thai(ภาษาไทย)</option>
<option value="ja">Japanese (日本人)</option>
<option value="ko">Korean (한국의)</option>
<option value="el">Greek (ελληνικά)</option>
<option value="ts">Tamil (தமிழ்)</option>
<option value="hy">Armenian (հայերեն)</option>
<option value="bs">Bosnian (Bosanski)</option>
<option value="ca">Catalan (Català)</option>
<option value="hr">Croatian (Hrvatski)</option>
<option value="dq">Danish (Dansk)</option>
<option value="eo">Esperanto</option>
<option value="fi">Finnish (Suomalainen)</option>
<option value="ht">Haitian Creole (Haitian kreyòl)</option>
<option value="hu">Hungarian (Magyar)</option>
<option value="is">Icelandic</option>
<option value="id">Indonesian</option>
<option value="la">Latin (Latinum)</option>
<option value="lv">Latvija (Latvijas or lætviə)</option>
<option value="mk">Macedonian (Македонски)</option>
<option value="no">Norwegian (norsk)</option>
<option value="sr">Serbian (српски)</option>
<option value="sk">Slovak (Slovenský)</option>
<option value="ws">Swahili (Kiswahili)</option>
<option value="cy">Welsh (Cymraeg)</option>
</select>
<button id="save-settings" style="float: right;">Save Settings</button>
<table>
<tr>
<td>
<h2>Set Bandwidth</h2><br />
<label for="audio-bandwidth" class="adjust-width">Audio bandwidth</label>
<input type="text" id="audio-bandwidth" value="50" title="kbits/sec"><small>kbps</small>
<br />
<label for="video-bandwidth" class="adjust-width">Video bandwidth</label>
<input type="text" id="video-bandwidth" value="256" title="kbits/sec"><small>kbps</small>
</td>
<td>
<h2>Set Resolutions</h2><br />
<label for="video-width" class="adjust-width">Video Width</label>
<input type="text" id="video-width" value="640" title="You can use values like: 1920, 1280, 960, 640, 320, 320">
<br />
<label for="video-height" class="adjust-width">Video Height</label>
<input type="text" id="video-height" value="360" title="You can use values like: 1080, 720, 360, 480, 240, 180">
</td>
</tr>
<tr>
<td>
<input type="checkbox" id="prefer-sctp" checked>
<label for="prefer-sctp" title="Prefer using SCTP data channels. Otherwise, RTP data channels will be used.">Is Prefer SCTP Data Channels?</label><br />
<label for="chunk-size" class="adjust-width">Chunk Size</label>
<input type="text" id="chunk-size" value="15000" title="Chrome's sending limit is 64000 however Firefox's receiving limit is 16000."> <small>chars</small> <br />
<label for="chunk-interval" class="adjust-width">Chunk Interval</label>
<input type="text" id="chunk-interval" value="100" title="There must be an interval from 50ms to 500ms to make sure data isn't seamlessly skipped."><small>milliseconds</small><br /><br />
<input type="checkbox" id="skip-RTCMultiConnection-Logs">
<label for="skip-RTCMultiConnection-Logs" title="You can disable all RTCMultiConnection logs.">skip RTCMultiConnection Logs?</label>
</td>
<td>
<h2>Select Devices</h2><br />
<label for="audio-devices">Audio Devices</label>
<select id="audio-devices"></select>
<br />
<label for="video-devices">Video Devices</label>
<select id="video-devices"></select>
</td>
</tr>
<tr>
<td>
<label for="max-participants-allowed">Max Participants Allowed?</label>
<input type="text" id="max-participants-allowed" value="256"> <br /><br />
<input type="checkbox" id="fake-pee-connection">
<label for="fake-pee-connection" title="This feature works only on Chrome; it means that a few peer connection will be creates with no audio/video; and no data channels!">Setup Fake Peer Connection?</label>
</td>
<td>
<h2>Select Candidates</h2><br />
<input type="checkbox" id="prefer-stun" checked>
<label for="prefer-stun">Allow STUN Candidates?</label><br />
<input type="checkbox" id="prefer-turn" checked>
<label for="prefer-turn">Allow TURN Candidates?</label><br />
<input type="checkbox" id="prefer-host" checked>
<label for="prefer-host">Allow Hose Candidates?</label>
</td>
</tr>
<tr>
<td>
<h2>Set DataChannel Options</h2><br />
<label for="dataChannelDict">dataChannelDict</label>
<input type="text" id="dataChannelDict" value="{ordered:true}">
</td>
<td>
<h2>Set SDP Constraints</h2><br />
<input type="checkbox" id="OfferToReceiveAudio" checked>
<label for="OfferToReceiveAudio">OfferToReceiveAudio</label><br />
<input type="checkbox" id="OfferToReceiveVideo" checked>
<label for="OfferToReceiveVideo">OfferToReceiveVideo</label><br />
<input type="checkbox" id="IceRestart">
<label for="IceRestart">IceRestart</label>
</td>
</tr>
</table>
</div>
<div class="users-container"></div>
<div class="main">
<div class="new-message" style="overflow: hidden;height: 250px;">
<div class="user-info" style="height: 100%">
<img src="images/user.png">
</div>
<div class="user-activity">
<div style="float:right;">
MultiRTC is open-sourced <a href="https://github.com/muaz-khan/WebRTC-Experiment/tree/master/MultiRTC-simple">here</a>!
</div>
<h2 class="header">Welcome Sir!</h2>
<p class="message">
Please Enter a <span style="color:red;">UNIQUE</span> room-name: <input type="text" id="room-name" placeholder="Private Room-ID" style="border: 1px solid rgb(253, 253, 253);box-shadow: inset 0 0 0 1px rgb(53, 52, 52);outline: 1px solid rgb(7, 7, 7);" title="Your private rooms unique-id. It is required!"><br />
<small>You can enter email; or any string or numbers!</small> <br />
<small style="color: rgb(1, 170, 143);font-style: italic;font-weight: bold;">You MUST <span style="color:red;">manually</span> share this <span style="color:red;">unique room-name</span> with target users so they can join you!</small> <br /><br />
Please Enter Your Full Name: <input type="text" id="your-name" placeholder="(optional)" title="Optional but Recommended!"><button id="continue" title="Click to join the room!">continue</button>
</p>
</div>
</div>
<div class="new-message" style="overflow: hidden;height: 300px;">
<div class="user-info" style="height: 100%">
<img src="images/help.png">
</div>
<div class="user-activity">
<h2 class="header">What is <a href="https://github.com/muaz-khan/WebRTC-Experiment/tree/master/MultiRTC-simple">MultiRTC</a>?</h2>
<p class="message">
<ol style="margin-left:2em;">
<li>
It is a skype-like demo using WebRTC for realtime connections!
</li>
<li>
It allows you enable/disable webcams; and join with or without webcams!
</li>
<li>
It allows you share screen using existing peer connections!
</li>
<li>
It allows you share files with preview and download links!
</li>
<li>
It allows you <span style="color:red;">auto translate incoming messages</span> in your <a href="http://www.rtcmulticonnection.org/docs/language/">own language</a>!
</li>
<li>
It gives you full control over bandwidth and screen resolutions!
</li>
<li>
It allows you adjust file sharing speed yourself by setting <a href="http://www.rtcmulticonnection.org/docs/chunkSize/">chunk-size</a> and <a href="http://www.rtcmulticonnection.org/docs/chunkInterval/">chunk-intervals</a>!
</li>
<li>
It allows you test all WebRTC features by enabling/disabling some check-boxes!
</li>
</ol>
</p>
</div>
</div>
</div>
<audio src="data:audio/mp3;base64,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I/8s9yK0RxeEdPciTkCeo3TwwBE///////////////4s02AAABLlkoHIXc/1sWo5TzJGaCYP46BaPBaHAnPAif5IGJ+aifls//OkVP8a3f863z0jyoqAgm1sex6E3LbAipgh9aDAQAAAQWTlltu2shlj1HCQZEnMXVWG6g1YYZqMaNPJxRzvSHJhXEsMuC07Vs6JXEAnAd7UXhRk1etbTSLo3mlJMiwdtqq6VibCZTxn75PsbXaTL4p5cuoce9fFjHsWKZ4o7qE1R2oPNKM6KWzIKsl5JL0XVInMDopg9xpsVpimAKMGi5EvJMYYmeH7SQrWbTSIJlEi8rPufgxVCbFbIfPIIYNw1eKD/aU7L+laevJPjY4Z14S/Wx9tIZHRSilCPNj+K7RtuniipyOeZsFkHW1///////////////+TTAAAARwDB6IUbpbgzTQE9QacMM1GNGi5SPyqhKIRkAwR1ps0tsPJ//OkVP8a5cE23z0j2IpghmTcY9gMUWXAiLgh9awGMBgABLacctttsgtguCqJ+OMTOASwhBv7PiK3nUcipZTEEwPw35i+WuyKh8r1enbCfCcToFyPJyX4Gjju1pdJQjUgVpivlN+K23cory8NuV8Mh06+wn9SjVi0iLaUnVw0anNEe6orUgDbz6IoQLMq7JGjR5Ba3kjju2VNsyqbRI3KCkm5OQUmTo/IZIzqiJQxpJPnom6VqUJEbNRhEAPE6ozCqiaXFw2PsG6zaUMgXZUvzL1Gmly00lkxQgHPuMi10gmY5LkhOCz4guXM0VE73lnpnGKtFv//////4I2WAAAA9AuDMT8XMWNIAwCAdyJjqcnEg9UmQJgch31Pzd3BkfM6//OkVP8bDh003z0o1goggmlsex4svTvAiOgh9asCAEAAQWq+Wy2yQcQC0SAOZcQyEwUaSxbQl8pVgtquV6GoxtORyG4VzUc92JniLtwGyiV3Ed3YTu74fSei5MXi73ZyNDugNr20UR+tbOQ+B8PmUOC8USRZMA+nPt0xR2fJkqmzMtpqrETpC06Q3TqUW5QpK71mLYWEGbl2C7V3WW29xYpZeZR3it1mzPW+p+fUutzVat6HZx6sWnPiI6VLRzJKl9oqDrLdmzPPlyWoltu0fDgVbMzuZ59t/uv7pouqP0j83C9mvVIZVWyo+pf///////////////oNx24A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" id="message-sound"></audio>
<!-- User Interface -->
<script src="ui.main.js"> </script>
<script src="ui.peer-connection.js"> </script>
<script src="ui.share-files.js"> </script>
<script src="ui.users-list.js"> </script>
<script src="ui.settings.js"> </script>
</body>
</html>