gitextract_ce2vii70/ ├── .gitignore ├── Canvas-Designer/ │ ├── .gitignore │ ├── .npmignore │ ├── .travis.yml │ ├── Gruntfile.js │ ├── Help/ │ │ └── index.html │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── canvas-designer-widget.js │ ├── dev/ │ │ ├── amd.js │ │ ├── arc-handler.js │ │ ├── arrow-handler.js │ │ ├── bezier-handler.js │ │ ├── common.js │ │ ├── data-uris.js │ │ ├── decorator.js │ │ ├── drag-helper.js │ │ ├── draw-helper.js │ │ ├── eraser-handler.js │ │ ├── events-handler.js │ │ ├── file-selector.js │ │ ├── head.js │ │ ├── image-handler.js │ │ ├── line-handler.js │ │ ├── marker-handler.js │ │ ├── pdf-handler.js │ │ ├── pencil-handler.js │ │ ├── quadratic-handler.js │ │ ├── rect-handler.js │ │ ├── share-drawings.js │ │ ├── tail.js │ │ ├── text-handler.js │ │ ├── webrtc-handler.js │ │ └── zoom-handler.js │ ├── index.html │ ├── multiple.html │ ├── package.json │ ├── server.js │ ├── simple.html │ ├── widget.html │ └── widget.js ├── Chrome-Extensions/ │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── Screen-Capturing.js/ │ │ ├── README.md │ │ ├── Screen-Capturing.js │ │ ├── index.html │ │ └── server.js │ ├── desktopCapture/ │ │ ├── README.md │ │ ├── background-script.js │ │ ├── content-script.js │ │ ├── different-api/ │ │ │ ├── background-script.js │ │ │ └── manifest.json │ │ └── manifest.json │ ├── desktopCapture-p2p/ │ │ ├── README.md │ │ ├── background/ │ │ │ ├── captureCamera.js │ │ │ ├── captureDesktop.js │ │ │ ├── captureTabUsingTabCapture.js │ │ │ ├── common.js │ │ │ ├── globals.js │ │ │ ├── gotStream.js │ │ │ ├── gotTabCaptureStream.js │ │ │ ├── helpers/ │ │ │ │ ├── AntMediaWrapper.js │ │ │ │ ├── CodecsHandler.js │ │ │ │ ├── IceServersHandler.js │ │ │ │ ├── MultiStreamsMixer.js │ │ │ │ ├── adapter.js │ │ │ │ ├── getStats.js │ │ │ │ └── socket.io.js │ │ │ ├── onAccessApproved.js │ │ │ ├── online-offline.js │ │ │ ├── runtimePort.js │ │ │ ├── setDefaults.js │ │ │ ├── setupWebRTCConnection.js │ │ │ ├── shareStreamUsingAntMediaServer.js │ │ │ └── shareStreamUsingRTCMultiConnection.js │ │ ├── extension-pages/ │ │ │ ├── camera-mic.html │ │ │ ├── camera-mic.js │ │ │ ├── chat.html │ │ │ ├── chat.js │ │ │ ├── dropdown.html │ │ │ ├── dropdown.js │ │ │ ├── options.html │ │ │ ├── options.js │ │ │ ├── video.html │ │ │ └── video.js │ │ ├── index.html │ │ ├── manifest.json │ │ ├── screen-receivers/ │ │ │ └── ant/ │ │ │ └── index.html │ │ └── server.js │ ├── file-sharing/ │ │ ├── README.md │ │ ├── background.js │ │ ├── fonts/ │ │ │ └── MyriadPro-Light.otf │ │ ├── info.html │ │ ├── manifest.json │ │ ├── options.html │ │ ├── options.js │ │ ├── popup.html │ │ ├── popup.js │ │ └── rmc-files-handler.js │ ├── get-any-webrtc-peer-stream/ │ │ ├── RTCPeerConnection-override.js │ │ ├── content-script.js │ │ └── manifest.json │ ├── getUserMedia-on-http/ │ │ ├── README.md │ │ ├── background-script.js │ │ ├── camera-mic.html │ │ ├── camera-mic.js │ │ ├── content-script.js │ │ ├── example/ │ │ │ ├── index.html │ │ │ └── index.js │ │ ├── manifest.json │ │ └── webrtc-handler.js │ ├── screen-recording/ │ │ ├── README.md │ │ ├── RecordRTC/ │ │ │ ├── DiskStorage.js │ │ │ ├── EBML.js │ │ │ ├── MediaStreamRecorder.js │ │ │ ├── MultiStreamRecorder.js │ │ │ ├── MultiStreamsMixer.js │ │ │ ├── StereoAudioRecorder.js │ │ │ └── getAllAudioVideoDevices.js │ │ ├── background/ │ │ │ ├── background.badgeText.js │ │ │ ├── background.common.js │ │ │ ├── background.contentScript.js │ │ │ ├── background.desktopCapture.js │ │ │ ├── background.getUserMedia.js │ │ │ ├── background.js │ │ │ ├── background.messaging.js │ │ │ ├── background.players.js │ │ │ └── background.tabCapture.js │ │ ├── camera-mic.html │ │ ├── camera-mic.js │ │ ├── dropdown.html │ │ ├── dropdown.js │ │ ├── manifest.json │ │ ├── options.html │ │ ├── options.js │ │ ├── preview/ │ │ │ ├── preview.js │ │ │ ├── preview.php.upload.js │ │ │ └── preview.youtube.upload.js │ │ ├── preview.html │ │ ├── video.html │ │ └── video.js │ └── tabCapture/ │ ├── CodecsHandler.js │ ├── IceServersHandler.js │ ├── README.md │ ├── index.html │ ├── manifest.json │ ├── options.html │ ├── options.js │ ├── shareStreamUsingRTCMultiConnection.js │ ├── socket.io.js │ └── tab-capturing.js ├── ConcatenateBlobs/ │ ├── ConcatenateBlobs.js │ ├── README.md │ ├── index.html │ └── package.json ├── Conversation.js/ │ ├── AndroidRTC/ │ │ ├── fonts/ │ │ │ ├── MyriadPro-Bold.otf │ │ │ ├── MyriadPro-Light.otf │ │ │ └── MyriadPro-Regular.otf │ │ ├── index.html │ │ ├── manifest.json │ │ ├── scripts/ │ │ │ ├── FileBufferReader.js │ │ │ ├── RTCMultiConnection.js │ │ │ ├── common-signaling.js │ │ │ ├── conversation.js │ │ │ └── ui-handler.js │ │ └── styles/ │ │ └── ui-styles.css │ ├── README.md │ ├── conversation.js │ ├── demos/ │ │ ├── common-signaling.js │ │ ├── common-styles.css │ │ ├── cross-language-chat.html │ │ └── search-user.html │ ├── package.json │ └── server.js ├── DataChannel/ │ ├── .gitignore │ ├── .jshintrc │ ├── .npmignore │ ├── .travis.yml │ ├── DataChannel.js │ ├── Gruntfile.js │ ├── README.md │ ├── auto-session-establishment.html │ ├── bower.json │ ├── dev/ │ │ ├── DataChannel.js │ │ ├── DataConnector.js │ │ ├── FileConverter.js │ │ ├── FileReceiver.js │ │ ├── FileSaver.js │ │ ├── FileSender.js │ │ ├── IceServersHandler.js │ │ ├── RTCPeerConnection.js │ │ ├── SocketConnector.js │ │ ├── TextReceiver.js │ │ ├── TextSender.js │ │ ├── externalIceServers.js │ │ ├── globals.js │ │ ├── head.js │ │ └── tail.js │ ├── index.html │ ├── package.json │ ├── server.js │ └── simple.html ├── DetectRTC/ │ ├── .gitignore │ ├── .jshintrc │ ├── .npmignore │ ├── .travis.yml │ ├── DetectRTC.js │ ├── Gruntfile.js │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── dev/ │ │ ├── CheckDeviceSupport.js │ │ ├── DetectLocalIPAddress.js │ │ ├── DetectRTC.js │ │ ├── Objects.js │ │ ├── common.js │ │ ├── detectCaptureStream.js │ │ ├── detectDesktopOS.js │ │ ├── detectOSName.js │ │ ├── detectPrivateBrowsing.js │ │ ├── getBrowserInfo.js │ │ ├── head.js │ │ ├── isMobile.js │ │ └── tail.js │ ├── index.html │ ├── npm-test.js │ ├── package.json │ ├── server.js │ ├── simple-demos/ │ │ ├── select-cameras.html │ │ └── simple-demo.html │ └── test/ │ ├── CheckDeviceSupport.js │ ├── DetectRTC.js │ ├── browserstack.config.js │ ├── detectOSName.js │ ├── getBrowserInfo.js │ └── html-test-files/ │ ├── CheckDeviceSupport.html │ ├── DetectRTC.html │ ├── detectOSName.html │ └── getBrowserInfo.html ├── FileBufferReader/ │ ├── .gitignore │ ├── .npmignore │ ├── .travis.yml │ ├── FileBufferReader.js │ ├── Gruntfile.js │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── demo/ │ │ ├── IceServersHandler.js │ │ ├── PeerConnection.js │ │ ├── PeerUI.js │ │ ├── adapter-latest.js │ │ └── index.html │ ├── dev/ │ │ ├── FileBufferReader.js │ │ ├── FileBufferReaderHelper.js │ │ ├── FileBufferReceiver.js │ │ ├── FileConverter.js │ │ ├── FileSelector.js │ │ ├── binarize.js │ │ ├── common.js │ │ ├── head.js │ │ └── tail.js │ ├── fbr-client/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── demo/ │ │ │ ├── circular-progress-bar.css │ │ │ ├── style.css │ │ │ └── ui.js │ │ ├── index.html │ │ ├── package.json │ │ └── server.js │ ├── index.html │ ├── package.json │ └── server.js ├── Firefox-Extensions/ │ ├── README.md │ ├── enable-screen-capturing/ │ │ ├── README.md │ │ ├── content-script.js │ │ ├── index.js │ │ ├── package.json │ │ └── test/ │ │ └── test-index.js │ ├── enable-screen-capturing-old/ │ │ ├── README.md │ │ ├── bootstrap.js │ │ ├── enable-screen-capturing.xpi │ │ └── install.rdf │ └── enable-screen-capturing-old2/ │ ├── FirefoxScreenAddon.js │ ├── README.md │ ├── content-script.js │ ├── index.js │ ├── package.json │ └── test/ │ └── test-index.js ├── LICENSE ├── MediaStreamRecorder/ │ ├── .gitignore │ ├── .npmignore │ ├── .travis.yml │ ├── AudioStreamRecorder/ │ │ ├── FlashAudioRecorder.js │ │ ├── FlashAudioRecorder.md │ │ ├── MediaRecorderWrapper.js │ │ ├── README.md │ │ ├── StereoAudioRecorder.js │ │ ├── StereoAudioRecorderHelper.js │ │ └── lib/ │ │ ├── recorder.js/ │ │ │ ├── recorder.js │ │ │ └── recorder.swf │ │ └── wavencoder/ │ │ └── wavencoder.js │ ├── FileSystem/ │ │ ├── FileReader.js │ │ ├── FileWriter.js │ │ └── README.md │ ├── Gruntfile.js │ ├── LICENSE │ ├── MediaStreamRecorder.js │ ├── README.md │ ├── VideoStreamRecorder/ │ │ ├── GifRecorder.js │ │ ├── README.md │ │ ├── WhammyRecorder.js │ │ ├── WhammyRecorderHelper.js │ │ └── lib/ │ │ ├── gif-encoder.js │ │ └── whammy.js │ ├── bower.json │ ├── common/ │ │ ├── ConcatenateBlobs.js │ │ ├── Cross-Browser-Declarations.js │ │ ├── MediaStreamRecorder.js │ │ ├── MultiStreamRecorder.js │ │ ├── MultiStreamsMixer.js │ │ ├── OpentTokStreamRecorder.js │ │ └── amd.js │ ├── demos/ │ │ ├── MultiStreamRecorder.html │ │ ├── README.md │ │ ├── audio-recorder.html │ │ ├── flash-audio-recorder-upload.html │ │ ├── flash-audio-recorder.html │ │ ├── gif-recorder.html │ │ ├── index.html │ │ ├── opentok-stream-recorder.html │ │ └── video-recorder.html │ ├── fake-keys/ │ │ ├── certificate.pem │ │ └── privatekey.pem │ ├── lib/ │ │ └── AjaxRequest/ │ │ └── AjaxRequest.js │ ├── npm-test.js │ ├── package.json │ ├── server.js │ └── tests/ │ └── flash-audio-recorder-memory-usage.html ├── MultiRTC/ │ ├── .gitignore │ ├── MultiRTC-firebase/ │ │ ├── FileBufferReader.js │ │ ├── README.md │ │ ├── RTCMultiConnection.js │ │ ├── firebase.js │ │ ├── index.html │ │ ├── linkify.js │ │ ├── package.json │ │ ├── scrol-bars.css │ │ ├── style.css │ │ ├── ui.main.js │ │ ├── ui.peer-connection.js │ │ ├── ui.settings.js │ │ ├── ui.share-files.js │ │ └── ui.users-list.js │ ├── MultiRTC-socketio/ │ │ ├── README.md │ │ ├── certificate.pem │ │ ├── package.json │ │ ├── privatekey.pem │ │ ├── public/ │ │ │ ├── FileBufferReader.js │ │ │ ├── RTCMultiConnection.js │ │ │ ├── index.html │ │ │ ├── linkify.js │ │ │ ├── scrol-bars.css │ │ │ ├── style.css │ │ │ ├── ui.main.js │ │ │ ├── ui.peer-connection.js │ │ │ ├── ui.settings.js │ │ │ ├── ui.share-files.js │ │ │ └── ui.users-list.js │ │ └── signaler.js │ ├── MultiRTC-websocket/ │ │ ├── FileBufferReader.js │ │ ├── README.md │ │ ├── RTCMultiConnection.js │ │ ├── index.html │ │ ├── linkify.js │ │ ├── package.json │ │ ├── scrol-bars.css │ │ ├── style.css │ │ ├── ui.main.js │ │ ├── ui.peer-connection.js │ │ ├── ui.settings.js │ │ ├── ui.share-files.js │ │ └── ui.users-list.js │ └── README.md ├── MultiStreamsMixer/ │ ├── .gitignore │ ├── .npmignore │ ├── .travis.yml │ ├── Gruntfile.js │ ├── LICENSE │ ├── MultiStreamsMixer.js │ ├── MultiStreamsMixer.ts │ ├── README.md │ ├── bower.json │ ├── dev/ │ │ ├── README.md │ │ ├── amd.js │ │ ├── append-streams.js │ │ ├── cross-browser-declarations.js │ │ ├── draw-videos-on-canvas.js │ │ ├── get-mixed-audio-stream.js │ │ ├── get-mixed-stream.js │ │ ├── get-mixed-video-stream.js │ │ ├── get-video-element.js │ │ ├── head.js │ │ ├── init.js │ │ ├── module.exports.js │ │ ├── release-streams.js │ │ ├── replace-streams.js │ │ ├── start-drawing-frames.js │ │ └── tail.js │ ├── index.html │ ├── npm-test.js │ ├── package.json │ └── server.js ├── PluginRTC/ │ ├── Plugin.EveryWhere.js │ ├── Plugin.Temasys.js │ └── README.md ├── Pluginfree-Screen-Sharing/ │ ├── README.md │ ├── conference.js │ └── index.html ├── Pre-recorded-Media-Streaming/ │ ├── MediaStreamer.js │ ├── README.md │ ├── index-2.html │ ├── index-old.html │ ├── index.html │ └── streamer.js ├── README.md ├── RTCMultiConnection/ │ ├── .gitignore │ ├── .jshintrc │ ├── .npmignore │ ├── .travis.yml │ ├── CONTRIBUTING.md │ ├── Gruntfile.js │ ├── LICENSE.md │ ├── README.md │ ├── admin/ │ │ ├── admin-ui.js │ │ └── index.html │ ├── bower.json │ ├── config.json │ ├── demos/ │ │ ├── Audio-Conferencing.html │ │ ├── Call-By-UserName.html │ │ ├── One-to-One.html │ │ ├── README.md │ │ ├── SSEConnection/ │ │ │ ├── README.md │ │ │ ├── SSE.php │ │ │ ├── checkPresence.php │ │ │ ├── enableCORS.php │ │ │ ├── get-param.php │ │ │ ├── publish.php │ │ │ ├── rooms/ │ │ │ │ └── README.md │ │ │ └── write-json.php │ │ ├── SSEConnection.html │ │ ├── Scalable-Broadcast.html │ │ ├── Video-Conferencing.html │ │ ├── camera-zoom.html │ │ ├── dashboard/ │ │ │ ├── canvas-designer-old.html │ │ │ ├── canvas-designer.html │ │ │ ├── index-old.html │ │ │ └── index.html │ │ ├── file-sharing.html │ │ ├── getStats.html │ │ ├── index.html │ │ ├── menu.js │ │ ├── screen-sharing.html │ │ ├── stylesheet.css │ │ ├── text-chat-file-sharing.html │ │ ├── translate-text-chat.html │ │ ├── video-and-screen-sharing.html │ │ ├── video-broadcasting.html │ │ ├── video-conference/ │ │ │ ├── index.html │ │ │ └── video-conference.html │ │ ├── video-conferencing-chat-filesharing.html │ │ └── vuejs-video-conferencing.html │ ├── dev/ │ │ ├── BandwidthHandler.js │ │ ├── BluetoothConnection.js │ │ ├── CodecsHandler.js │ │ ├── FileProgressBarHandler.js │ │ ├── FileSelector.js │ │ ├── FirebaseConnection.js │ │ ├── IceServersHandler.js │ │ ├── MediaStreamRecorder.js │ │ ├── MultiPeersHandler.js │ │ ├── MultiStreamsMixer.js │ │ ├── OnIceCandidateHandler.js │ │ ├── Plugin.EveryWhere.js │ │ ├── PubNubConnection.js │ │ ├── README.md │ │ ├── RTCMultiConnection.js │ │ ├── RTCPeerConnection.js │ │ ├── RecordingHandler.js │ │ ├── SSEConnection.js │ │ ├── SignalRConnection.js │ │ ├── SipConnection.js │ │ ├── SocketConnection.js │ │ ├── StreamHasData.js │ │ ├── StreamsHandler.js │ │ ├── TextSenderReceiver.js │ │ ├── TranslationHandler.js │ │ ├── WebSocketConnection.js │ │ ├── WebSyncConnection.js │ │ ├── XHRConnection.js │ │ ├── amd.js │ │ ├── enableV2Api.js │ │ ├── getHTMLMediaElement.css │ │ ├── getHTMLMediaElement.js │ │ ├── getUserMedia.js │ │ ├── globals.js │ │ ├── gumadapter.js │ │ ├── head.js │ │ ├── ios-hacks.js │ │ └── tail.js │ ├── dist/ │ │ ├── README.md │ │ └── RTCMultiConnection.js │ ├── docs/ │ │ ├── README.md │ │ ├── api.md │ │ ├── getting-started.md │ │ ├── how-to-use.md │ │ ├── installation-guide.md │ │ ├── ios-android.md │ │ ├── tips-tricks.md │ │ └── upgrade.md │ ├── fake-keys/ │ │ ├── certificate.pem │ │ └── privatekey.pem │ ├── logs.json │ ├── npm-test.js │ ├── package.json │ └── server.js ├── RTCMultiConnection-Server/ │ ├── .gitignore │ ├── .npmignore │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── config.json │ ├── fake-keys/ │ │ ├── certificate.pem │ │ └── privatekey.pem │ ├── logs.json │ ├── package.json │ └── server.js ├── RTCMultiConnection-SignalR/ │ ├── LICENSE │ ├── README.md │ ├── RTCMultiConnection/ │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── RTCMultiConnection.csproj │ │ ├── RTCMultiConnectionHub.cs │ │ ├── RTCMultiConnectionSignaling.cs │ │ ├── Scripts/ │ │ │ ├── RTCMultiConnection.js │ │ │ ├── jquery-1.10.2.intellisense.js │ │ │ ├── jquery-1.10.2.js │ │ │ └── jquery.signalR-2.1.2.js │ │ ├── SignalRConnection.js │ │ ├── Web.Debug.config │ │ ├── Web.Release.config │ │ ├── Web.config │ │ ├── index.html │ │ └── packages.config │ ├── RTCMultiConnection.sln │ └── packages/ │ └── README.md ├── RTCPeerConnection/ │ ├── README.md │ ├── RTCPeerConnection-Helpers.js │ ├── RTCPeerConnection-v1.1.js │ ├── RTCPeerConnection-v1.2.js │ ├── RTCPeerConnection-v1.3.js │ ├── RTCPeerConnection-v1.4.js │ ├── RTCPeerConnection-v1.5.js │ ├── RTCPeerConnection-v1.6.js │ └── RTCPeerConnection.js ├── RTCall/ │ ├── README.md │ ├── RTCall.js │ └── index.html ├── Record-Entire-Meeting/ │ ├── .gitignore │ ├── .npmignore │ ├── Browser-Recording-Helper.js │ ├── Concatenate-Recordings.js │ ├── MediaStreamRecorder.js │ ├── Nodejs-Recording-Handler.js │ ├── README.md │ ├── Write-Recordings-To-Disk.js │ ├── fake-keys/ │ │ ├── certificate.pem │ │ └── privatekey.pem │ ├── index.html │ ├── package.json │ └── server.js ├── RecordRTC/ │ ├── .gitignore │ ├── .jshintrc │ ├── .npmignore │ ├── .travis.yml │ ├── CONTRIBUTING.md │ ├── Canvas-Recording/ │ │ ├── Canvas-Animation-Recording-Plus-Microphone-Plus-Mp3.html │ │ ├── Canvas-Animation-Recording-Plus-Microphone.html │ │ ├── Canvas-Animation-Recording-Plus-Mp3.html │ │ ├── Canvas-Animation-Recording.html │ │ ├── README.md │ │ ├── canvas-designer.js │ │ ├── index.html │ │ ├── record-canvas-drawings.html │ │ ├── video.webm │ │ └── webpage-recording.html │ ├── Gruntfile.js │ ├── LICENSE │ ├── MRecordRTC/ │ │ ├── README.md │ │ └── index.html │ ├── PHP-and-FFmpeg/ │ │ ├── .htaccess │ │ ├── README.md │ │ ├── index.html │ │ ├── save.php │ │ └── uploads/ │ │ └── README.md │ ├── README.md │ ├── RecordRTC-over-Socketio/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── ffmpeg-output/ │ │ │ └── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── server.js │ │ └── uploads/ │ │ └── README.md │ ├── RecordRTC-to-ASPNETMVC/ │ │ ├── README.md │ │ ├── RecordRTC_to_ASPNETMVC/ │ │ │ ├── Controllers/ │ │ │ │ ├── README.md │ │ │ │ └── RecordRTCController.cs │ │ │ ├── Global.asax │ │ │ ├── Global.asax.cs │ │ │ ├── Properties/ │ │ │ │ └── AssemblyInfo.cs │ │ │ ├── RecordRTC_to_ASPNETMVC.csproj │ │ │ ├── RecordRTC_to_ASPNETMVC.csproj.user │ │ │ ├── Views/ │ │ │ │ ├── RecordRTC/ │ │ │ │ │ └── Index.cshtml │ │ │ │ ├── Web.config │ │ │ │ └── _ViewStart.cshtml │ │ │ ├── Web.Debug.config │ │ │ ├── Web.Release.config │ │ │ ├── Web.config │ │ │ ├── bin/ │ │ │ │ └── RecordRTC_to_ASPNETMVC.pdb │ │ │ └── uploads/ │ │ │ └── README.md │ │ └── RecordRTC_to_ASPNETMVC.sln │ ├── RecordRTC-to-Nodejs/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ └── server.js │ ├── RecordRTC-to-PHP/ │ │ ├── .htaccess │ │ ├── README.md │ │ ├── delete.php │ │ ├── index.html │ │ ├── save.php │ │ └── uploads/ │ │ └── README.md │ ├── RecordRTC.js │ ├── WebGL-Recording/ │ │ ├── README.md │ │ ├── assets/ │ │ │ ├── DST-Canopy.ogg │ │ │ ├── blank.cur │ │ │ ├── duck.dae │ │ │ ├── pickup.ogg │ │ │ ├── scene.xml │ │ │ ├── seymourplane_triangulate.dae │ │ │ └── target.dae │ │ ├── index.html │ │ ├── logic.js │ │ ├── plotly.html │ │ ├── style.css │ │ ├── vendor/ │ │ │ ├── README.md │ │ │ ├── backbone-min.js │ │ │ ├── buzz.js │ │ │ ├── glge-compiled-min.js │ │ │ ├── glge-compiled.js │ │ │ └── underscore-min.js │ │ └── view.js │ ├── bower.json │ ├── dev/ │ │ ├── CanvasRecorder.js │ │ ├── Cross-Browser-Declarations.js │ │ ├── DiskStorage.js │ │ ├── GetRecorderType.js │ │ ├── GifRecorder.js │ │ ├── MRecordRTC.js │ │ ├── MediaStreamRecorder.js │ │ ├── MultiStreamRecorder.js │ │ ├── MultiStreamsMixer.js │ │ ├── README.md │ │ ├── RecordRTC-Configuration.js │ │ ├── RecordRTC.IndexedDB.js │ │ ├── RecordRTC.js │ │ ├── RecordRTC.promises.js │ │ ├── StereoAudioRecorder.js │ │ ├── Storage.js │ │ ├── WebAssemblyRecorder.js │ │ ├── Whammy.js │ │ ├── WhammyRecorder.js │ │ ├── amd.js │ │ └── isMediaRecorderCompatible.js │ ├── index.html │ ├── libs/ │ │ ├── EBML.js │ │ ├── gif-recorder.js │ │ ├── webm-wasm.js │ │ ├── webm-wasm.wasm │ │ └── webm-worker.js │ ├── npm-test.js │ ├── package.json │ ├── server.js │ ├── simple-demos/ │ │ ├── 16khz-audio-recording.html │ │ ├── README.md │ │ ├── Record-Mp3-or-Wav.html │ │ ├── RecordRTCPromisesHandler.html │ │ ├── RecordRTC_Extension.html │ │ ├── WebAssemblyRecorder.html │ │ ├── audio-recording.html │ │ ├── auto-stop-on-silence.html │ │ ├── bitsPerSecond.html │ │ ├── calculate-recording-duration.html │ │ ├── destroy.html │ │ ├── edge-audio-recording.html │ │ ├── embedded-iframes.html │ │ ├── gif-recording.html │ │ ├── index.html │ │ ├── isTypeSupported.html │ │ ├── multi-audios-recording.html │ │ ├── multi-cameras-recording.html │ │ ├── onStateChanged.html │ │ ├── onTimeStamp.html │ │ ├── ondataavailable-StereoAudioRecorder.html │ │ ├── ondataavailable.html │ │ ├── pass-getUserMedia-constraints.html │ │ ├── php-upload-jquery.html │ │ ├── php-upload-simple-javascript.html │ │ ├── preview-blob-size-during-recording.html │ │ ├── raw-pcm.html │ │ ├── record-cropped-screen.html │ │ ├── recording-html-element.html │ │ ├── reuse-same-instance.html │ │ ├── screen-recording.html │ │ ├── seeking-workaround.html │ │ ├── setRecordingDuration.html │ │ ├── show-animated-bar-on-video.html │ │ ├── show-logo-on-recorded-video.html │ │ ├── video-mirror-recording.html │ │ ├── video-plus-screen-recording.html │ │ └── video-recording.html │ └── test/ │ ├── README.md │ ├── audio-recording-using-StereoAudioRecorder.js │ ├── audio-recording.js │ ├── browserstack.config.js │ ├── canvas-recording.js │ ├── html-test-files/ │ │ ├── README.md │ │ ├── audio-recording-using-StereoAudioRecorder.html │ │ ├── audio-recording.html │ │ ├── canvas-recording.html │ │ ├── video-recording-using-WhammyRecorder.html │ │ └── video-recording.html │ ├── video-recording-using-WhammyRecorder.js │ └── video-recording.js ├── Reliable-Signaler/ │ ├── README.md │ ├── datachannel-client/ │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── server.js │ │ └── style.css │ ├── index.js │ ├── package.json │ ├── reliable-signaler.js │ ├── rtcmulticonnection-client/ │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── server.js │ │ └── style.css │ ├── signaler.js │ └── videoconferencing-client/ │ ├── README.md │ ├── RTCPeerConnection-v1.5.js │ ├── conference.js │ ├── index.html │ ├── package.json │ ├── server.js │ └── style.css ├── Signaling.md ├── Translator.js/ │ ├── README.md │ ├── Robot-Speaker.js │ ├── Translator.js │ └── index.html ├── WebRTC-File-Sharing/ │ ├── File.js │ ├── PeerConnection.js │ ├── README.md │ └── index.html ├── WebRTC-Scalable-Broadcast/ │ ├── .gitignore │ ├── .npmignore │ ├── README.md │ ├── RTCMultiConnection.js │ ├── WebRTC-Scalable-Broadcast.js │ ├── index.html │ ├── package.json │ ├── server.js │ └── share-files.html ├── audio-broadcast/ │ ├── README.md │ ├── broadcast-ui.js │ ├── broadcast.js │ └── index.html ├── broadcast/ │ ├── README.md │ ├── broadcast-ui.js │ ├── broadcast.js │ └── index.html ├── chat-hangout/ │ ├── README.md │ ├── hangout-ui.js │ ├── hangout.js │ └── index.html ├── demos/ │ ├── MediaStreamTrack.getSources.html │ ├── README.md │ ├── audio-only-streaming.html │ ├── client-side-datachannel.html │ ├── client-side-socket-io.html │ ├── client-side-websocket.html │ ├── client-side.html │ ├── remote-stream-recording.html │ ├── screen-and-video-from-single-peer.html │ └── switch-streams.html ├── desktop-sharing/ │ ├── README.md │ ├── index.html │ └── old.html ├── docs/ │ ├── How-to-Broadcast-Screen-using-WebRTC.html │ ├── README.md │ ├── RTP-usage.html │ ├── STUN-or-TURN.html │ ├── Share-Files-using-Filejs.html │ ├── TURN-server-installation-guide.html │ ├── WebRTC-PeerConnection.html │ ├── WebRTC-Signaling-Concepts.html │ ├── echo-cancellation.html │ ├── how-file-broadcast-works.html │ ├── how-to-WebRTC-video-conferencing.html │ ├── how-to-broadcast-video-using-RTCWeb-APIs.html │ ├── how-to-install-tabCapture-extension.html │ ├── how-to-share-audio-only-streams.html │ ├── how-to-switch-streams.html │ ├── how-to-use-plugin-free-calls.html │ ├── how-to-use-rtcdatachannel-and-rtcpeerconnectionjs.html │ ├── how-to-use-rtcdatachannel.html │ ├── how-to-use-rtcpeerconnection-js-v1.1.html │ ├── rtc-datachannel-for-beginners.html │ ├── webrtc-for-beginners.html │ ├── webrtc-for-newbies.html │ └── webrtcpedia/ │ └── index.html ├── experimental/ │ ├── README.md │ ├── mozCaptureStreamUntilEnded/ │ │ ├── README.md │ │ └── index.html │ ├── remote-media-stream-attachment/ │ │ ├── README.md │ │ └── index.html │ └── remote-stream-recording.html ├── ffmpeg/ │ ├── LICENSE │ ├── README.md │ ├── audio-plus-canvas-recording.html │ ├── audio-plus-screen-recording.html │ ├── index.html │ ├── merging-wav-and-webm-into-mp4.html │ ├── server.js │ ├── video-cropping.html │ ├── wav-to-aac.html │ ├── wav-to-ogg.html │ ├── webm-to-mp4.html │ └── worker-asm.js ├── file-hangout/ │ ├── README.md │ ├── file-hangout.js │ └── index.html ├── file-sharing/ │ ├── README.md │ ├── data-connection.js │ └── index.html ├── getDisplayMedia/ │ ├── README.md │ └── index.html ├── getMediaElement/ │ ├── .npmignore │ ├── README.md │ ├── getAudioElement.html │ ├── getMediaElement-v1.2/ │ │ ├── getMediaElement-v1.2.css │ │ └── getMediaElement-v1.2.js │ ├── getMediaElement.css │ ├── getMediaElement.js │ ├── getVideoElement.html │ ├── index.html │ └── package.json ├── getScreenId.js/ │ ├── .npmignore │ ├── LICENSE │ ├── README.md │ ├── Screen-Capturing.js │ ├── getScreenId.html │ ├── getScreenId.js │ ├── index.html │ ├── package.json │ └── server.js ├── getStats/ │ ├── .gitignore │ ├── .npmignore │ ├── .travis.yml │ ├── Gruntfile.js │ ├── LICENSE.md │ ├── README.md │ ├── bower.json │ ├── dev/ │ │ ├── README.md │ │ ├── bweforvideo.js │ │ ├── candidate-pair.js │ │ ├── dataSentReceived.js │ │ ├── datachannel.js │ │ ├── getStats.js │ │ ├── globals.js │ │ ├── googCertificate.js │ │ ├── googCodecName.audio.js │ │ ├── googCodecName.video.js │ │ ├── head.js │ │ ├── inbound-rtp.js │ │ ├── local-candidate.js │ │ ├── module.exports.js │ │ ├── outbound-rtp.js │ │ ├── parameters.js │ │ ├── remote-candidate.js │ │ ├── ssrc.js │ │ ├── tail.js │ │ ├── track.js │ │ └── wrapper.js │ ├── getStats.js │ ├── index.html │ ├── package.json │ └── server.js ├── gumadapter/ │ ├── README.md │ ├── gumadapter.js │ └── package.json ├── hark/ │ ├── README.md │ └── hark.js ├── meeting/ │ ├── README.md │ ├── index.html │ ├── meeting.js │ └── simple.html ├── navigator.customGetUserMediaBar/ │ ├── README.md │ ├── index.html │ └── navigator.customGetUserMediaBar.js ├── one-to-many-audio-broadcasting/ │ ├── README.md │ ├── index.html │ └── meeting.js ├── one-to-many-video-broadcasting/ │ ├── README.md │ ├── index.html │ └── meeting.js ├── part-of-screen-sharing/ │ ├── README.md │ ├── firebase/ │ │ └── index.html │ ├── iframe/ │ │ ├── index.html │ │ └── otherpage.html │ ├── realtime-chat/ │ │ ├── No-WebRTC-Chat.html │ │ ├── README.md │ │ └── how-this-work.html │ ├── screenshot-dev.js │ ├── screenshot.js │ └── webrtc-data-channel/ │ └── index.html ├── realtime-pluginfree-calls/ │ ├── README.md │ ├── index.html │ ├── js/ │ │ ├── PeerConnection.js │ │ ├── linkify.js │ │ └── script.js │ ├── old/ │ │ ├── README.md │ │ ├── call-initiator.js │ │ ├── index.html │ │ └── ui.js │ ├── old2/ │ │ └── index.html │ └── style.css ├── screen-broadcast/ │ ├── README.md │ └── index.html ├── screen-sharing/ │ ├── README.md │ ├── index.html │ └── screen.js ├── server.js ├── socket.io/ │ ├── PeerConnection.js │ ├── README.md │ └── index.html ├── socketio-over-nodejs/ │ ├── README.md │ ├── fake-keys/ │ │ ├── certificate.pem │ │ └── privatekey.pem │ ├── package.json │ └── server.js ├── text-chat/ │ ├── README.md │ ├── data-connection.js │ └── index.html ├── video-conferencing/ │ ├── README.md │ ├── conference.js │ ├── index.html │ └── server.js ├── webrtc-broadcasting/ │ ├── README.md │ ├── broadcast.js │ ├── index.html │ └── server.js ├── websocket/ │ ├── PeerConnection.js │ ├── README.md │ └── index.html └── websocket-over-nodejs/ ├── README.md ├── fake-keys/ │ ├── certificate.pem │ └── privatekey.pem ├── package.json └── server.js