WebRTC plugin for Internet Explorer and Safari
C++ C Other
Latest commit ab5fd92 Apr 20, 2016 System Administrator Update OSX build


webrtc-everywhere is an open source project (with business-friendly license) to add support for WebRTC features to Safari (Windows and MAC OSX) and Internet Explorer (Windows).


Online samples

The following samples use our adapter.js and could be tested on Safari and Internet Explorer (off course they also work on Firefox and Chrome):

Using our plugin in your own project

  • Download and install the plugin for MAC OSX or Windows
  • Include adapter.js in your code.
  • Change the code you're using to attach a stream to a <audio/> or <video /> HTML5 element:
    from: document.getElementById("eltId").src = mediaStream;
    to: attachMediaStream(document.getElementById("eltId"), mediaStream);


Support for screenshare was added in version 2.0. To choose your screen as video media source (instead of the camera) you need to use "X978DoubangoTelecomScreenCapturer785" as sourceId.

alt Screenshare

Sample code to select your screen as media source:

 navigator.getUserMedia({ "video": {optional: [{sourceId: "X978DoubangoTelecomScreenCapturer785"}]}}, okfn, errfn);

Building source code

  • fetch webrtc code as explained at http://www.webrtc.org/native-code/development in the same folder as webrtc-everywhere.
  • Move into webrtc-checkout/src directory
    cd webrtc-checkout/src
  • For Windows you'll need to apply this patch
  • For all platforms you should apply this patch

  • OSX x86_64

    python webrtc/build/gyp_webrtc -Dtarget_arch=x64 -DOS=mac -Dclang_xcode=1
    ninja -C out/Debug
    ninja -C out/Release
    mv out/Debug out/Debug_x64
    mv out/Release out/Release_x64
  • OSX i386

    python webrtc/build/gyp_webrtc -Dtarget_arch=ia32 -DOS=mac -Dclang_xcode=1
    ninja -C out/Debug
    ninja -C out/Release
    mv out/Debug out/Debug_i386
    mv out/Release out/Release_i386
  • WIN64

    python webrtc/build/gyp_webrtc -Dtarget_arch=x64 -DOS=win
    ninja -C out/Debug_x64
    ninja -C out/Release_x64
  • WIN32

    python webrtc/build/gyp_webrtc -Dtarget_arch=ia32 -DOS=win
    ninja -C out/Debug
    ninja -C out/Release

To build the source code you'll need Visual Studio 2013+ (Windows) or Xcode (MAC OSX):

  • Visual Studio solution: webrtc-everywhere/webrtc-everywhere.sln
  • Xcode project: webrtc-everywhere/xcode/webrtc-everywhere.xcodeproj


  • Binaries and installers: All binaries and installers from us are released under BSD terms to allow using the project in your commercial products.
  • The source code: GPLv3. Please contact us for alternative license options.

Known issues

  • On Safari/OSX, if you're getting TypeError: undefined is not a function (evaluating 'getPlugin()...:

Getting help

The best way to get help is via our dev-group.

Release notes

  • 2.0.0

    • Adds support for Screenshare on OSX and Windows
    • Adds support for OSX X86_64
    • Fix issue #1, #16, #26, #28, #29, #31 and #32
  • 1.3.1

  • 1.2.2

  • 1.2.1

    • Fix Issue #15
    • Adds support for x64 (Windows)
    • Change Windows setup:
    • to register the ActiveX under HKCU instead of HKLM
    • to install binaries under AppData folder instead of ProgramFiles
    • to bundle 32bit and 64bit binaries
  • 1.2.0

    • Adds DataChannel API with support for Strings, BLOBs and ArrayBuffers (Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array and Float64Array).
    • Adds support for DTMFSender API.
    • Implements secure prompt in getUserMedia. Websites served over htpps are stored in local file encrypted using DES-CBC. The encryption keys are defined at build time.
    • Bug fix: Issue #3, Issue #10 and Issue #11
  • 1.1.0

    • Add new JavaScript function: Webrtc::getScreenShot(). This function converts the RGB32 raw image to bitmap then to base64. The process is instantaneous and the base64 image could be used in JavaScript like this:
      var image = new Image();
      image.onload = function () {
          document.getElementById("mycanvas").getContext("2d").drawImage(image, 0, 0, width, height);
      image.src = "data:image/png;base64," + base64;
    • Bug fix:
      • Issue #6: The active element tag flashes when the window is resized or scrolled
      • Issue #7: drawImage() function is toooo slooow
      • Issue #8: Color alignment issue in drawImage()
  • 1.0.1
    • Initial release without support for DataChannel