WebRTC Experiments & Demos » Source code on Github!

© Muaz Khan . @WebRTCWeb . Github . Latest issues . What's New?

WebRTC Libraries

  1. RecordRTC.jsDemos — Audio+Video recording in the browser!
    RecordRTC is a server-less (entire client-side) JavaScript library can be used to record WebRTC audio/video media streams. It supports cross-browser audio/video recording.
    1. RecordRTC Documentation
    2. RecordRTC Demos
  2. Translator.jsDemos — Voice Translation in about 41-languages!
    Translator.js is a library for voice & text transcription and translation.
    1. Translator.js Documentation
    2. Translator.js Demos
  3. RTCMultiConnection.jsDemos — A full-fledged WebRTC Library!
    RTCMultiConnection is a JavaScript wrapper library for RTCWeb i.e. WebRTC APIs. It is one of the most quickly updated, highly customizable, totally free WebRTC library out there. Whatever you can imagine, relevant APIs are available in RTCMultiConnection! Its coding-style is simlar like WebSockets JavaScript API, and nothing is hidden from end-developers. You'll have full control over every single bit; whether it is signaling implementation or complex renegotiations. It can fit in any situation, in any environment, and it is MIT Licenced, which means that you can use it in any commercial/non-commercial product.
    1. Source Code
    2. RTCMultiConnection Demos
    3. RTCMultiConnection Documentation
  4. getScreenId.jsDemos — Screen Capturing, everywhere!
    Simply use getScreenId.js and enjoy screen capturing from any domain. You don't need to deploy chrome extension yourself. You can refer your users to install this chrome extension instead. Also, getScreenId.js auto-fallbacks to command-line based screen capturing if chrome extension isn't installed or disabled. getScreenId.js throws clear exceptions which is helpful for end-user experiences.
    1. Source Code
    2. getScreenId.js Demos
  5. Conversation.jsDemos — A library with simplest API
    Conversation.js is inspired by skype; and it provides simple events-like API to manage conversations, enable/disable media devices; add/download files; and do anything supported by Skype.

    It allows you open data conversation between two or more users using their user-ids.
    1. Source Code
    2. New Demos / Old Demos
  6. DataChannel.jsDemos — A library for Game-Developers and file sharing!
    DataChannel.js is a library for peer-to-peer data/text/file sharing.
    1. DataChannel Documentation
    2. DataChannel Demos
  7. DetectRTC.jsDemos — Detect WebRTC features availability in target browser!
    DetectRTC.js is a library to detect WebRTC features like whether user has microphone or webcam installed; etc.
    1. DetectRTC Documentation
    2. DetectRTC Demos
  8. getMediaElement.jsDemos — A layout for the video element!
    getMediaElement.js is a library to easily customize and use custom <audio> and <video> elements with rich-set of controls.
    1. getMediaElement Documentation
    2. getMediaElement Demos
  9. ffmpeg.jsDemos — Audio+Video processing in the browser!
    ffmpeg-asm.js is a library can be used to transcode, mux and merge videos inside the browsers. These demos are using RecordRTC to get recorded audio/video array-buffers and encoding in ogg/mp4 using ffmpeg-asm.js.
    1. ffmpeg Documentation
    2. ffmpeg Demos
  10. FileBufferReader.jsDemos — A library for reading & sharing files as array-buffers
    FileBufferReader is a JavaScript library reads file and returns chunkified array-buffers. The resulting buffers can be shared using WebRTC data channels or socket.io. Share files same as Skype do!

    FileBufferReader is added to support controlled-buffers transmissions whilst following Skype's file sharing style.
    1. FileBufferReader Documentation
    2. FileBufferReader Demos

Group sharing

  1. Video conferencing / Meeting.js
  2. Video one-way broadcasting
  3. Text chat / Text chat Demo-2
  4. File sharing — RTP-based demo / SCTP-based Demo / Other Demo
  5. Pre-recorded media streaming — Streaming local files instead of webcam! / Demo

Screen sharing

  1. Screen Sharing using RTCMultiConnection (it can be used in any webpage: just copy/paste!)
  2. Screen Sharing using Screen.js (it can be used in any webpage: just copy/paste!)
  3. Plugin-free screen sharing (Stadanlone demo: no library used)
  4. Chrome extension to share screen from anywhere!
  5. Chrome Extensions and Firefox Extensions
  6. Desktop sharing using desktopCapture API / Install Chrome Extension
  7. Tab sharing using tabCapture API / Install Chrome Extension

Part of screen sharing

  1. RTCMultiConnection.sharePartOfScreen!
  2. Part of screen sharing using Firebase
  3. Part of screen sharing using WebRTC Data Channel
  4. Part of iframe sharing
  5. NoWebRTC Realtime text chat!
  6. Part of screen capturing and recording


  1. RecordRTC Main Demo
  2. RecordRTC / PHP / FFmpeg
  3. Audio+Video Recording on Firefox
  4. HTML/Canvas Recording!
  5. RecordRTC-to-Nodejs
  6. RecordRTC-to-PHP
  7. RecordRTC-to-ASP.NET MVC
  8. MRecordRTC and writeToDisk/getFromDisk!
  9. RecordRTC-to-Socket.io

ffmpeg-asm.js and RecordRTC!

  1. Transcoding WAV into Ogg
  2. Transcoding WebM into mp4
  3. Transcoding WebM into mp4; then merging WAV+mp4 into single mp4
  4. Recording Audio+Canvas and merging in single mp4


  1. Audio-only calls / WebRTC 1:1 (One-to-One) Calls
  2. Using WebSockets for signaling
  3. Using socket.io for signaling


  1. Video broadcasting / Video broadcasting Demo-2
  2. Audio broadcasting / Audio broadcasting Demo-2

