Build a WebRTC Video Recorder and Downloads as MP4 Video in Browser Using Javascript Full Project For Beginners

 

 

 

 

 

index.html

 

 

<div id="container">
    <h1>Video Recorder</h1>
    <p>This page allows you to record video from your camera and save it in mp4/h.264 format. At the moment it is intended to work
      for Chrome, Firefox and Microsoft Edge. Note: there is no limit for the amount of time you record. Everything is leveraged
      by the web browser. No plugins are required.</p>
    <p>Note: this video recorder works properly with the latest versions of Chrome, Firefox and Microsoft Edge. Internet Explorer
      11 does not support WebRTC, hence this demo will not work there.
      <a href="https://html5test.com/compare/browser/ie-11/chrome-64/firefox/edge.html"
        target="_blank">https://html5test.com/compare/browser/ie-11/chrome-64/firefox/edge.html</a>
    </p>
    <table>
      <tr>
        <td>
          <label for="videoSource">Video Source
          <select name="" id="videoSource"></select>
        </label></td>
        <td style="display:none;">
          <label for="audioSource">Audio Source
            <select name="" id="audioSource"></select>
          </label>
        </td>
        <td>
      </tr>
      
     
    </table>
    <div id="videoMain">
      <video muted autoplay id="videoContainer"></video>
    </div>
    <div id="videoPreview" style="display:none">
      <input type="hidden" name="videoBitrate" id="videoBitrate" value="4000000">
      <input type="hidden" name="audioBitrate" id="audioBitrate" value="320000">
      <video controls id="recordedVideo"></video>
      <button id="play" disabled>Play</button>
    </div>
    <div class="log"></div>

    <div>
      <button id="record" disabled>Start Recording</button>
      <button id="preview" disabled>See Recording</button>
      <button id="download" disabled>Download</button>
    </div>
  </div>

 

 

 

style.css

 

 

.hidden {
  display: none;
}

.highlight {
  background-color: #eee;
  font-size: 1.2em;
  margin: 0 0 30px 0;
  padding: 0.2em 1.5em;
}
.warning {
  color: red;
  font-weight: 400;
}

div#errorMsg p {
  color: #F00;
}

body {
  font-family: 'Roboto', sans-serif;
  font-weight: 300;
}

a {
color: #6fa8dc;
font-weight: 300;
text-decoration: none;
}

a:hover {
color: #3d85c6;
text-decoration: underline;
}

a#viewSource {
display: block;
margin: 1.3em 0 0 0;
border-top: 1px solid #999;
padding: 1em 0 0 0;
}

div#links a {
display: block;
line-height: 1.3em;
margin: 0 0 1.5em 0;
}

div.outputSelector {
margin: -1.3em 0 2em 0;
}

@media screen and (min-width: 1000px) {
/* hack! to detect non-touch devices */
  div#links a {
		line-height: 0.8em;
  }
}

h1 a {
font-weight: 300;
margin: 0 10px 0 0;
white-space: nowrap;
}

audio {
max-width: 100%;
}

body {
font-family: 'Roboto', sans-serif;
margin: 0;
padding: 1em;
word-break: break-word;
}

button {
background-color: #d84a38;
border: none;
border-radius: 2px;
color: white;
font-family: 'Roboto', sans-serif;
font-size: 0.8em;
margin: 0 0 1em 0;
padding: 0.5em 0.7em 0.6em 0.7em;
}

button:active {
background-color: #cf402f;
}

button:hover {
background-color: #cf402f;
}

button[disabled] {
color: #ccc;
}

button[disabled]:hover {
background-color: #d84a38;
}

canvas {
  background-color: #ccc;
  max-width: 100%;
  width: 100%;
}

code {
font-family: 'Roboto', sans-serif;
font-weight: 400;
}

div#container {
margin: 0 auto 0 auto;
max-width: 40em;
padding: 1em 1.5em 1.3em 1.5em;
}

div#links {
	padding: 0.5em 0 0 0;
}

h1 {
border-bottom: 1px solid #ccc;
font-family: 'Roboto', sans-serif;
font-weight: 500;
margin: 0 0 0.8em 0;
padding: 0 0 0.2em 0;
}

h2 {
color: #444;
font-size: 1em;
font-weight: 500;
line-height: 1.2em;
margin: 0 0 0.8em 0;
}

h3 {
border-top: 1px solid #eee;
color: #666;
font-weight: 500;
margin: 20px 0 10px 0;
padding: 10px 0 0 0;
white-space: nowrap;
}

html {
/* avoid annoying page width change
when moving from the home page */
overflow-y: scroll;
}

img {
border: none;
max-width: 100%;
}

input[type=radio] {
position: relative;
top: -1px;
}

p {
color: #444;
font-weight: 300;
line-height: 1.6em;
}

p#data {
border-top: 1px dotted #666;
font-family: Courier New, monospace;
line-height: 1.3em;
max-height: 1000px;
overflow-y: auto;
padding: 1em 0 0 0;
}

