Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 65 Next »

The Temasys Plugins bring support for webRTC to Desktop versions of Safari and IE. There is no solution to provide support for iOS versions of browsers at this stage. We are separately working on bringing webRTC support to iOS, with no timeline right now. Interested parties can contact us separately for details.

The Temasys WebRTC plugin implements the WebRTC spec as closely as possible. It implements the latest published draft, not working draft, and in case of ambiguity, will always align its behavior with the latest stable version of chrome and firefox.

It should work with existing code with only minor changes to the site. However for a site to take advantage installing the plugin on the target computer is not enough. We provide a modified version of adapter.js, an helper file originally provided by google and mozilla to help interaction between browsers, to illustrate what needs to be done.

We also provide a set of tests and demos, modified version of those provided by to support our plugin, as a way for you to test if the plugin installation was successful. Error should due reported against those tests whenever possible to provide us with a way to reproduce the problems.



Downloads (v0.8.794)

You can download the plugin installers here:


Known Issues

Do you have a technical issue with the plugin? Do you have a feature request?

Let us know in our plugin discussion group.!forum/temasys-discuss-webrtcplugin

Do you have a commercial request? Do you want more support, to rebrand, redistribute, or embed the plugin? Do you have a feature request beyond the webRTC existing webRTC specs?

Commercial request should be sent instead to sales (a)

Compatibility Matrix

 Win7 IE9Win7 IE10Win 7 IE 11Win 8.1 IE 11Win7 SafariWin8.1 SafariOSX 10.9
Safari 7.x
OSX 10.10
Public Beta
Safari 8.0
Stream RenderingOKOKOKOKSize issuesSize issuesOK OK
DataChannelStrings onlyStrings, Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array
Multi-TabOne camera can only be used by ONE tab at the time OKOK
Temasys BackendOKOKOKOKSize issuesSize issuesOKOK



Features introduced by the version 0.8.794

Adapter.js, version 0.9.0

  • namespacing of the plugin, the webrtc interface stays the same, you dont' need to change your code
    All Temasys related code is located in 


    All plugin related code is located in 

  • You should now access the plugin through Temasys.WebRTCPlugin.TemRTCPlugin
  • Two different injection strategies for IE 9 (or less) and any other browser
  • new popup offering to install the plugin
  • WebRTCReadyCb is deprecated, you should remove it from you code. You may now call any webrtc function at any time.
    If the plugin is not ready, your javascript will either wait until the plugin it is or launch an interval when possible.

Please note that you don't HAVE to upgrade your version of the adapter to upgrade your plugin. However, this new version bring a number of improvements, and we really think you should .

