/webrtc-everywhere

WebRTC plugin for Internet Explorer and Safari

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

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).

Downloads

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);

Screenshare

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

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**

License

  • 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

  • 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