p.borderBelow {
border-bottom: 1px solid #aaa;
padding: 0 0 20px 0;
}

section p:last-of-type {
margin: 0;
}

section {
  border-bottom: 1px solid #eee;
  margin: 0 0 30px 0;
  padding: 0 0 20px 0;
}

section:last-of-type {
  border-bottom: none;
  padding: 0 0 1em 0;
}

select {
  margin: 0 1em 1em 0;
  position: relative;
  top: -1px;
}

h1 span {
  white-space: nowrap;
}

strong {
  font-weight: 500;
}

textarea {
  font-family: 'Roboto', sans-serif;
}

video {
  background: #222;
  margin: 0 0 20px 0;
  width: 100%;
}

@media screen and (max-width: 650px) {
  .highlight {
    font-size: 1em;
    margin: 0 0 20px 0;
    padding: 0.2em 1em;
  }
  h1 {
    font-size: 24px;
  }
}

@media screen and (max-width: 550px) {
  button:active {
    background-color: darkRed;
  }
  h1 {
    font-size: 22px;
  }
}

@media screen and (max-width: 450px) {
  h1 {
    font-size: 20px;
  }
}


 button {
  margin: 0 3px 10px 0;
  padding-left: 2px;
  padding-right: 2px;
  width: 99px;
}

button:last-of-type {
  margin: 0;
}

p.borderBelow {
  margin: 0 0 20px 0;
  padding: 0 0 20px 0;
}

video {
  height: auto;
  margin: 0 12px 20px 0;
  vertical-align: top;
  min-width: 100%;
}


video:last-of-type {
  margin: 0 0 20px 0;
}

video#videoRecorder {
  margin: 0 20px 20px 0;
}

@media screen and (max-width: 500px) {
  button {
    font-size: 0.8em;
    width: calc(33% - 5px);
  }
}

@media screen and (max-width: 720px) {
  video {
    height: calc((50vw - 48px) * 3 / 4);
    margin: 0 10px 10px 0;
    width: calc(50vw - 48px);
  }

  video#videoRecorder {
    margin: 0 10px 10px 0;
  }
}

#log, .log {
  font-size: 10px;
  margin-bottom: 20px;
}

 

 

 

script.js

 

 

/**
 * [videoRecorder is the class for video recording]
 * @type {Class}
 */