Please note that our examples are using the latest version of the adapter.


  • New auto-update popup (same style as for the plugin install popup)
  • PeerConnection::onicecandidate argument is now a RTCIceCandidate object instead of a simple dictionary

  • For the DataChannel to be able to send non-string element, the variable Temasys.WebRTCPlugin.TemRTCPlugin needs to be one access to the plugin
    You must define Temasys.WebRTCPlugin.TemRTCPlugin as a variable, not a function, although typeof Temasys.WebRTCPlugin.TemRTCPlugin might return function

    Temasys.WebRTCPlugin.TemRTCPlugin = document.getElementById("MyPluginElement);

    If you're using the adapter, this is already taken care of.

  • This declaration no longer needs to be part of your code

    function plugin0() {
      return document.getElementById('_Tem_plugin0'); // with _Tem_plugin0 the id you gave to your plugin element
    plugin = plugin0; 
  • Added functions play() and pause() to the rendering elements.
  • Added onplaying callback the the rendering elements.
  • Stability improvement, mainly on IE 9


 Features introduced by the version 0.8.780

12 Aug, 2014

  • Correction of important stability issues on IE when closing tabs
  • PeerConnection::addStream now takes a optional second argument that is always ignored. This is to ensure compatibility with websites using previous version of WebRTC
    The latest spec takes only one argument (the stream itself).


 Features introduced by the version 0.8.773

1 Aug, 2014

  • Correction of a bug happening when the plugin was launched with incorrect JS naming. The naming doesn't matter anymore
  • Correction of a bug generated when a plugin is created without any param given. The plugin functionalities won't be activated, but it won't crash.
 Features introduced by the version 0.8.770

17 July, 2014

  • New permission popup letting the user chose which devices (s)he wishes to grant access to. Default values are set according to the constraints provided to GUM
  • plugin().setLogFunction is now deprecated; You no longer need to set the plugin log function from JS, it will automatically use console.log
  • plugin().setPluginId is now deprecated; The plugin uses the id provided as parameter
  • The adapter.js function TemInitPlugin0 is now deprecated
  • Any javascript variable, function name and id starting by _Tem_ is now reserved for the plugin
  • This declaration MUST be part of your code (if you're using our extension of adapter.js, this is already taken care of)

    function plugin0() {
      return document.getElementById('_Tem_plugin0'); // with _Tem_plugin0 the id you gave to your plugin element
    plugin = plugin0; 
  • The DataChannel can send the following types:
  • A new parameter is needed for the <object> plugin element:

    <param name="windowless" value="false" />  // set to false for the plugin elements you use to make you invoke plugin methods (ie GetUserMedia), 
    										   // true for the ones that you use to render streams
  • Adding the parameter

    <param name="forceGetAllCams" value="True" /> // The following strings are interpreted as true: 'true', 'True', 'TRUE'
    												// All other strings are considered as false

    to the plugin element will enable the listing of all devices referenced on your computer (including unplugged devices, virtual devices, and so on)
    See How to enable virtual devices for more details.

  • MediaStream.stop() now triggers MediaStream.onended

  • Stability improvements
 Features introduced by the version 0.8.725

18 June, 2014

  • The devices are only fetched and activated when needed an released as soon as possible
  • Huge improvements regarding memory release (mainly on Windows)
  • MediaStream::stop was implemented
  • PeerConnection::close was implemented
  • PeerConnection::onstatechange was renamed onsignalingstatechange according to the specs
  • PeerConnection::oneicechange was renamed oniceconnectionstatechange according to the specs
  • Added a cache breaker to prevent Safari caching the plugin's latest version number (preventing auto-update)
  • PeerConnection ICEServer config can now take a sequence of ICESevers urls as well as a unique one for the same bloc of credentials
 Features introduced by the version 0.8.703

06 June, 2014

  • A NULL ICECandidate is sent once the ICEGathering is done
  • The data channel can be used to send strings - see here for an example
  • The function PeerConnection.getStats was implemented - see here for an example
  • The plugin can be set into verbose mode for debugging purposes - see How to use the plugin in verbose mode
  • The auto update function will now give you a direct download link
  • Stability improvements, mainly on Internet Explorer
 Features introduced by the version 0.8.624

23 May, 2014

  • Authorisation to use the camera/mic is asked before starting it (in GUM)
  • When lunched the plugin sends a request asking for the latest version number and prompts a message if a newer version is available

Initial Release

12 May, 2014

Currently Implemented

  • Plugin Specifics
    • Replaces an <audio>/<video> element and "renders" a stream.
    • Re-attaching a stream
    • Enabling/Disabling the capture from your camera
    • Enabling/Disabling the capture from your microphone
    • Click on a plugin instance (triggers element.onclick with the plugin element as arg.srcElement)
    • Verbose/debug mode

Implementation In-Progress

  • DataChannel for float arrayBuffers
  • DataChannel for BLOBs
  • Persistent permissions over HTTPS for GUM
  • Drag and Drop of plugin elements
  • Context Menu (Right Click)
  • More <audio> and <video> support
  • Displaying at size larger than stream resolution

Not ready or not planned for implementation yet, but of interest

  • W3C
    • Media Recording - (here) (working draft only, no editor draft available yet, i.e. not stable enough yet)
    • Image Capture - (here) (working draft only, no editor draft available yet, i.e. not stable enough yet)
    • Screen Sharing - (here) (unofficial draft, should have content by Nov 2014).
    • Media Capture Depth Stream Extensions - Editor Draft - (here )
    • ORTC (here)

 Known Issues

  • A rendering will sometimes go empty (white screen); Removing the element and injecting it again will solve the problem
  • If you microphone was disabled and you enable/disable the video camera, then your mic will be turned back on

  • No labels