RTCMultiConnection Demos

Experiment NameDemoSource Code
Remote Stream Forwarding & Relaying Demo Source
WebRTC Scalable Broadcast Source
RTCMultiConnection client using Reliable Signaler Source
AppRTC like RTCMultiConnection demo!DemoSource
MultiRTC! RTCMultiConnection all-in-one demo!DemoSource
Collaborative Canvas DesignerDemoSource
Conversation.js - Skype like libraryDemoSource
All-in-One testDemoSource
Multi-Broadcasters and Many ViewersDemoSource
Select Broadcaster at runtimeDemoSource
OneWay Screen & Two-Way AudioDemoSource
Stream Mp3 LiveDemoSource
Socket.io auto Open/Join roomsDemoSource
Screen Sharing & CroppingDemoSource
Share Part of Screen without cropping itDemoSource
Renegotiation & Mute/UnMute/StopDemoSource
Video BroadcastingDemoSource
Audio ConferencingDemoSource
Multi-streams attachmentDemoSource
Admin/Guest audio/video callingDemoSource
Session Re-initiation TestDemoSource
Preview Screenshot of the roomDemoSource
RecordRTC & RTCMultiConnectionDemoSource
Explains how to customize ice servers; and resolutionsDemoSource
Mute/Unmute and onmute/onunmuteDemoSource
One-page demo: Explains how to skip external signalling gatewaysDemoSource
Password Protect Rooms: Explains how to authenticate usersDemoSource
Session Management: Explains difference between "leave" and "close" methodsDemoSource
Multi-Sessions ManagementDemoSource
Customizing BandwidthDemoSource
Users ejection and presence detectionDemoSource
Multi-Session EstablishmentDemoSource
Group File Sharing + Text ChatDemoSource
Audio Conferencing + File Sharing + Text ChatDemoSource
Join with/without cameraDemoSource
Screen SharingDemoSource
One-to-One file sharingDemoSource
Manual session establishment + extra data transmissionDemoSource
Manual session establishment + extra data transmission + video conferencingDemoSource
takeSnapshot i.e. Take Snapshot of Local/Remote streams Demo Source
Audio/Video/Screen sharing and recording Demo Source
Broadcast Multiple-Cameras Demo Source

Conversation.js Demos

  1. AndroidRTC
  2. Search Users
  3. Cross-Language (Multi-Lingual) Text Chat
  4. Old Conversation.js demos

Github Repositories

  1. RecordRTC
  2. RTCMultiConnection
  3. FileBufferReader.js - Chunkify & Share Array-Buffers
  4. Collaborative Canvas Designer
  5. PluginRTC: IE/Safari Plugins compatible WebRTC-Experiments
  6. Conversation.js Experimental
  7. ConcatenateBlobs.js - Concatenate multiple recordings in single Blob!
  8. getStats.js - A wrapper to get peer connection stats.
  9. DetectRTC.js - Detect WebRTC features


  1. Recording Remote Audio Streams / RecordRTC
  2. Attaching Remote Media Streams
  3. mozCaptureStreamUntilEnded for pre-recorded media streaming
  4. Scenarios when any single ICE Server gets down!


  1. DataChannel basic demo
  2. Auto Session Establishment
  3. Text Chat using Pusher and DataChannel.js
  1. SdpSerializer.js — An easiest way to modify SDP. It is an object-oriented way of sdp declaration, manipulation and serialization.
  2. RTCall.js — A library for Browser-to-Browser audio-only calling
  3. MediaStreamRecorder.js — A cross-browser implementation to record audio/video streams. Demos
  4. Socket.io over Node.jsDemo
  5. WebSocket over Node.jsDemo
  6. WebSync/C#/ASP.NET for SignalingDemo
  7. navigator.customGetUserMediaBar.js : Keep Users Privacy! / Demo

One-page demos

  1. Switch streams from screen-sharing to audio+video
  2. Share screen and audio/video from single peer connection!
  3. Text chat using RTCDataChannel APIs
  4. Direct video sharing without using external signaling methods
  5. Video sharing using socket.io for signaling
  6. Video sharing using websockets for signaling
  7. MediaStreamTrack.getSources

Documentations / Tutorials

  1. WebRTC PeerConnection Tutorial
  2. How to use RTCPeerConnection?
  3. How to use RTCDataChannel APIs?
  4. How to use RTCDataChannel & RTCPeerConnection.js?
  5. RTCDataChannel for Beginners
  6. WebRTC for Beginners
  7. WebRTC for Newbies
  8. How to video conferencing in WebRTC?
  9. How to share files using RTCDataChannel APIs?
  10. STUN or TURN? Which one to prefer; and why?
  11. WebRTC RTP Usage
  12. How to switch streams?
  13. How to echo cancellation? / Noise management?
  14. Share files using File.js
  15. WebRTC Signaling Concepts
  16. TURN server installation Guide
  17. webrtcpedia!

Other Tutorials

  1. Are you a newcomer and want to learn WebRTC?
  2. WebRTC Tips & Tricks for newbies and beginners
  3. Facebook page for many quick tutorials!
  4. Google+ page for many quick tutorials!
  5. WebRTC relevant Quora Answers

Latest Updates

Latest Issues


Enter your email too; if you want "direct" reply!