var videoRecorder = class videoRecorder {
  constructor(selectVideoSources, selectAudioSources, selectVideoBitrate, selectAudioBitrate, DOMVideoObject, recordButton, downloadButton, recordedVideo, previewButton, videoMain, videoPreview, countdown = 30) {
    /**
     * [videoSources holds a list of found video sources]
     * @type {Array}
     */
    this.videoSources = [];
    /**
     * [audioSources holds a list of found audio sources]
     * @type {Array}
     */
    this.audioSources = [];
    /**
     * [logging allows to see logging information through the console.]
     * @type {Boolean}
     */
    this.logging = false;
    /**
     * [countdownTimer takes the parameter countdown which is numeric. it is the total allowed time of recording]
     * @type {Parameter|Numeric}
     */
    this.countdownTimer = countdown;
    /**
     * [selectVideoSources takes the parameter selectVideoSources which is a string. it is a querySelector for the video source selection source: '#myselect']
     * @type {DOM}
     */
    this.selectVideoSources = document.querySelector(selectVideoSources);
    /**
     * [selectAudioSources takes the parameter selectAudioSources which is a string. it is a querySelector for the video source selection source: '#myselect']
     * @type {DOM}
     */
    this.selectAudioSources = document.querySelector(selectAudioSources);
    /**
     * [selectVideoBitrate takes the parameter selectVideoBitrate which is a string. it is a querySelector for the audio source selection input: '#myselect']
     * @type {DOM}
     */
    this.selectVideoBitrate = document.querySelector(selectVideoBitrate);
    /**
     * [selectAudioBitrate takes the parameter countdown which is a string. it is a querySelector for the video bitrate selection input: '#myselect']
     * @type {DOM}
     */
    this.selectAudioBitrate = document.querySelector(selectAudioBitrate);
    /**
     * [previewButton takes the parameter previewButton which is a string. it is a querySelector for the button that launches the preview: '#myselect']
     * @type {DOM}
     */
    this.previewButton = document.querySelector(previewButton);
    /**
     * [DOMVideoObject takes the parameterDOMVideoObject which is a string. it is a querySelector for the main video output: '#myselect']
     * @type {DOM}
     */
    this.DOMVideoObject = document.querySelector(DOMVideoObject);
    /**
     * [videoPreview takes the parameter videoPreview which is a string. it is a querySelector for the container for the video that was recorded]
     * @type {DOM}
     */
    this.videoPreview = document.querySelector(videoPreview);
    /**
     * [videoMain takes the parameter videoMain which is a string. it is a querySelector for the container for the main video]
     * @type {DOM}
     */
    this.videoMain = document.querySelector(videoMain);
    /**
     * [portVideoPreviewWidth is the default width for the recorded and preview video]
     * @type {Number}
     */
    this.portVideoPreviewWidth = 640;
    /**
     * [portVideoPreviewHeight is the default height for the recorded and preview video]
     * @type {Number}
     */
    this.portVideoPreviewHeight = 360;
    /**
     * [recorderOptions are the default encoding settings for the browser to use]
     * @type {Object}
     */
    this.recorderOptions = {
      audioBitsPerSecond: 128000,
      videoBitsPerSecond: 4000000,
      mimeType: 'video/mp4'
    };
    /**
     * [recordedSomething tell to us if we recorded something]
     * @type {Boolean}
     */
    this.recordedSomething = false;
    /**
     * [stream is an object that contains the stream passed from the device. it shares common data with window.stream]
     * @type {Object}
     */
    this.stream = {};
    /**
     * [mediaRecorder will be the MediaRecorded object to be used to record blob data]
     * @type {[type]}
     */
    this.mediaRecorder = null;
    /**
     * [recordedBlobs are raw data recorded in an array by the browser.]
     * @type {Array}
     */
    this.recordedBlobs = [];
    /**
     * [recordButton takes the parameter recordButton which is a string. it is a querySelector for the container for the record button]
     * @type {String}
     */
    this.recordButton = document.querySelector(recordButton);
    /**
     * [previewButtonLabel is the default string for the button that will play the recording]
     * @type {String}
     */
    this.previewButtonLabel =  'Play Recording';
    /**
     * [playingPreview is the default string for the button that will playback the recording]
     * @type {String}
     */
    this.playingPreview =      'Playback Rec';
    /**
     * [recordButtonLabel is the default string for the button that will start the recording]
     * @type {String}
     */
    this.recordButtonLabel =   'Start Recording';
    /**
     * [downloadButtonLabel is the default string for the button that will download the recording]
     * @type {String}
     */
    this.downloadButtonLabel = 'Download Video';
    /**
     * [downloadButton takes the parameter downloadButton which is a string. it is a querySelector for the download button]
     * @type {DOM}
     */
    this.downloadButton = document.querySelector(downloadButton);
    /**
     * [recordedVideo takes the parameter recordedVideo which is a string. it is a querySelector for the playback button for the recorded video]
     * @type {DOM}
     */
    this.recordedVideo = document.querySelector(recordedVideo);
    /**
     * [log is a queryselector for the log division (we will write logging data on it)]
     * @type {DOM}
     */
    this.log = document.querySelector('.log');
    /**
     * [requiredResolutions is an array of allowed resolutions to be used by the recorder.]
     * @type {Array}
     */
    this.requiredResolutions = [
      {
        'label': '720p(HD)',
        'width': 1280,
        'height': 720,
        'ratio': '16:9'
      }, {
        'label': '360p(nHD)',
        'width': 640,
        'height': 360,
        'ratio': '16:9'
      }, {
        'label': '480p',
        'width': 640,
        'height': 480,
        'ratio': '4:3'
      }
    ];
    /**
     * [blockedposter is a poster that displays that the access was denied to access devices]
     * @type {String}
     */
    this.blockedposter = 'data:image/png;base64,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P3WcY/289wvZY46jIiIiMpiHd0BEROSHSpIkg5f4dk9Q25PhqQXAEL5fYnqq/d3uezFhvV6fLTrN2Vae52cLSufaWq/XZ9uoqurkaro52phjDnQLd9esShqzj5qmGbWPps7Vuq73q9LeWwGw7f96vT5ZJN1ut/txmVIAnHNeH9uvXVPH6pJxjvHz3r9EeMoqShEREfn/+dv/fQEATLRYLEKWZfub3zdNE4qiOPpghqmSJAlpmh48xbWu61BV1cFDHu7dVpqmIU3Tg5v+V1W1b++aNtp27tXGpZIkCXVd75/++8svv4SyLK9us7+PmqYJVVVd3fZisdiPV9tuWZaT9/0jZVl2MDbtuMz10Ig55vV7Edvnvd33ZVle/VkAgJ+VAiAAwER5noc//vgjhBDCy8vL2SfDAgDAI/3HozsAAPCjWa1W+683m80DewIAAOdZAQgAMEGapuF///d/99//53/+52yXoQIAwC1YAQgAMEF39d/T05PiHwAA754VgAAAI2VZFv7888/99//4xz9u/sARAAC4lhWAAABHtA/3SJIk5HkeiqLY/+z3339X/AMA4IdgBSAAwBG73fA/k56fn0OWZfftDAAAXMgKQACACZ6ensJyuXx0NwAAYLS/P7oDAADv1dPT0/4y4KqqQlEUoSzLh/YJAACmcgkwAAAAAETMJcAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACImAIgAAAAAERMARAAAAAAIqYACAAAAAARUwAEAAAAgIgpAAIAAABAxBQAAQAAACBiCoAAAAAAEDEFQAAAAACI2P8DYHindYjLDp4AAAAASUVORK5CYII=';
    /**
     * [poster is a poster that displays that a device is busy]
     * @type {String}
     */
    this.poster = 'data:image/png;base64,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MI6N9Tewe6DPr8fOnn81YvllASAAkB0BIACQqd9eE2zkpd/TgI+aApyL/7EmJAcAsiUABAAy9fSLrbi+UXQpBsORPm/aYROQfPx3ITkAkDEBIACQOSOc8tHvnYCz2FmY1/tt5wcAkLGRogsAANTff1ttxel7ii5F/f218UZ849X+fb97cLhvL8Uurm9E/M+/MAIQAMhWIyL0OACATD10VyM++7/fUXQxoHQ+//XN+NDvrRddDACg5kwBBgAy9/SLrbj2iu8cYbvF503/BQCyJwAEAHJx/nkBIGz3X50XAEAOBIAAQC4+/3UjnWCrp19sxbM3BIAAQPYEgABALn7rG5txUwYIr/nNP3dCAAD5EAACALm4vhFx3npn8Jr/fM35AADkQwAIAOTmPwk8ICIill9uxdMvmv4LAORDAAgA5Oa/fN00YIiI+MxVJwIAkB8BIACQm+sbEZ81ChDiKQEgAJAjASAAkKsFwQcD7ssvtGL5ZdN/AYD8CAABgFz91jc247mbwg8G13+8slF0EQCAASMABABytd6KePI5owAZTNc3TP8FAPInAAQAcvcfntuMdYMAGUALVzfjugGAAEDOBIAAQO6eu9mKz3/dKCgGzy//qfQPAMifABAAKMQv/6kAkMFyYXUzLl839BUAyN9I0QUAAAbThdXNePrFVjx0V6PootTaczdb8f/+eSt+54XN+KOXWnHtleT/jw5FNO9sxLcebMQ7727EIxNDMeKjyNQvPSv0BgCK0YgIX0MCAIV4771D8cmHfB+ZhQurm/HzX92M8893FzodPtCI779/KP7PY8NxyEfSd8+81Iq/9d9fLboYAMCAEgACAIUZaUT8l792RzTvNPSsX55/NeKf/MF6fPba3kab3XNHxE+9dSTec9hKMf3045fW49euGAEIABRDzw4AKMx6K+JTKzZF6JcvrbXie7706p7Dv4gkQPyR31+PH7+0bqfmPll+uRULV4V/AEBxBIAAQKEWrm7G8suSpv360lorZn731bj2Sn/q8teubMaPPS0E7IdPrWyoRwCgUAJAAKBQRgHu39MvJuHf9T5X42evbcY/urTe3xcdMEb/AQBlIAAEAApnFODeXd9Ipuz2O/xr+8zVzfiVrwmw9sroPwCgDASAAEDh1lsR/+KPjALci0+ubGQenv7zP1rv29TiQfL0i0b/AQDlIAAEAErh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';
    /**
     * [nodeviceselected shows a poster that says that no device was selected]
     * @type {String}
     */
    this.nodeviceselected = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDMvMTAvMTgFlW0+AAAgAElEQVR4nOzdv2tdaYLn4bd2G+yFBWkia4PFt6NyJg0sVG1kddTOrI6mMquj7o1K8xeUK9yoVVlvVKqsGxZGFSzURCUHC24YaBkmcMPASDCBKpNgAxt66Q3evW1J973S/XXuPfdbzwOmqGvr6pz3HPlyPn7Pez4qpfylAAAAAACR/t2qNwAAAAAA6I4ACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMA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AQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACNh3RtsAAAb6SURBVAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAwP9rxw5kAAAAAAb5W9/jK4wAAIAxAQgAAAAAYwIQAAAAAMYEIAAAAACMCUAAAAAAGBOAAAAAADAmAAEAAABgTAACAAAAwJgABAAAAIAxAQgAAAAAYwIQAAAAAMYEIAAAAACMBRVp6blu4GjtAAAAAElFTkSuQmCC';
    /**
     * [selectdevice shows a poster requesting the user to select a device]
     * @type {String}
     */
    this.selectdevice = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAAWdEVYdENyZWF0aW9uIFRpbWUAMDMvMTAvMTgFlW0+AAAgAElEQVR4nOzdv1dc6WHH4dc5OUd0TCd1Glerjkm16kSqqBOu4k5slXQiVdKt9i8I2zmVUbeugjqnMnRyZei0lYdOqgKdVDnFmzmwcGeY3/fOl+c5R2dtEMzLy8wV98N73/urUsrfCgAAAAAQ6e/aHgAAAAAAsDoCIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCY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AAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAPE37HsAAAaXSURBVEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAAAABBMAAQAAACAYAIgAAAAAAQTAAEAAAAgmAAIAAAAAMEEQAAAAAAIJgACAAAAQDABEAAAAACCCYAAAAAAEEwABAAAAIBgAiAAAAAABBMAAQAAACCYAAgAAAAAwQRAAAAAAAgmAAIAAABAMAEQAAAAAIIJgAAAAAAQTAAEAAAAgGACIAAAAAAEEwABAAAAIJgACAAAAADBBEAAAAAACCYAAgAAAEAwARAAAAAAggmAAAD8Xzt2IAMAAAAwyN/6Hl9hBADAmAAEAAAAgDEBCAAAAABjAhAAAAAAxgQgAAAAAIwJQAAAAAAYE4AAAAAAMCYAAQAAAGBMAAIAAADAWJ+lDfyL9mzZAAAAAElFTkSuQmCC';
    /**
     * [nullDevice is an hypotetical and imaginary device hanging on the clouds of many unknown players, also used to tell the browser to use something that does not exists
     * to allow us to detect video devices more efficiently]
     * @type {String}
     */
    this.nullDevice = '@playerme/__NULL_DEVICE__';
    this.previewButton.textContent = this.previewButtonLabel;
    this.recordButton.textContent = this.recordButtonLabel;
    this.downloadButton.textContent = this.downloadButtonLabel;
    
  }
  /**
   * [hasGetUserMedia return to us if the current browser uses GetUserMedia instance]
   * @return {Boolean} [true: browser uses GetUserMedia, false: F you]
   */
  hasGetUserMedia() {
    return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia);
  }
  
  /**
   * [init initializes the full script]
   * @return {Void}
   */
  init() {
    const self = this;
    self.DOMVideoObject.srcObject = null;
    self.DOMVideoObject.poster = self.selectdevice;
    let foundNullDom = false;
    if (!self.hasGetUserMedia()) {
      alert('Incompatible browser to use video capturing features');
      return false;
    }
    if (self.selectVideoSources === null) {
      console.error('Needed a select/input to append video sources. not configured a required one');
      foundNullDom = true;
    }
    if (self.selectAudioSources === null) {
      console.error('Needed a select/input to append audio sources. not configured a required one');
      foundNullDom = true;
    }
    if (self.selectVideoBitrate === null) {
      console.error('Needed a select/input to append video bitrate. not configured a required one');
      foundNullDom = true;
    }
    if (self.selectAudioBitrate === null) {
      console.error('Needed a select/input to append audio bitrate. not configured a required one');
      foundNullDom = true;
    }
    if (self.DOMVideoObject === null) {
      console.error('Needed a DOM for Video. not configured a required one');
      foundNullDom = true;
    }
    if (foundNullDom) {
      throw ('Please check the messages above regarding the need of a dom missing object');
    }
    self.selectAudioSources.onchange = function () { self.getStream(self); };
    self.selectVideoSources.onchange = function () { self.getStream(self); };
    self.recordButton.onclick = function () { self.toggleRecording(self); };
    self.downloadButton.onclick = function () { self.download(self); };
    self.previewButton.onclick = function () { self.togglePreview(self);};
    self.recordedVideo.addEventListener('error', function (ev) {
      console.error('MediaRecording.recordedMedia.error()');
      alert(`Your browser can not play ${self.recordedVideo.src} media clip. 
      event: ${JSON.stringify(ev)}`);
    }, true);
    //first let's fetch the available video and mic, so we can load them on the list of the devices by name
    /**
     * [startup is a promise object that allows the access to devices]
     * @return {Promise} [The startup function]
     */
    var startup = function() {
      return navigator.mediaDevices.enumerateDevices().then(x => {
        return navigator.mediaDevices.getUserMedia({ audio: true, video: self.nullDevice });
      });
    };
    /**
     * [videofail is a failback of startup. if the default device is likely busy, this will
     * help us to list all the video and audio devices]
     * @return {Promise]} [a promise that contains the list of devices]
     */
    var videofail = function() {
      return navigator.mediaDevices.enumerateDevices().then(x => {
        return navigator.mediaDevices.getUserMedia({ audio: true });
      });
    };
    /**
     * [getDevices allow us to filter the devices and put them into the selection boxes]
     * @return {Promise} [a promise that contains the list of devices]
     */
    var getDevices = function(){
      let self = vr;
      if (window.stream) {
        window.stream.getTracks().forEach(function (track) {
          track.stop();
        });
      }
      return navigator.mediaDevices.enumerateDevices().then(x => {
        if(self.logging) console.log('listDevices',x);
        let videodevices = [];
        let audiodevices = [];
        let option;

        videodevices = x.filter(function(e){
          return e.kind === 'videoinput';
        });
        audiodevices = x.filter(function (e) {
          return e.kind === 'audioinput';
        });
        if(self.logging) console.log([videodevices,audiodevices]);
        for (let i = 0; i !== videodevices.length; ++i) {
          if ($(self.selectVideoSources).find(`option[value='${videodevices[i].deviceId}']`).length > 0){
            $(self.selectVideoSources)
              .find(`option[value='${videodevices[i].deviceId}']`)
              .text(videodevices[i].label || 'camera ' + (self.selectVideoSources.length + 1));
          } else {
            $(`<option value="${videodevices[i].deviceId}">${videodevices[i].label || 'camera ' + (self.selectVideoSources.length + 1)}</option>`).appendTo($(self.selectVideoSources));
          }
        }
        for (let i = 0; i !== audiodevices.length; ++i) {
          if ($(self.selectAudioSources).find(`option[value='${audiodevices[i].deviceId}']`).length > 0) {
            $(self.selectAudioSources)
              .find(`option[value='${audiodevices[i].deviceId}']`)
              .text(audiodevices[i].label || 'camera ' + (self.selectAudioSources.length + 1));
          } else {
            $(`<option value="${audiodevices[i].deviceId}">${audiodevices[i].label || 'camera ' + (self.selectAudioSources.length + 1)}</option>`).appendTo($(self.selectAudioSources));
          }
        }
        // now we set a default empty value for the selects
        if ($(self.selectVideoSources).find(`option[value='${self.nullDevice}']`).length === 0) {
          $(`<option value="${self.nullDevice}">None</option>`)
            .appendTo($(self.selectVideoSources));
          $('<option value="null" selected="selected">Select a camera</option>')
            .prependTo($(self.selectVideoSources));
        }
      });
    };
    startup()
      .then( x => {
        if(self.logging) console.log(x);
        if (x instanceof MediaStream){
          x.stop();
        }
        getDevices();
      })
      .catch( y => {
        if(self.logging) console.log(y);
        videofail()
          .then( x => {
            if(self.logging) console.log(x);
            getDevices();
          })
          .catch( z => {
            self.DOMVideoObject.srcObject = null;
            if (z.name === 'NotAllowedError'){
              self.DOMVideoObject.poster = self.blockedposter;
            }
          });
      })
      .then(z => {
        if(self.logging) console.log('video fails, using only audio', z);
        getDevices();
      });
  }
  /**
   * [getStream allow us to get the stream of the selected media and start to display the required media into the main video container.
   * this also tests each resolution and display the available resolution into the main video container. if no video is displayed, a 
   * poster is displayed that the device is not compatible with the required resolutions.]
   * @param  {Object} self [this class]
   */
  getStream(self) {
    if (window.stream) {
      window.stream.getTracks().forEach(function (track) {
        track.stop();
      });
    }
    if (self.selectVideoSources.value === self.nullDevice){
      self.DOMVideoObject.srcObject = null;
      self.DOMVideoObject.poster = self.nodeviceselected;
      self.recordButton.disabled = true;
      return;
    } else if (self.selectVideoSources.value === 'null') {
      self.DOMVideoObject.srcObject = null;
      self.DOMVideoObject.poster = self.selectdevice;
      self.recordButton.disabled = true;
      return;
    }
    // testing modes....
    let currentResolution = 0;
    function testAndRun(self, currentResolution) {
      const cameraname = self.selectVideoSources.options[self.selectVideoSources.options.selectedIndex].text;
      try {
        var constrains = {
          audio: {
            deviceId: { exact: self.selectAudioSources.value }
          },
          video: {
            width: { exact: self.requiredResolutions[currentResolution].width },
            height: { exact: self.requiredResolutions[currentResolution].height },
            framerate: { ideal: 30, max: 60 },
            deviceId: { exact: self.selectVideoSources.value }
          }
        };
        if(self.logging) console.log(`${cameraname}: Resolution set to ${self.requiredResolutions[currentResolution].width} x ${self.requiredResolutions[currentResolution].height}`);
        navigator.mediaDevices.getUserMedia(constrains)
          .then(function (stream) {
            /** this conditional makes sure if microsofot edge have videotracks but not return video. This  means there is another process using the required video device... */
            var warn = `${cameraname}: the camera is being used by another application, or the device is not ready.`;
            var working = `${cameraname}: Resolution ${self.requiredResolutions[currentResolution].width} x ${self.requiredResolutions[currentResolution].height} working, using this resolution`;
            if (stream.getVideoTracks().length === 0) {
              self.DOMVideoObject.srcObject = null;
              console.warn(warn);
              self.recordButton.disabled = true;
              self.log.innerHTML = warn;
              if (window.stream) {
                window.stream.getTracks().forEach(function (track) {
                  track.stop();
                });
              }
              self.DOMVideoObject.poster = self.poster;
            } else {
              if(self.logging) console.log(working);
              self.log.innerHTML = working;
              self.recordButton.disabled = false;
              self.gotStream(stream);
            }
          })
          .catch(e => {
            var warn = `${cameraname}: the camera is being used by another application, or the device is not ready.`;
            if(self.logging) console.log('error found:', e);
            if (e.name === 'NotReadableError') {
              self.DOMVideoObject.srcObject = null;
              console.warn(warn);
              self.log.innerHTML = warn;
              if (window.stream) {
                window.stream.getTracks().forEach(function (track) {
                  track.stop();
                });
              }
              self.recordButton.disabled = true;
              self.DOMVideoObject.poster = self.poster;
            } else {
              var w = `${cameraname}: Resolution ${self.requiredResolutions[currentResolution].width} x ${self.requiredResolutions[currentResolution].height} for selected camera does not work, switching for more suitable resolution...`;
              console.warn(w);
              self.log.innerHTML = w;
              setTimeout(function () {
                currentResolution++;
                testAndRun(self, currentResolution);
              }, 500);
            }
          });
      } catch (e) {
        var warn;
        try{
          warn = `${cameraname}: Resolution ${self.requiredResolutions[currentResolution].width} x ${self.requiredResolutions[currentResolution].height} for selected camera does not work, switching for more suitable resolution...`;
          self.DOMVideoObject.srcObject = null;
          if(self.logging) console.log('error found:', e);
          console.warn(warn);
          self.log.innerHTML = warn;
          setTimeout(function () {
            currentResolution++;
            testAndRun(self, currentResolution);
          }, 500);
        } catch (e) {
          if (window.stream) {
            window.stream.getTracks().forEach(function (track) {
              track.stop();
            });
          }
          warn =`${cameraname}: This camera cannot display a proper resolution. It could be the device is being used by another application or the camera does not support the required resolutions. Please choose another device.`;
          self.DOMVideoObject.srcObject = null;
          self.log.innerHTML = warn;
          self.recordButton.disabled = true;
          self.DOMVideoObject.poster = self.poster;
        }
      }
    }
    testAndRun(self, currentResolution);
  }
  /**
   * [gotStream allow us to get the stream from the selected main video device output on the page]
   * @param  {Object} stream [the data stream from the selected device]
   */
  gotStream(stream) {
    if (window.stream) {
      window.stream.getTracks().forEach(function (track) {
        track.stop();
      });
    }
    var self = this;
    self.stream = stream;
    window.stream = stream;
    self.DOMVideoObject.srcObject = stream;
  }
  /**
   * [handleError is a basic error handler]
   * @param  {Object} err [the Error Object]
   * @throws {String}     [an string with the error details.]
   */
  handleError(err) {
    if(self.logging) console.log(err);
    console.error(err.name + ': ' + err.message);
    throw (err.name + ': ' + err.message);
  }
  /**
   * [toggleRecording toggles between recording mode and non recording mode]
   * @param  {Object} self [this class]
   */
  toggleRecording(self) {
    $(self.videoMain).show();
    $(self.videoPreview).hide();
    if (self.recordButton.textContent === 'Start Recording') {
      self.startRecording(self);
      self.recordedSomething = true;
      self.previewButton.disabled = true;
    } else {
      self.stopRecording(self);
      if(self.recordedSomething){
        self.previewButton.disabled = false;
        self.recordedSomething = false;
      }
      self.recordButton.textContent = 'Start Recording';
      self.downloadButton.disabled = false;
    }
  }
  /**
   * [togglePreview toggles between displaying the recording video and the view to get ready a new recording.]
   * @param  {Object} self [this class]
   */
  togglePreview(self){
    $(self.videoMain).hide();
    $(self.videoPreview).show();
    if($(self.videoPreview).css('display') === 'block'){
      self.play(self);
    }
  }
  /**
   * [startRecording starts to record the media through the provided options]
   * @param  {Object} self [this class]
   */
  startRecording(self) {
    $(self.recordedVideo).css({
      'width': self.portVideoPreviewWidth,
      'height': self.portVideoPreviewHeight
    });
    self.recordedBlobs = [];
    self.recorderOptions.mimeType = 'video/webm;codecs=h264';
    if (!MediaRecorder.isTypeSupported(self.recorderOptions.mimeType)) {
      if(self.logging) console.log(self.recorderOptions.mimeType + ' is not Supported');
      self.recorderOptions.mimeType = 'video/webm;codecs=vp9';
      if (!MediaRecorder.isTypeSupported(self.recorderOptions.mimeType)) {
        if(self.logging) console.log(self.recorderOptions.mimeType + ' is not Supported');
        self.recorderOptions.mimeType = 'video/webm;codecs=vp8';
        if (!MediaRecorder.isTypeSupported(self.recorderOptions.mimeType)) {
          if(self.logging) console.log(self.recorderOptions.mimeType + ' is not Supported');
          self.recorderOptions.mimeType = 'video/webm';
          if (!MediaRecorder.isTypeSupported(self.recorderOptions.mimeType)) {
            self.recorderOptions.mimeType = '';
            console.warn('Not able to find a suitable container. mimeType will be empty');
          }
        }
      }
    }
    try {
      self.recorderOptions.audioBitsPerSecond = parseInt(self.selectAudioBitrate.value, 10);
      self.recorderOptions.videoBitsPerSecond = parseInt(self.selectVideoBitrate.value, 10);
      self.mediaRecorder = new MediaRecorder(self.stream, self.recorderOptions);
      if(self.logging) console.log('Created MediaRecorder', self.mediaRecorder, 'with options', self.recorderOptions);
      self.recordButton.textContent = 'Stop Recording';
      self.mediaRecorder.onstop = self.handleStop;
      self.mediaRecorder.ondataavailable = function (e) {
        self.handleDataAvailable(e, self);
      };
      self.mediaRecorder.start(10);
      self.downloadButton.disabled = true;
      self.timer(self);
      if(self.logging) console.log('MediaRecorder started', self.mediaRecorder);
    } catch (e) {
      console.error('Exception while creating MediaRecorder: ' + e);
      alert(`Exception while creating MediaRecorder: ${e}.mimeType: ${self.recorderOptions.mimeType}`);
      return;
    }
  }
  /**
   * [handleDataAvailable pushes blob data to the recorded blobs array]
   * @param  {event} event [event related to the captured blob data]
   * @param  {self}  self  [this class]
   */
  handleDataAvailable(event, self) {
    if (event.data && event.data.size > 0) {
      self.recordedBlobs.push(event.data);
    }
  }
  /**
   * [stopRecording stops the recording]
   * @param  {Object} self [this class]
   */
  stopRecording(self) {
    self.mediaRecorder.stop();
    if(self.logging) console.log('Recorded Blobs:', self.recordedBlobs);
    self.recordedVideo.controls = false;
  }
  /**
   * [play displays the recorded blob into the video player]
   * @param  {Object} self [this class]
   */
  play(self) {
    $(self.recordedVideo).css({
      'width': self.portVideoPreviewWidth,
      'height': self.portVideoPreviewHeight
    });
    var superBuffer = new Blob(self.recordedBlobs, { type: 'video/webm' });
    self.recordedVideo.src = window.URL.createObjectURL(superBuffer);
    self.recordedVideo.onload = function(){
      self.recordedVideo.currentTime = 0;
      self.recordedVideo.play();
    };
    // workaround for non-seekable video taken from
    // https://bugs.chromium.org/p/chromium/issues/detail?id=642012#c23
    self.recordedVideo.addEventListener('loadedmetadata', function () {
      self.recordedVideo.currentTime = 0;
      self.recordedVideo.controls = false;
      self.recordedVideo.play();
      self.previewButton.textContent = self.playingPreview;
      self.previewButton.disabled = true;
      self.downloadButton.disabled = true;
      self.recordButton.disabled = true;
    });
    self.recordedVideo.addEventListener('error',function(e){
      if(self.logging) console.log('error', e);
    });
    self.recordedVideo.addEventListener('timeupdate',function(e){
      self.previewButton.textContent = Math.floor(this.currentTime);
      $.event.trigger({
        type: 'timerOnPlayback',
        message: Math.floor(this.currentTime),
        time: new Date()
      });
    });
    self.recordedVideo.addEventListener('progress', function(e){
      if(self.logging) console.log('progress',e);
    });
    self.recordedVideo.addEventListener('ended', function (e) {
      self.previewButton.textContent = self.previewButtonLabel;
      self.previewButton.disabled = false;
      self.downloadButton.disabled = false;
      self.recordButton.disabled = false;
    });
  }
  /**
   * [handleStop is an event message that tell us that the recorder stopped]
   * @param  {Object} event [the event that comes after an stop video]
   */
  handleStop(event) {
    if(self.logging) console.log('Recorder stopped: ', event);
  }
  /**
   * [download processes the blob and converts everything into a proper media to be 'downloaded']
   * @param  {Object} self [this class]
   */
  download(self) {
    var blob = new Blob(self.recordedBlobs, { type: 'video/webm' });
    var url = window.URL.createObjectURL(blob);
    var a = document.createElement('a');
    a.style.display = 'none';
    a.href = url;
    a.download = 'test.mp4';
    document.body.appendChild(a);
    a.click();
    setTimeout(function () {
      document.body.removeChild(a);
      window.URL.revokeObjectURL(url);
    }, 100);
  }
  /**
   * [timer will process a timer that will count down the allowed time of recording]
   * @param  {Object} self [this class]
   */
  timer(self){
    var count = self.countdownTimer;
    var counter = setInterval(timer,1000);
    self.recordButton.textContent = count;
    self.recordButton.disabled = true;
    
    function timer() {
      count = count - 1;
      $.event.trigger({
        type: 'timerOnRecording',
        message: count,
        time : new Date()
      });
      self.recordButton.textContent = count;
      if(count <= 0){
        clearInterval(counter);
        self.recordButton.textContent = self.recordButtonLabel;
        self.stopRecording(self);
        self.previewButton.disabled = false;
        self.downloadButton.disabled = true;
        self.recordButton.disabled = false;
        $.event.trigger({
          type: 'timerOnRecording',
          message: false,
          time: new Date()
        });
        return;
      }
    }
  }
};

let vr;

$(function(){
  vr = new videoRecorder('#videoSource', '#audioSource', '#videoBitrate', '#audioBitrate','#videoContainer','#record','#download','#recordedVideo','#preview','#videoMain','#videoPreview',15);
  vr.init();
});

/**
 * Useful events to be used: timerOnPlayback will display the current playback time of the 
 * recorded video in seconds
 */
$(window).on('timerOnPlayback',function(e){
  console.log('timerOnPlayback',e.message);
});
/**
 * timerOnRecording will display the current time of recording in seconds
 */
$(window).on('timerOnRecording', function (e) {
  console.log('timerOnRecording', e.message);
});

Leave a Reply