Add Messaging, Voice, and Authentication to your apps with Vonage Communications APIs
Visit the Vonage API Developer PortalWelcome to version 2.29 of the OpenTok.js library.
If you have any questions, Vonage Support is here to help.
For details on the OpenTok.js API, see the OpenTok.js library reference.
Safari versions 15.4 and 15.5 (which ship with iOS 15.4 and 15.5 and macOS 12.3 and 12.4) fix issues that affect apps that use OpenTok.js (in Safari). See this note.
OpenTok.js now includes beta support for Google Chrome for iOS and Firefox for iOS.
OpenTok.js version 2.16 was the last version to support the OpenTok Plugin for Internet Explorer. OpenTok.js version 2.16 was deprecated in May 2020 for the Standard environment and June 2020 for the Enterprise environment. Support for the OpenTok plugin for Internet Explorer was removed in OpenTok 2.17.
OpenTok.js fully supports Chromium-based versions of Microsoft Edge (versions 79+) for Windows and macOS.
Safari now supports the VP8 video codec, in addition to H.264. VP8 support is in Safari 12.1, which ships on macOS 10.14.4 and is also available for macOS 10.13.6 and 10.12.6. And it is available in the latest iOS 12.2 release. For information on video interoperability and other issues, see the Safari browser support page. For more information on video codecs, see this developer guide.
As of Chrome 72 and Opera 59, an extension is no longer needed for screen sharing. Chrome prompts the end user for access to a screen, window, or tab, as it would for access to the camera. In the current versions of Chrome, Firefox, and Opera, you no longer need to deploy a screen-sharing extension.
On macOS 10.15+ (Catalina), to publish a screen-sharing stream
the user must grant the browser access to the screen in macOS System Preferences >
Security & Privacy > Privacy > Screen Recording. Otherwise,
the Publisher will dispatch an accessDenied
event.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This version adds quality improvements for the background blur and background replacement APIs.
This release fixes some issues — see the list of fixed issues.
Added support for Single Peer Connection. To enable single peer connection, pass in a singlePeerConnection
property of the options you pass into the OT.initSession()
method and set it to true
. When enabled, it reduces OS resource consumption, improves rate control, and in the case of mobile native devices, supports large sessions. See the Single Peer Connection documentation .
Added support for call quality change events. This version adds the qualityScoreChanged event, which the Subscriber object dispatches when there are changes in audio or video call quality.
We have extended the Publisher accessDenied event to be dispatched when the user revokes access to the camera or microphone after previously granting them. This was previously a beta feature.
Added support for audio input changed events. This version adds the audioInputDeviceChanged
event, which the Publisher object dispatches when the audio input device changes. See this documentation. This was previously a beta feature.
Added support for central processing unit (CPU) usage events. This version adds the cpuPerformanceChanged event, which the Session object dispatches when there are changes in CPU usage. This was previously a beta feature.
Added support to disable audio input management. To disable audio input management, add the disableAudioInputDeviceManagement
property to the options passed into the OT.initPublisher()
method and set it to true
.
See the documentation. This was previously a beta feature.
Added support for publishVideo
function callbacks. See the documentation. This was previously a beta feature.
This version adds support for the VP9 codec with Scalable Video Coding (SVC) in routed sessions. This is a beta feature.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Added support for call quality change events. This version adds the qualityScoreChanged
event, which the session object dispatches when there are changes in audio or video call quality. This is a beta feature.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
We have extended the Publisher accessDenied
event to be dispatched when the user revokes access to the camera or microphone after previously granting them. This is a beta feature.
This release fixes some issues — see the list of fixed issues.
Added support for audio input changed events. This version adds the audioInputDeviceChanged
event, which the Publisher object dispatches when the audio input device changes. See this documentation. This is a beta feature.
Added support for central processing unit (CPU) usage events. This version adds the cpuPerformanceChanged
event, which the Session object dispatches when there are changes in CPU usage. This is a beta feature.
Added support to disable audio input management. To disable audio input management, add the disableAudioInputDeviceManagement
property to the options passed into the OT.initPublisher()
method and set it to true
. This is a beta feature.
Added support for publishVideo
function callbacks. This is a beta feature.
This release fixes some issues — see the list of fixed issues.
Added support for media stream APIs for publishers and subscribers. See the Publisher mediaStreamAvailable and Subscriber mediaStreamAvailable events. This was previously a beta feature.
This release adds support for advanced noise suppression. See Applying the advanced noise suppression filter. This was previously a beta feature.
Added support for subscriber resolution optimization. You can now pass the "auto"
value into the preferredResolution
property of the options
object you pass into the Session.subscribe()
method. With the preferred resolution set to "auto"
, OpenTok.js automatically sets the preferred resolution for a subscriber, based on its dimensions in the browser. This feature only applies when subscribing to a stream that uses the scalable video feature.
This was previously a beta feature.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Added support for media stream APIs for publishers and subscribers. This is a beta feature. See the Publisher mediaStreamAvailable and Subscriber mediaStreamAvailable events.
This release fixes some issues — see the list of fixed issues.
This release adds support for advanced noise suppression. See Applying the advanced noise suppression filter.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Added support for subscriber resolution optimization. This is
a beta feature. You can now pass the "auto"
value into the preferredResolution
property of the options
object you pass into the Session.subscribe()
method. With the preferred resolution set to "auto"
, OpenTok.js automatically sets the preferred resolution for a subscriber, based on its dimensions in the browser. This feature only applies when subscribing to a stream that uses the scalable video feature.
Added TypeScript definitions for Subscriber audioBlocked
and audioUnblocked
events.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Added support for publisher audio fallback. This was previously a beta feature. For more information, see the Publisher audio fallback documentation.
Added support for the VP9 codec in relayed sessions. For more information, see the Video Codecs documentation.
Added support for end-to-end-encryption interoperability with the other Vonage Video client SDKs. For more information, see the End-to-end encryption documentation.
Added support in the Vonage Media Processor library for subscriber media processor APIs for audio and video. You can apply custom subscriber video and audio transformations to video and audio streams using the Subscriber.setVideoMediaProcessorConnector()
and Subscriber.setAudioMediaProcessorConnector()
methods. For more information, see the Vonage Media Processor documentation.
This release fixes some issues — see the list of fixed issues.
Added support for publisher audio fallback. This is a beta feature. See Publisher audio fallback.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Added support for publisher initials.
This feature allows users to specify what initials
to display over the publisher's widget when the video is disabled. See the documentation
for the initials
option of the properties
of the
OT.initPublisher() method. This was previously a beta feature.
Live Captions. This version adds support for Live Captions. This was previously a beta feature.
This release fixes some issues — see the list of fixed issues.
Added support for publisher initials.
This is a beta feature. This feature allows users to specify what initials
to display over the publisher's widget when the video is disabled. See the documentation
for the initials
option of the properties
of the
OT.initPublisher() method.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Improved performance of Background Blur and Background Replacement APIs on low-end devices.
This release fixes some issues — see the list of fixed issues.
This version adds support for Live Captions. This is beta feature.
This release fixes some issues — see the list of fixed issues.
Added method to disable scalable video. You can disable scalable video (in a publisher in a routed
session). For more information, see the scalableVideo
option of the
OT.initPublisher()
method. This was previously a beta feature.
Background image filter for published streams. For more information, see the videoFilter
option of the
OT.initPublisher()
method. This was previously a beta feature.
Added support for end-to-end encryption. You can enable end-to end-encryption using the Session.setEncryptionSecret()
method. See the documentation for the
Session.setEncryptionSecret()
method.
This release fixes some issues — see the list of fixed issues.
Added method to disable scalable video. This is
a beta feature. You can disable scalable video (in a publisher in a routed
session). For more information, see the scalableVideo
option of the
OT.initPublisher()
method.
Added supported for adaptive media routing. For more information, see the Adaptive Media Routing documentation.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Added support to update custom TURN credentials. See the documentation for the Session.setIceConfig() method. This is available for projects that use the configurable TURN server add-on. This was previously a beta feature.
Added support for insertable streams for audio and video.
You can apply custom audio and video transformations to a published
stream using the Publisher.setAudioMediaProcessorConnector()
and Publisher.setVideoMediaProcessorConnector()
methods. You can also integrate with the
Vonage media processor
library to apply additional transformations. For more information, see
Using the Vonage Media Processor library.
This was previously a beta feature.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Added support to update custom TURN credentials. See the documentation for the Session.setIceConfig() method. This is available for projects that use the configurable TURN server add-on. This is a beta feature.
Added support for third-party images in a background replacement filter.
This is a beta feature. You can now use an image from a remote source
(from a domain other than that of the web page) in a background replacement filter
for a published stream. See the documentation for the videoFilter
option of the
OT.initPublisher() method.
This release fixes some issues — see the list of fixed issues.
Added support for Insertable Streams for audio. This is
a beta feature. You can apply custom audio transformations to a published
stream using the Publisher.setAudioMediaProcessorConnector()
method. You can also integrate with the
Vonage media processor library
to apply additional transformations. For more information, see
Using the Vonage Media Processor library.
Added support for Video Filters when using custom video streams. A custom
stream is a stream published with a
MediaStreamTrack
object as the video source. This is a beta feature. You can apply custom video
filters to a publisher using the Publisher.applyVideoFilter()
method.
This release fixes some issues — see the list of fixed issues.
Added support for Insertable Streams for video. This is
a beta feature. You can apply custom video transformations to a published
stream using the Publisher.setVideoMediaProcessorConnector()
method. You can also integrate with the
Vonage media processor library
to apply additional transformations. For more information, see
Using the Vonage Media Processor library.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Added support for the background replacement filter. This is
a beta feature. You can apply the background replacement filter to a published stream.
See the documentation for the videoFilter
option of the
OT.initPublisher() method.
This release fixes some issues — see the list of fixed issues.
Added a method to check if the browser supports video filters. This was previously a beta feature. See the documentation for the OT.hasMediaProcessorSupport() method. This method reports whether the browser supports video filters, which require media processor support. Also, see the docs for the Publisher.applyVideoFilter(), Publisher.getVideoFilter(), and Publisher.clearVideoFilter() methods.
Added support for filtering video for publishers using Chromium-based browsers.
This was previously a beta feature. Currently, only a background blur filter can be applied.
See the videoFilter
property of the option
parameter you pass into OT.initPublisher()
method. Also, see the docs for the
Publisher.applyVideoFilter(),
Publisher.getVideoFilter(), and
Publisher.clearVideoFilter()
methods.
Added support for Full High Definition (1080p). You can specify '1920x1080'
as the resolution
property of the options you pass into the
OT.initPublisher() method.
This was previously a beta feature.
New feature that implements scalable video
support for screen sharing. This was previously a beta feature.
See the scalableScreenshare
option for the OT.initPublisher()
method.
This release fixes some issues — see the list of fixed issues.
Added a method to check if the browser supports video filters. This is a beta feature. See the documentation for the OT.hasMediaProcessorSupport() method. This method reports whether the browser supports video filters, which require media processor support. (Currently, only a background blur filter is supported.) Also, see the docs for the Publisher.applyVideoFilter(), Publisher.getVideoFilter(), and Publisher.clearVideoFilter() methods.
Added support for filtering video for publishers using Chromium-based browsers.
This is a beta feature. Currently, only a background blur filter can be applied.
See the videoFilter
property of the option
parameter you pass into OT.initPublisher()
method. Also, see the docs for the
Publisher.applyVideoFilter(),
Publisher.getVideoFilter(), and
Publisher.clearVideoFilter()
methods.
This release fixes some issues — see the list of fixed issues.
Added support for Full High Definition (1080p). You can specify '1920x1080'
as the resolution
property of the options you pass into the
OT.initPublisher() method.
This is a private beta feature. Please contact Vonage if you would like to enable this
feature for your Video API project.
This release fixes some issues — see the list of fixed issues.
Added support for filtering video for the publisher. This is a beta feature. Currently, only a
background blur filter can be applied. See the videoFilter
property of the option
parameter you pass into OT.initPublisher()
method. Also, see the docs for the
Publisher.applyVideoFilter(),
Publisher.getVideoFilter(), and
Publisher.clearVideoFilter()
methods.
New feature that implements scalable video
support for screen sharing. This is a beta feature.
See the scalableScreenshare
option for the OT.initPublisher()
method.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Added support for Opus DTX. This was previously a beta feature. Using
Opus DTX can reduce bandwidth usage
in streams that have long periods of silence. See the enableDtx
property of the option
parameter you pass into OT.initPublisher()
method.
Ability to select audio output. This was previously a beta feature. See the docs for the OT.getAudioOutputDevices(), OT.getActiveAudioOutputDevice(), and OT.setAudioOutputDevice() methods.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
We discovered issues in versions 2.21.3 and versions 2.21.4 after they were released, so we reverted the current version back to 2.21.2 on December 21, 2021.
This release fixes some issues — see the list of fixed issues.
Added support for Opus DTX. This is a beta feature. Using
Opus DTX can reduce bandwidth usage
in streams that have long periods of silence. See the enableDtx
property of the option
parameter you pass into OT.initPublisher()
method.
Ability to select audio output. This is a beta feature. See the docs for the OT.getAudioOutputDevices(), OT.getActiveAudioOutputDevice(), and OT.setAudioOutputDevice() methods.
Added scalable video support to desktop Opera and Chromium-based versions of Edge. This is a beta feature.
Ability for moderators to mute participants. This was previously a beta feature. See the docs for the Session.forceMuteAll() and Session.forceMuteStream() methods.
Added support for Chrome and Firefox on iOS 14.3+.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Ability to dynamically change how published video streams are optimized.
This can improve video perfomance for some screen-sharing streams and in other conditions.
See this developer guide
topic and the documentation of the videoContentHint
property the options
you pass into the OT.initPublisher()
method and the
Publisher.setVideoContentHint() method.
Ability for moderators to mute participants. This is a beta feature. See the docs for the Session.forceMuteAll() and Session.forceMuteStream() methods.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
New feature to dynamically change the camera video source for a publisher. See the Publisher.setVideoSource() method and the Publisher.getVideoSource() method.
New settings to independently control audio processing options for published
streams. See the autoGainControl
, echoCancellation
,
and noiseSuppression
options for the
OT.initPublisher()
method.
We have improved the performance for audioLevel events in Chrome, Edge, and Opera.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
RTCStatsReport audio and video statistics for a publisher or subscriber. See the Publisher.getRtcStatsReport() and Subscriber.getRtcStatsReport() methods.
Added support for the IP Proxy feature. See the OT.setProxyUrl() method.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
Added support for Chromium-based versions of Microsoft Edge (versions 79+) for Windows and macOS.
Added screen-sharing support for Safari 13 on macOS.
Removed support for the OpenTok Plugin for Internet Explorer.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
API additions for working with the Subscriber audio autoplay. Firefox 66 and Chrome 71 introduced new autoplay policies that are similar to the one in Safari. (See these Firefox and Chrome announcements.) The following API additions let you remove the default audio playback icon (displayed) by the Subscriber and use display own UI element that the end user will click to play back audio (in Chrome and Safari):
style.audioBlockedDisplayMode
property of the options
parameter of the
Session.subscribe()
method
Also see the list of fixed issues.
This release fixes an issue with subscriber audio playback in Firefox 66+ — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes an issue with logging to the console — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
The ability to dynamically change the audio source for a publisher. See the Publisher.setAudioSource() and Publisher.getAudioSource() methods.
The ability to get a list of supported video codecs in the client's browser. See the OT.getSupportedCodecs() method.
Event when a subscriber's video resumes when the codec changes to one supported in the subscriber's browser. See the Subscriber videoEnabled event.
Screensharing without extensions in Chrome. Chrome 70 allows
screen sharing without an extension, using the MediaStream.getDisplayMedia()
method. Chrome asks the user to grant the page permission to share the screen.
In Chrome 70, go to chrome://flags
and select the "Enable Experimental Web
Platform Features" flag. We anticipate that this feature will be enabled in future
stable versions of Chrome (and Opera). With this setting enabled, calling
OT.checkScreenSharingCapability()
results in supported
being set
to true
and extensionRequired
being undefined.
Allowed IP list setting. Partners that have the allowed IP list
[add-on feature](https://tokbox.com/pricing)
enabled for an OpenTok project should set the new ipWhitelist
property
of the options
parameter of OT.initSession()
to
true
when instantiating a Session object.
Also see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes some issues — see the list of fixed issues.
This release fixes an issue in Chrome on Android — see the list of fixed issues.
This release fixes a few known issues — see the list of fixed issues.
This release fixes a few known issues — see the list of fixed issues.
This release fixes a known issue in Chrome 64. See the list of fixed issues.
Ability provide a preference for the publisher using a front-facing or back-facing
camera (on devices that support this). You can set this preference with the
facingMode
property of the options object you pass into the
OT.initPublisher() and
OT.getUserMedia()
methods. For example, you can set the property to "user"
(front-facing
camera) or "environment"
(rear-facing camera).
Ability to change the video input device used by a publisher. Calling the Publisher.cycleVideo() method changes the video input device (camera) used by the publisher. With each call, the publisher cycles through the available video input devices.
Event when a video codec is not supported on a subscribing client. If a
client's browser does not support the video codec used by a stream it subscribes to,
the Subscriber object dispatches a videoDisabled
event, and the
reason
property of the event object is set to
"codecNotSupported"
. For details, see the documentation for the
videoDisabled event.
Bug fixes. This version fixes a number of known issues (see Fixed issues).
Bug fixes. This version fixes a number of known issues (see Fixed issues).
Publishing from a MediaStreamTrack. You can now publish audio and video
using a
MediaStreamTrack as the source of the stream's audio or video. When calling
OT.initPublisher(), you
can specify an audio MediaStreamTrack object as the audioSource
or you can
specify a video MediaStreamTrack object as the video source. Also, you can call the
new OT.getUserMedia()
method to get a MediaStream object that uses the microphone and camera as the audio and
video source (and you can then obtain the MediaStreamTrack object by calling the
getAudioTracks()[0]
and getVideoTracks()[0]
on the MediaStream
object). This feature is not supported in the OpenTok Plugin for Internet Explorer.
Support for stereo audio. You can now publish stereo audio by setting the
enableStereo
option to true
when calling the
OT.initPublisher() method.
Getting audio and video statistics for a publisher. You can now get audio and video statistics for a Publisher by calling the getStats() method of the Publisher object. These stats include:
You can use these stats to assess the quality of the publisher's audio-video stream.
H.264 support in Internet Explorer This version adds H.264 support to the OpenTok Plugin for Internet Explorer. This means that clients using the plugin can interoperate with Safari clients (and others) in Safari OpenTok projects.
Also see the list of fixed issues.
Bug fixes. This release includes a number of bug fixes. For details, see the list of fixed issues.
Bug fixes for Safari. Safari support is now included in this version (and moved out of beta). OpenTok.js now supports Safari 11 on macOS and Safari on iOS 11. For information on video interoperability and other issues, see the Safari browser support page.
Reduced file size. The opentok.min.js file is now about half the size of version 2.11.6.
TypeScript support. TypeScript type definitions are available in the @opentok/client npm package.
Audio tuning API. The OT.initPublisher()
method includes
options to set the desired audio bitrate, to disable automatic gain control,
to disable echo cancellation, and to disable noise suppression. See
this section
of the OpenTok developer guides for more information.
WebRTC version upgrade in the OpenTok Plugin for Internet Explorer. The Plugin now uses WebRTC 56, which includes improvements for performance and stability.
Updated text message for unsupported browser versions. In older, unsupported
versions of Chrome and Firefox, we have changed the end-user notification
to upgrade the browser, adding the option to continue at their own risk. You can call
OT.checkSystemRequirements()
to see if the browser is supported.
This version includes bug fixes. For details, see Fixed issues.
This version includes bug fixes. For details, see Fixed issues.
New name property of OpenTok Error objects. The Error object passed into
completion handlers for some methods now has a name
property. Use
this new name
property, instead of the code
property
(which is deprecated), to to identify the error programatically. For more information, see
the documentation of the Error object.
Improved video quality in the OpenTok Plugin for Internet Explorer. The plugin uses a better interpolation method, resulting in improved video quality. Also, we have fixed an issued with video ing when a video's container is resized.
Frame rate statistics available in the Subscriber.getStats() method. The
callback function for the
Subscriber.getStats() method now includes a video.frameRate
property,
which is set to the video frame rate of the subscriber's video stream.
Work-around for a Chrome bug in which a Publisher fails to get access to the
microphone. This results in a Publish timeout error and a Subscriber error for any
subscriber trying to subscribe to the stream. This bug requires the user to restart the
browser and reload your page. As a work-around, when this bug occurs, the completion handler
of the Session.publish()
method is called with an error, and the
name
property of the error object is set to
"OT_CHROME_MICROPHONE_ACQUISITION_ERROR"
. In this case, you can notify
the user to restart the browser. Note: This
issue was
fixed in Chrome 63.
Visual indication when a subscriber is reconnecting to a stream. As part of the OpenTok reconnection feature, subscribers will attempt to automatically reconnect to stream if it is dropped unexpectedly. When this occurs, the subscriber element displays an icon indicating that the subscriber is trying to reconnect to the stream (and this icon was added in v2.10.0).
Improved support for networks with authenticated proxies in the OpenTok Plugin for Internet Explorer. For a large number of authenticated proxy networks, clients using Internet Explorer can now publishing and subscribing to streams.
This version also includes bug fixes and performance improvements. For details, see Fixed issues.
Scalable video. The OpenTok Media Router now includes the OpenTok scalable video feature (previously in beta). For more information, see the OpenTok Media Router documentation.
Ability to use previously selected devices in the OpenTok Plugin. You can now have
the OpenTok Plugin for Internet Explorer use the camera and microphone the user previously
selected (from a previous visit to a page on the same HTTPS domain). For more information,
see the usePreviousDeviceSelection
property of the options
parameter of the
OT.initPublisher() method.
Access to the video element of a Publisher or Subscriber. You can now disable the
default user interface elements for Publishers and Subscribers and access the HTML
video
element directly. When publishing or subscribing to a stream, set the
new insertDefaultUI
property to false
when calling the OT.initPublisher() or
Session.subscribe() method and set an
event listener for the videoElementCreated
event dispatched by the Publisher
or Subscriber object. The element
property of the event is a reference to
the HTML video
element (or in Internet Explorer the object
element
containing the video) is created. For more information, see
Directly accessing the video
element for a Publisher or Subscriber.
New version of the Firefox screen-sharing extension. This new version,
available at the
screensharing-extensions repo, adds support for the extensionInstalled
property of the
OT.checkScreenSharingCapability() callback. In Firefox (using the new version of the
screen-sharing extension), this property is set to true
if the extension is
installed and set to work in the current page's domain. For details,
see the Screen sharing developer
guide.
Subscriber stream statistics. Use the Subscriber.getStats() method to get information about the subscriber's stream quality, including the following:
To get statistics for a stream published by the local client, you must use a session
that uses the OpenTok Media Router (sessions with the
media mode set to routed), and
you must set the testNetwork
property to true
in the
options
object you pass into the
Session.subscribe() method.
The opentok-network-test repo includes sample code for showing how to use statistics of a test stream before publishing to a session.
Screen-sharing support in Internet Explorer. The OpenTok plugin for Internet Explorer now supports publishing screen-sharing streams. For details, see the Screen sharing developer guide.
New new version of the Chrome screen-sharing extension. This new version,
available at the
screensharing-extensions repo, adds support for immediate use of the extension upon
installation (without reloading the page). The
OT.registerScreenSharingExtension() method now includes a version
parameter
to specify which version of the Chrome screen-sharing extension you are using.
Fixed issue with Firefox–Internet Explorer streaming. This release fixes issues with streams transmitted between clients using the OpenTok Plugin for Internet Explorer and Firefox version 42.
This release fixes some known issues. See Fixed issues.
New method for programmatically flagging an issue encountered when using OpenTok.js. See the documentation for the OT.reportIssue() method and Reporting an issue.
Support for OT.getDevices() in Internet Explorer. See the documentation for OT.getDevices() and Setting the camera and microphone used by the publisher.
Hiding built-in user interface controls for videos. You can turn off
all built-in user interface controls for a Publisher or Subscriber view,
by setting the showControls
property to false
when calling the
OT.initPublisher() or
Session.subscribe() method.
These controls include the name display, the audio level indicator, the
microphone control button (Publisher), the mute audio button, the video disabled
indicator (Subscriber), and the video disabled warning icon (Subscriber).
You can also control the display of each of these user interface controls
individually. For more information, see
Hiding
all built-in user interface controls for videos.
New errors. This release includes some new errors, with the following codes:
For more information, see the reference documentation for the Error object.
Other improvements. This release includes a number of improvements in performance and stability. Please see Features added in previous versions, Known issues, and Fixed issues.
Versioning and SRC path changes — See the note in the Announcements section.
Screen-sharing support — You can now share your screen as the video source for a publisher in Chrome and Firefox. Other clients (using OpenTok.js or the OpenTok Android or iOS SDKs version 2.4) can subscribe to the screen-sharing stream, just as they would subscribe to a stream that uses a camera as the video source. For more information, see Screen sharing — Web and the following sections of the OpenTok.js reference:
Control of cropping and letter-boxing of videos — You can now specify whether
videos will be cropped or letter-boxed when the aspect ratio of the video does not match the aspect
ratio of the DOM element. Set the fitMode
property when you initialize the
Publisher or Subscriber object. See the documentation for
OT.initPublisher()
and Session.subscribe().
Disabling the audio-fallback feature — The audio-fallback feature,
added in OpenTok.js 2.2.9, is available in sessions that use the the OpenTok Media Router.
With this feature, a subscriber to a stream will drop the stream's video (switching to
audio-only mode) due to poor stream quality (perhaps because of network conditions).
You can disable this feature by setting the audioFallbackEnabled
property
of the properties
parameter to false
when you call the
OT.initPublisher() method to create
a publisher. (Subscriber's to the published stream will not have the video stream
drop out due to poor stream quality.)
Disabling the built-in user interface controls for Publisher and Subscriber
videos — You can disable these default user interface controls by
by setting the showControls
property to false
in the
properties
parameter you pass into the
OT.initPublisher() or
Session.subscribe(). For more
information, see
Hiding
all built-in user interface controls for videos.
In Internet Explorer, when a page calls OT.initSession()
,
OT.initPublisher()
, or OT.upgradeSystemRequirements()
, it
prompts you to install the OpenTok Plugin (if you have not already). Once you have
installed the plugin and reloaded the page, OpenTok functionality is available on the
page (and on other pages that use OpenTok).
In Internet Explorer, when a page attempts to publish an OpenTok video, the OpenTok plugin prompts the user to grant access to the camera and microphone.
For information on testing your app with the OpenTok Plugin for Internet Explorer, see this article.
See the list of known issues.
New features for audio-only streams — The following new API and user interface enhancements add support for audio-only streams:
audioLevelDisplayMode
style of the Subscriber
object. (See Session.subscribe()
and Subscriber.setStyle()).
audioLevelUpdated
event indicates audio level of a
Subscriber or Publisher audio stream. You can use this event to create your own
audio level meter or to detect the active speakers in a session. See the
audioLevelUpdated
Subscriber
event and Adjusting
user interface based on audio levels.
videoDisabledDisplayMode
style of the Subscriber object. (See Session.subscribe()
and Subscriber.setStyle().) The Subscriber
also dispatches videoDisabledWarning
, videoDisabled
, and
videoDisabledWarningLifted
events, and you can use these events along with the
videoDisabledDisplayMode
style to customize the appearance of the video disabled warning
indicator and the video disabled indicator. (See Subscriber
events)videoDisabled
event dispatched by the Subscriber now has a
reason
property. The videoDisabled
event is now dispatched
whenever the video is disabled, either due to poor stream quality, due to the publisher
disabling video, or due to the subscriber disabling video. The reason
property
describes the cause. Also, there is a new videoEnabled
event dispatched by the
Subscriber object. It also has a reason
property. These events are defined by the
VideoEnabledChangedEvent object.
For details, see the documentation for the videoDisabled
and videoEnabled
Subscriber events.
Allow/Deny Flow Removal — This version removes the user interface hints on how to grant access to the camera and microphone, which were added in v2.2.5. After several months, we haven't seen any evidence that points to changes in user behavior as a result of these instructions.
OpenTok Plugin for Internet Explorer — The new OpenTok Plugin for Internet Explorer enables OpenTok sessions in Internet Explorer. The plugin is now shipped in production. Developers who were testing the beta plugin can use the plugin with the shipping OpenTok.js library.
Device enumeration and selection — Use the OT.getDevices()
method to enumerate available audio and video input devices. You can now set the
audioSource
and videoSource
properties of the properties
parameter of the OT.initPublisher()
method to specify an audio and video input
device for the publisher to use. See OT.getDevices()
and OT.initPublisher() .
The OpenTok.js library presents user interface hints on how to grant access
to the camera and microphone (added in v2.2.5). In v2.2.6, there is a 5-second
delay before this message is displayed. You can prevent this message from being
displayed by calling the preventDefault()
method of the event object
in the
accessDialogOpened event handler.
The OpenTok.js library now presents user interface hints on how to grant access
to the camera and microphone. You can prevent this user interface from being displayed
by calling the preventDefault()
method of the event object
in the
accessDialogOpened and the
accessDenied event handlers.
For details on changes and features added in OpenTok 2.2, see this page.
For information on changes in previous versions, see the release notes for OpenTok.js 2.0.
The OpenTok.js library is currently supported in:
Important: OpenTok.js version 2.16 was the last version to support the OpenTok Plugin for Internet Explorer. OpenTok.js version 2.16 was deprecated in May 2020 for the Standard environment and June 2020 for the Enterprise environment.
The OpenTok.js library uses port 443. Port 443 must be open on the client network.
The following are known issues for this version of OpenTok.js:
On Windows computers with Intel Smart Sound Technology audio drivers installed, a Publisher object may not dispatch an audioInputDeviceChanged
event
when switching audio input devices. However, audio will still be routed correctly.
We are working on a fix for this issue.
OpenTok 2.27 and later is not supported on Safari 14 and lower.
For iOS browser subscribers, in some cases, the audio level may be incorrect. We are working on a fix for this issue. This issue has been reported as a WebKit bug.
For iOS 17+ browser users, video flickers when device orientation is changed and with resizing of the video. This issue has been reported as a WebKit bug.
In Chromium browsers, closing the laptop lid while publishing causes the publisher to be destroyed. This issue is a result of a Chromium bug.
Emojis unexpectedly appear in videos in iOS 17 and macOS 14 (Sonoma). This is a result of the new Apple [Reactions](https://support.apple.com/en-us/105117) feature. At this time, there is no API or programmatic to turn this off. End-users must disable it during a video session. On macOS, click the green video camera icon in the Mac's menu bar and then deselect Reactions. On iOS and iPadOS, open Control Center (by swiping down from the top-right corner or bottom of the screen, depending on the device), tap Video Effects, and then tap Reactions to disable it.
For Firefox users on Android 13, video resolution may be incorrect when switching orientation. Rotating a device running Android 13 may not cause the video resolution to be properly updated. This issue is the result of a reported Mozilla regression. Note: there is a pull request to fix this issue.
In Safari 17.0 and Safari 17.1, video resolution setting ignored for screen-sharing video. The resulting resolution is always 640x360, regardless of the resolution set when initializing the Publisher. This issue has been reported as a WebKit bug. This issue is fixed in Safari version 17.2.
For users on iOS 17+, video is initially displayed as the wrong resolution in a video publisher, resulting in a visible flicker as the video resizes. This issue is the result of a reported Webkit regression.
On iOS 16.4+ when using the iCloud Private Relay feature on Safari, users may experience disconnects in relayed sessions. This has been reported as a WebKit bug.
On Safari, when calling the
OT.initPublisher() method for
initializing a screen-sharing publisher without a user gesture handler, you may receive an
InvalidAccessError
error.
This is expected behavior for Safari.
In some cases, "MaxListenersExceededWarning" may be logged in the console. This shouldn't cause any problems. We are investigating this issue.
In some cases, when tab-sharing a Google Slides presentation, the video is letter-boxed when the publisher's aspect-ratio is 4:3. This issue is not present when screen-sharing the Google Slides presentation.
On Android 12 and 13, Chrome requires using the "Media Volume" to adjust the volume instead of the phone's volume slider. This issue has been reported as a Chromium bug.
On Android 13, Firefox microphone and camera permissions require a device restart. After you set the permissions in the browser, you need to restart the device for the permissions to take effect.
iOS Safari audio and video loss after incoming phone call. After an iOS device accepts an incoming phone call and returns to an OT session, the audio and video from the iOS device may be dropped. This has been reported here and here as WebKit bugs.
Audio degradation over time on iOS/iPadOS devices with Safari. The audio quality for streams published from Safari on iOS/iPadOS may degrade over time with a growing crackling/distortion sound. This issue has been reported as a WebKit bug.
Video can flicker for streams with the videoType set to "custom".
This can happen if video content doesn't change much. Setting the content hint
to text
or detail
mitigates the issue. See
this developer guide
topic and the documentation of the videoContentHint
property the options
you pass into the OT.initPublisher()
method and the
Publisher.setVideoContentHint() method. This issue has been reported as
a Chromium bug.
The accessDialogOpened
event may be erroneously dispatched. When calling
the OT.getUserMedia()
method, the accessDialogOpened
event may be dispatched, even though no access dialog
was shown.
For some mobile Firefox web users, device orientation may corrupt the publisher's video stream. See this Mozilla bug report.
Setting the frame rate does not work in Firefox on macOS when using the built-in
FaceTime camera. Setting the frameRate
option when calling
OT.initPublisher()
has no effect.
This is the Mozilla bug
report for the issue.
Setting the audio bitrate is not supported in streams published in Firefox.
Setting the audioBitrate
option of the OT.initPublisher()
method has no effect in Firefox.
Echo cancellation disabled with stereo audio input in Chrome. Some browsers (such as Chome 73+) do not support echo cancellation for stereo audio (see this Chrome issue report).
In Chrome, publishing is not supported on http (insecure) pages (except for http://localhost). You must serve the page over https (secure). Note that for testing, you can also load a page from the local file system (from the file: URI scheme).
Desktop Safari displays videos upside down when using picture in picture mode. This issue only occurs when subscribing to a video stream published by an iOS Safari client in a routed session.
In some browsers, warnings were being logged in the console. We have fixed this issue.
In some cases, supported browsers were erroneously detected as incompatible. We have fixed this issue.
Automatic reconnections occasionally failed in certain scenarios. We have fixed this issue.
We have fixed some security vulnerabilities.
In some cases, when screensharing, the mediaStopped
and streamDestroyed
events were not dispatched. We have fixed this issue.
In some cases, the Publisher accessDenied event was missing an error message. We have fixed this issue.
We have fixed some security vulnerabilities.
On some computers with certain graphics processing units (GPUs), using background blur or replacement was sometimes causing a memory leak. We have fixed this issue.
Publishers were unable to publish multiple times without destroying the publisher. We have fixed this issue.
In some cases, when calling the Publisher.getAudioSource()
method, the correct device ID of the audio source was not being returned. We have fixed this issue.
The TypeScript definition for signal
events could not support signals with an undefined type
.
We have fixed this issue.
In some cases, audio was muted. We have fixed this issue.
In some cases, publishers were failing to republish. We have fixed this issue.
In some cases, publishers in relayed sessions were destroyed when a subscriber had certain network issues. We have fixed this issue.
In some cases, importing the SDK would cause an error. We have fixed this issue.
In some cases, users could not be heard. We have fixed this issue.
The applyAudioFilter
type was incorrect in the TypeScript definition.
We have fixed this issue.
Safari subscribers were generating unnecessary errors when receiving audio only from publishers. We have fixed this issue.
We have fixed some security vulnerabilities. Note: this was already addressed in versions 2.29.0 and 2.28.7.
Safari subscribers were generating unnecessary errors when receiving audio only from publishers. We have fixed this issue.
In some cases, importing the SDK would cause an error. We have fixed this issue.
In some cases, users could not be heard. We have fixed this issue.
In some cases, publishers in relayed sessions were destroyed when a subscriber had certain network issues. We have fixed this issue.
In some cases, publishers were failing to republish. We have fixed this issue.
Publishers were unable to publish multiple times without destroying the publisher. We have fixed this issue.
On some computers with certain graphics processing units (GPUs), using background blur or replacement was sometimes causing a memory leak. We have fixed this issue.
In some cases, the audio level may return null. We have fixed this issue.
In some cases, end-to-end encryption was not working properly when the encryption secret was updated. We have fixed this issue.
Audio was occasionally lost when the audio input device was changed. We have fixed this issue.
Video was opening in full screen for iOS 17 subscribers. We have fixed this issue.
Video was occasionally going blank after joining a session. We have fixed this issue.
The target property of the Subscriber connected and disconnected events included some undefined values. We have fixed this issue.
In some cases, audio was not routed when switching audio input devices. We have fixed this issue.
In some cases, Electron apps running on Apple Silicon laptops could not publish. We have fixed this issue.
In Safari, new subscribers were inaudible until bringing focus to the browser tab.We have fixed this issue.
In some cases, when Live Captions were enabled, the stream.hasAudio property was not set correctly. We have fixed this issue.
In relayed sessions, subscriber video was freezing for users using browsers on iOS 17+. We have fixed this issue.
On some computers with certain graphics processing units (GPUs), using background blur or replacement was sometimes causing a memory leak. We have fixed this issue.
In some cases, duplicate events were dispatched. We have fixed this issue.
When transitioning backgrounds using the Publisher.applyVideoFilter() method, the background momentarily changes to solid black. We have fixed this issue.
Some legacy code used an eval-based expression. We have fixed this issue.
In Safari 16.6, audio was not heard if you subscribed to an audio only stream. We have fixed this issue.
An error was appearing in the console when users disconnected from sessions. We have fixed this issue.
When users unpublished screen sharing, an incorrect reason was sent. We have fixed this issue.
In some cases, audio was lost when switching audio devices in a session. We have fixed this issue.
In some cases, subscribers were not able to mute publishers. We have fixed this issue.
In some cases, an error occurred when the audio input was changed. We have fixed this issue.
In relayed sessions, participants were sometimes unable to establish peer connections
when the transportPolicy
was set to relay
. The transportPolicy
setting is part of the Configurable
TURN servers add-on feature. We have fixed this issue.
Participants were unable to update invalid end-to-end encryption passwords. We have fixed this issue.
Audio was occasionally lost when audio devices were switched during a session. We have fixed this issue.
Reusing the same device ID in the Publisher.setVideoSource() method in Chrome on Android produced blank video. We have fixed this issue.
When background blur was enabled on an Android phone, cycling video sometimes caused the screen to go black. We have fixed this issue.
In some cases, audio events were not displayed for publishers. We have fixed this issue.
Added fixes to the default UI.
In some cases, participants were unable to unmute their audio. We have fixed this issue.
Video filters were causing delayed or dropped video. We have fixed this issue.
Background blur was not working if EU proxy was enabled. We have fixed this issue.
Poor background blur performance on certain devices. We have fixed this issue.
In some cases, importing a webpack module would cause an error. We have fixed this issue.
In some cases, when background blur was enabled, warnings were logged in the console. We have fixed this issue.
Applying video filters may have caused a memory leak. We have fixed this issue.
When background blur or replacement was applied in sessions with IP Proxy enabled, certain assets were not being proxied. We have fixed this issue.
The Session.setIceConfig() method was forcing reconnects. We have fixed this issue.
The Session.setIceConfig() method excluded some servers. We have fixed this issue.
The MediaProcessorConnector
type was incorrect in the TypeScript definition.
We have fixed this issue.
Applying video filters to multiple publishers could fail. We have fixed this issue.
In some cases, the camera LED stays on when cycling video with background blur enabled. We have fixed this issue.
When background blur was enabled in sessions with IP Proxy enabled, certain assets were not being proxied. We have fixed this issue.
In some cases, when publishing video failed, no exception was thrown. We have fixed this issue.
Publishing with muted video may take longer than usual in Firefox. We have fixed this issue.
In some cases, when cycling video failed, no exception was thrown. We have fixed this issue.
Clients were unable to subscribe to their own streams. We have fixed this issue.
Publisher.getStyle()
was returning an incorrect TypeScript definition.
We have fixed this issue.
In routed sessions, publishing with muted video may take longer than usual. We have fixed this issue.
In some cases, when a video filter was applied, performance was sluggish. We have fixed this issue.
In relayed sessions, audio and video may be momentarily desynchronized during the start of a session. We have fixed this issue.
There was a momentary blip when changing video backgrounds. We have fixed this issue.
There was a missing typescript definition for setVideoMediaConnector
.
We have fixed this issue.
When background blur is enabled, the camera LED would remain on after disconnecting from a session. We have fixed this issue.
When background blur or replacement is enabled, some assets were download from non-OpenTok domains. We have fixed this issue.
The TypeScript type definition was missing for videoFilter
type BackgroundReplacementFilter
We have fixed this issue.
With IP proxy enabled, using background blur disables some client logs. These logs are used for analytics and tools like Inspector. We have fixed this issue.
In Firefox, switching a publisher’s camera while enabling/disabling the video may not result in the correct camera image being displayed. We have fixed this issue.
Currently on relayed sessions when using picture-in-picture mode, macOS Safari flips video received from iOS browsers. We have fixed this issue.
When changing the level of blurriness of a background blur video filter,
a black screen is displayed momentarily. This happens when calling the
Publisher.applyVideoFilter()
method with a new blurStrength
value. We have fixed this issue.
Turning background blur off and on or changing it could cause a memory leak. We have fixed this issue.
The TypeScript type definition was missing for the PublisherProperties.enableStereo
We have fixed this issue.
When publishers were reused in a different session, their properties were not being updated. We have fixed this issue.
In some cases, screen sharing was muted when audio was toggled. We have fixed this issue.
In relayed sessions, maximum bitrate was not being limited. We have fixed this issue.
Subscribing to streams in Safari 15+ can fail in relayed sessions. We have fixed this issue.
In some cases, the publisher’s connection was broken after cycling video when a device was unavailable. We have fixed this issue.
In some cases, users may momentarily see a black square when video is playing. We have fixed this issue.
In some cases, screen sharing was muted when audio was toggled. We have fixed this issue.
Using Safari on iOS 15.2, the subscriber’s view could be black after being interrupted by Compact UI phone calls. We have fixed this issue.
In some cases, an incorrect error code ('OT_STREAM_LIMIT_EXCEEDED') was returned when failing to subscribe. We have fixed this issue.
The Publisher maxResolution constraint for screen sharing was ignored in Safari. We have fixed this issue.
OT.setAudioOutputDevice() was missing from the TypeScript definition. We have fixed this issue.
OT.getAudioOutputDevice() was missing from the TypeScript definition. We have fixed this issue.
In some cases, the publisher’s connection was occasionally being destroyed after a short reconnection. We have fixed this issue.
In some cases, the publisher’s connection was occasionally being destroyed after a short reconnection. We have fixed this issue.
In some cases, the publisher’s connection was occasionally being destroyed after a short reconnection. We have fixed this issue.
In some cases, 'custom' video sources with static video would flicker. We have fixed this issue.
In Safari on iOS 15, video may appear rotated if the application is backgrounded. We have fixed this issue.
In relayed sessions, the audioBitrate
option for OT.initPublisher()
was ignored. We have fixed this issue.
On rare occassions, some publishers were unknowingly disconnected from a session. We have fixed this issue.
Toggling video on/off in WebView on Android does not work. We have fixed this issue.
Use Unified Plan SDP on Chromium-based browsers where supported. New versions of Chromium-based browsers support a standards-based WebRTC SDP format (called “Unified Plan”). This OpenTok.js update enforces use of the Unified Plan on these browsers and prevents them from logging a warning that Plan B is being removed. For legacy browsers, OpenTok.js continues to use Plan B.
In Safari on iOS 14.5.1+, the subscriber's view may be black after being interrupted by Compact UI phone calls. We have fixed this issue.
OpenTok.js 2.20.0 was not working with Electron. We have fixed this issue.
In some cases, 'custom' video sources with static video would flicker. We have fixed this issue.
In Safari on iOS 15, video may appear rotated, if the application is backgrounded. We have fixed this issue.
In relayed sessions, the audioBitrate
option for OT.initPublisher() was ignored.
We have fixed this issue.
Use Unified Plan SDP on Chromium-based browsers where supported. New versions of Chromium-based browsers support a standards-based WebRTC SDP format (called “Unified Plan”). This OpenTok.js update enforces use of the Unified Plan on these browsers and prevents them from logging a warning that Plan B is being removed. For legacy browsers, OpenTok.js continues to use Plan B.
In Safari on iOS 14.5.1+, the subscriber's view may be black after being interrupted by Compact UI phone calls. We have fixed this issue.
In Electron 12+, you could not publish a screen-sharing stream using a preload script to access the desktop capturer. We have fixed this issue.
In some cases, an error was logged when calling session.disconnect(). We have fixed this issue.
Publisher.cycleVideo() and Publisher.setVideoSource() were not working in Android Firefox. We have fixed this issue.
In Safari on iOS 14, the publisher's view may be black after being interrupted by Compact UI phone calls. We have fixed this issue.
Some RTT stats were reported in the wrong units. We have fixed this issue.
In some cases, calling Subscriber.setPreferredResolution() did not take effect. We have fixed this issue.
In Safari on iOS 13+, publishers may not regain access to their microphone after being interrupted by Compact UI phone calls. We have fixed this issue.
When sharing a browser tab in a screen-sharing stream in Chrome and Edge, users were unable to share the tab's audio. Chrome 74+ and Edge 79+ let the user share a browser tab's audio (by selecting the "Share audio" option when selecting the tab to share). This was not working. We have fixed this issue.
Under certain circumstances, Android Chrome would throw an error when calling setVideoSource(). We have fixed this issue.
The TURN sever name was not correctly being logged in the QoS stats. We have fixed this issue.
Use Unified Plan SDP on Chromium-based browsers where supported. New versions of Chromium-based browsers support a standards-based WebRTC SDP format (called “Unified Plan”). This OpenTok.js update enforces use of the Unified Plan on these browsers and prevents them from logging a warning that Plan B is being removed. For legacy browsers, OpenTok.js continues to use Plan B.
In Safari on iOS 14.5.1+, the subscriber's view may be black after being interrupted by Compact UI phone calls. We have fixed this issue.
In Electron 12+, you could not publish a screen-sharing stream using a preload script to access the desktop capturer. We have fixed this issue.
In some cases, an error was logged when calling session.disconnect(). We have fixed this issue.
Some RTT stats were reported in the wrong units. We have fixed this issue.
In some cases, calling Subscriber.setPreferredResolution() did not take effect. We have fixed this issue.
In Safari on iOS 13+, publishers may not regain access to their microphone after being interrupted by Compact UI phone calls. We have fixed this issue.
When sharing a browser tab in a screen-sharing stream in Chrome and Edge, users were unable to share the tab's audio. Chrome 74+ and Edge 79+ let the user share a browser tab's audio (by selecting the "Share audio" option when selecting the tab to share). This was not working. We have fixed this issue.
In certain circumstances, subscribers were experiencing reduced audio quality. We have fixed this issue.
Subscribers were sometimes receiving black frames when subscribing to video on iOS 14. We have fixed this issue.
Publishers were losing video after cycling a muted camera device. We have fixed this issue.
Certain video QoS stats were being improperly calculated in sessions that use scalable video. We have fixed this issue.
On Windows machines, attempting to cycle to an already in-use device could result in a publisher not seeing video. We have fixed this issue.
On iOS 14, publishers were losing video when the video element became hidden. We have fixed this issue.
On iOS, publishers were losing audio after being interrupted by a full-screen call. We have fixed this issue.
On iOS under certain circumstances, the camera resource was not being released when destroying a publisher. We have fixed this issue.
Subscribers were improperly reporting RTT stats. We have fixed this issue.
The UI displayed by calling OT.upgradeSystemRequirements() included improperly formatted text. We have fixed this issue.
RTT stats were not being properly logged for sessions that use scalable video. This would cause incorrect statistics to be reported in Inspector. We have fixed this issue.
Subscribers were losing audio when a stream's publisher mutes video. We have fixed this issue.
Safari was failing to recieve video from Chrome-based publishers under specific circumstances. We have fixed this issue.
Safari iOS users were failing to recieve audio from audio-only streams. We have fixed this issue.
In Chrome 84+, the Publisher.getStats() method was not reporting the complete statistics for Scalable Video streams. We have fixed this issue.
Automatic reconnections may have failed in relayed sessions in some scenarios. We have fixed this issue.
Subscriber Video Dimensions weren't being logged correctly. This would cause incorrect dimensions to be reported in Inspector. We have fixed this issue.
In relayed sessions, subscribers to streams published by Firefox 80 failed to receive audio and video. We have fixed this issue.
TypeScript definition corrections. This version fixes some OpenTok.js TypeScript definitions.
In iOS Safari 13, sometimes a subscriber could not play audio from an audio-only stream. We have fixed this issue.
The Publisher.getStats() method sometimes didn't include packetsLost. We have fixed this issue.
CSS layout issue with archive status indicator. We have fixed this issue.
In some cases, subscribers were not recovering properly after temporarily having network issues. We have fixed this issue.
In some cases, Chrome subscribers could not hear audio from Firefox publishers in relayed sessions. We have fixed this issue.
Disabling audioLevelUpdated events may not decrease CPU usage as expected. We have fixed this issue.
In some browsers, warnings were being logged in the console. We have fixed this issue.
In some cases, ElectronJS screen-sharing streams weren't being optimized. We have fixed this issue.
OT.unblockAudio() was missing from the TypeScript definition. We have fixed this issue.
In some cases, Chrome and Safari would cause routed sessions to crash when reconnecting. We have fixed this issue.
In ElectronJS 7+, you could not publish a screen-sharing stream. We have fixed this issue.
In iOS Safari, the Publisher.cycleVideo() method returned "No video devices available". We have fixed this issue.
In Safari 13.1, OT.getDevices() did not return video sources. We have fixed this issue.
In Safari, sometimes a subscriber could not hear audio from an audio-only stream. We have fixed this issue.
The Publisher.cycleVideo() method sometimes returned an empty object. We have fixed this issue.
Screen sharing was not working in Opera. We have fixed this issue.
The Publisher.cycleVideo() method did not iterate through all camera sources in order. We have fixed this issue.
The following WebRTC properties are now omitted for logging when the IP Proxy feature is used: audioLocalAddress, audioRemoteAddress, videoLocalAddress, and videoRemoteAddress.
The code property for the 'Unable to Subscribe to a stream in a reasonable amount of time' Error object was missing. We have fixed this issue.
The SDK would throw an error if a specific property from WebRTC getStats was null. We have fixed this issue.
Publishing screen-sharing streams failed in Chrome when the videoSource was set to 'browser', 'application', or 'window'. We have fixed this issue.
End-users on Safari were hearing an echo. We have fixed this issue.
The SDK was not logging all of the round-trip time for audio and video quality statistics. We have fixed this issue.
The hardware camera access indicator (green light) was still on when calling Publisher.publishVideo(false). We have fixed this issue in all browsers except Internet Explorer.
The SDK was not respecting the frameRate property when the videoSource property was set to 'screen'. We have fixed this issue.
The Promise returned by the Publisher.cycleVideo() method was not rejected when the Publisher's videoSource was set to 'screen' or 'custom'. We have fixed this issue.
Calling Subscriber.setPreferredFrameRate() sent messages to the OpenTok cloud even when the preferred frame rate had not changed. We have fixed this issue.
The SDK was setting Electron as external dependency which was breaking RequireJS. We have fixed this issue.
Audio was garbled when participants on iOS Safari were subsribing to more than 1 stream. We have fixed this issue.
Participants on iOS Safari were unable to hear audio when video on the corresponding publisher was disabled. We have fixed this issue.
When subscribing to a screen-sharing stream in a second tab in Chrome, the subscriber view was black. We have fixed this issue.
Internet Explorer 11 may crash when initializing the OpenTok plugin for Internet Explorer. We have fixed this issue.
Mute icon displayed for subscribers in Safari when it should not. We have fixed this issue.
The audioLevelUpdated event incorrectly reports audio levels of 0 in some browsers. We have fixed this issue.
The non-minified version of OpenTok.js is minified. We have fixed this issue.
When serving over HTTP Chrome 74 is detected as an incompatible browser. We have fixed this issue.
Subscriber.subscribeToVideo(false) causes all subscribers to stop subscribing to video in the OpenTok Plugin for Internet Explorer. We have fixed this issue.
Publisher.setAudioSource() can cause the Publisher view to be removed in Firefox. We have fixed this issue.
Publishing a screen-sharing screen in the OpenTok Plugin for Internet Explorer fails if there is no camera on the system. We have fixed this issue.
Publisher.cycleVideo() doesn't work in an Android webview. We have fixed this issue.
The audioLevel event does not work in Safari if you haven't published and granted access to a microphone. We have fixed this issue.
Cannot subscribe to screen-sharing screen when publishVideo is initially set to false (for the stream's publisher). We have fixed this issue.
The Publisher streamDestroyed event is sometimes not dispatched.
This could occur if you call Publisher.destroy()
just after
calling Session.unpublish()
. We have fixed this issue.
TypeScript definition corrections. This version fixes some OpenTok.js TypeScript definitions.
New autoplay policy in Firefox 66. Firefox 66 introduces a new autoplay policy that is similar to those in Chrome and Safari. This patch brings the same autoplay behavior to Firefox that we have in Safari and Chrome. The result is that if you subscribe to a stream and you are not publishing, Firefox requires some user interaction for the subscriber audio to start playing. This patch adds a muted icon that appears over the Subscriber video. When the user clicks this icon, the subscriber audio starts the playback.
Subscriber video sometimes freezes in Internet Explorer after about 1 minute. We have fixed this issue.
The PeerConnection does not reconnect when switching between networks. We have fixed this issue.
The “streamDestroyed” Event is not dispatched when you call destroy on a Publisher. We have fixed this issue.
Calling cycleVideo repeatedly on Chrome on Android results in a broken Publisher. We have fixed this issue.
Audio output level meter turns into a square instead of a bubble sometimes. We have fixed this issue.
It takes a long time to publish an audio-only Publisher (videoSource=false). We have fixed this issue.
Passing classNames to widgetView is deprecated warnings. We have removed these incorrect warnings.
When sharing a screen or a tab in Chrome, the Publisher intermittently flickers to show the silhouette image and then back to the screen again. We have fixed this issue. We also filed a bug with Chrome about this issue.
Screen sharing not working in Chrome 72. We have fixed this issue.
"WebSocket is already in CLOSING or CLOSED state" received in an infinite loop upon reconnecting. We have fixed this issue.
CPU usage increases when publishing audio-only streams. This would occur when
you use audioLevelUpdated
events. We have fixed this issue.
Use Plan B SDP Semantics in Chrome 72. With the release of Chrome 72, the default SDP Semantics changed from Plan B to Unified plan. This change requests Plan B, which makes the behavior the same as Chrome 71 and below.
Calling publisher.cycleVideo() in Chrome 71+ results in a black Publisher. We have fixed this issue.
Subscribing to a screen-sharing stream in Chrome 71+ sometimes results in the audio blocked UI showing up. We have fixed this issue.
New autoplay policy in Chrome 71. Chrome 71 introduces a new autoplay policy that is similar to the one in Safari. This patch brings the same autoplay behavior that we have in Safari to Chrome. The result is that if you subscribe to a stream and you are not publishing, Chrome requires some user interaction for the subscriber audio to start playing. This patch adds a muted icon that appears over the Subscriber video. When the user clicks this icon, the subscriber audio starts the playback.
accessDialogClosed is not working. We have fixed this issue.
Cannot read property 'sampleQos' of undefined error when using Chrome mobile. We have fixed this issue.
Warnings and errors not being logged to the console by default. We have fixed this issue.
Subscriber not being cleaned up on 'streamDestroyed' Event. We have fixed this issue.
OPENTOK banner in the console. We have made the OPENTOK banner only display
in the console when logLevel
is set to OT.DEBUG
.
TypeScript definition corrections. This version fixes some OpenTok.js TypeScript definitions.
The OpenTok plugin for Internet Explorer was loading over HTTP, not HTTPS. We have fixed this issue.
Failure to publish after opening a tab a second time in Safari. We have fixed this issue.
The publisher audio level indicator does not work after you call Publisher.cycleVideo() in Safari on iOS. We have fixed this issue.
Issue with camera access permissions in the OpenTok plugin. We have fixed this issue.
publisher.cycleVideo() does not work if the current camera was disconnected. We have fixed this issue.
Publisher.cycleVideo() does not release the previous camera (the camera light stays on). We have fixed this issue.
Publisher.cycleVideo() does not trigger accessDialogOpened or accessDialogClosed Events. We have fixed this issue.
Publisher.cycleVideo() does not respect the frameRate or resolution settings. We have fixed this issue.
Publisher.cycleVideo() does not pick a new device the first time it is called. We have fixed this issue.
Internet Explorer crashes when communicating with TURN server. We have fixed this issue.
The OpenTok plugin for Internet Explorer crashes due to core audio corruption. We have fixed this issue.
Safari on iOS cannot not publish if the user previously subscribed to a stream but did not allow audio before the Subscriber was destroyed. We have fixed this issue.
When calling subscriber.subscribeToVideo(false) the “bad network icon” appears. We have fixed this issue.
cycleVideo() does not work in Chrome on Android devices that do not support H.264 (eg. Huawei or HTC devices) with a Safari API key. We have fixed this issue.
Audio stops working when you cycleVideo on an Android device in v2.14.3. We have fixed this issue.
frameRate property on the Publisher is not working in Safari Tech Preview. We have fixed this issue.
A subscriber created with subscribeToAudio:false cannot turn audio back on in Chrome 66. We have fixed this issue.
session.off() without any arguments triggers a TypeError exception. We have fixed this issue.
Chrome 66+ fails to subscribe to Safari in a non-Safari Project (audio-only). We have fixed this issue.
Edge fails to subscribe to Safari in a non-Safari Project (audio-only). We have fixed this issue.
audioLevelUpdated event not called when registered immediately after subscriber created. We have fixed this issue.
Appending a video element to the DOM on the videoElementCreated event when using insertDefaultUI:false does not work. We have fixed this issue.
Deprecated streams and connections arrays on the sessionConnected event were prematurely removed. We have fixed this issue.
facingMode is required instead of optional in the TypeScript definition. We have fixed this issue.
"Cannot read property 'streamChannelUpdate' of null" error when calling publishAudio() or publishVideo() on a publisher that is not connected to a session. We have fixed this issue.
videoElement does not have a srcObject property when the videoElementCreated event is dispatched. We have fixed this issue.
publisher.cycleVideo() not working on Chrome on Android devices. We have fixed this issue.
subscribeToVideo() and subscribeToAudio() missing from the TypeScript definition. We have fixed this issue.
Errors using Chrome 64 and lower. We have fixed this issue.
Increase in errors when publishing and subscribing in Edge. We have fixed this issue.
Error when reusing a Publisher object to publish to a new session. We have fixed this issue.
OpenTok.js not working with the opentok-angular library. We fixed this by restoring undocumented APIs that were used by this library.
The archiveStatusDisplayMode option for OT.initPublisher() is not working. We have fixed this issue.
Unable to get audio stats on muted subscriber in the
OpenTok Plugin for Internet Explorer. Calling Subscriber.getStats()
in
Internet Explorer when the subscriber is muted results in bytesReceived
being
incorrectly set to 0. This issue prevents the
opentok-network-test-js
Node module from working in Internet Explorer. We have fixed this issue.
Error when trying to subscribe to more than six streams. Clients are sometimes unable to subscribe to a large number of streams (six or more) at a time. This would result in an error with the message set to "Error: Publish Error: OT.Publisher PeerConnection Error: Failed to construct 'AudioContext'". We have fixed this issue.
Memory leaks can cause a long-running app to crash. We have fixed this issue.
The mouse pointer blinks when publishing a screen-sharing stream in the OpenTok Plugin for Internet Explorer. We have fixed this issue.
Internet Explorer crashes when no audio or video input device is avaliable. We have fixed this issue.
Unable to publish stereo audio. The enableStereo
option did not work with stereo microphones in relayed sessions. We have fixed this issue.
The audioLevelUpdated event is not working in Safari. In a
Safari client, the audioLevel
property of an audioLevelUpdated
event
was always set to 0. This issue is fixed in Safari.
OpenTok.js unable to work in apps that use RequireJS. This bug was introduced in OpenTok.js 2.13.1. We have fixed this issue.
Getting error "Cannot read property 'id' of undefined" when setting connectionEventsSuppressed to true. This bug was introduced with v2.13.1. We have fixed this issue.
Calling Session.forceDisconnect() was triggering sessionReconnecting events. This bug was introduced with v2.13.0. We have fixed this issue.
Applications could crash when the OT.initSesison() connectionEventsSuppressed option is set to true. We have fixed this issue.
Screensharing does not work in Electron. We have fixed this issue.
Unable to load OpenTok.js on a page with a content security
policy that does not allow unsafe eval. Version 2.13.0 included a dependency that used
eval()
. We have removed this dependency and fixed this issue.
Chrome screen-sharing video flickering. This sometimes happened in Safari OpenTok projects. We have fixed this issue.
videoWidth and videoHeight values incorrect for screen-sharing
streams. Sometimes when you subscribed to a screensharing stream, the initial values for
videoWidth
and videoHeight
were incorrect. We have fixed this
issue.
videoWidth and videoHeight values incorrect in Internet
Explorer. When you subscribed to a stream in the OpenTok Plugin for Internet Explorer,
the initial values for videoWidth
and videoHeight
were incorrect.
We have fixed this issue.
Unable to turn audio on after muting it in Safari on iOS.
After setting subscribeToAudio
to false
, setting it to
true
did not work. We have fixed this issue.
The OpenTok plugin for Internet Explorer does not work on networks that have proxies with NTLM authentication. We have fixed this issue.
In the OpenTok plugin for Internet Explorer, when navigate away from a page while the camera/microphone permission dialog is displayed, you must restart the browser to get it back. We have fixed this issue.
Publishing and subscribing issues in Edge. We have fixed publishing and subscribing issues in Edge.
Publishing would occassionally result in an SDP remote answer STATE_INPROGRESS error. We have fixed this issue.
Bug fixes for Safari. Safari support is now included in this version (and moved out of beta). OpenTok.js now supports Safari 11 on macOS and Safari on iOS 11. For information on video interoperability and other issues, see the Safari browser support page.
Error when loading OpenTok.js after the page loads. We have fixed this issue.
No OT_PERMISSION_DENIED error when the user selects no camera or microphone in the OpenTok plugin for Internet Explorer. We have fixed this issue.
Screen-sharing Publisher is not destroyed when the app that is the source of the stream is closed. This was an issue in the OpenTok plugin for Internet Explorer. We have fixed this issue.
Subscriber.setAudioVolume(0) and mute button not working in the OpenTok plugin for Internet Explorer. We have fixed this issue.
The OpenTok plugin for Internet Explorer captures an audio device before it needs to (prior to a Publisher being initialized). We have fixed this issue.
Unsupported message not displayed in Safari 11. When you try to use this version of OpenTok.js in Safari, the library should display a message saying that it is unsupported. Safari 11 support is added in OpenTok.js 2.12.1+. We have fixed this issue.
Publishing an audio-only stream fails in Chrome on Android. We have fixed this issue.
Publishing fails if the video element is outside of the viewport in Chrome on Android. We have fixed this issue.
In a page loaded from the file://
URI scheme, OpenTok.js displays an alert
that says WebRTC is prevented due to browser permissions. This is no longer true.
All browsers supported by OpenTok now allow camera access, microphone access, and WebRTC
communications in pages loaded from the file://
URI scheme.
A subscriber may perminently drop the audio track when audio is muted. We have fixed this issue.
Fixed an incompatibility with older Chrome browsers.
Fixed an incompatibility with older Chrome browsers.
Unable to dismiss the warning displayed in unsupported browsers. We have fixed this issue.
Screen-sharing support in Electron apps. We have fixed an issue that prevented screen sharing from working in Electron.
Audio echoing in the OpenTok Plugin for Internet Explorer. Subscribers using the OpenTok Plugin would cause audio to echo for other participants. We have fixed this issue.
Clicking the Publisher's mute microphone button causes a "callback is not a function" error to be logged in the console. We have fixed this issue.
The Publisher is not destroyed when the user denies access to the camera or microphone. We have fixed this issue.
The Publisher.stream.videoDimensions value is wrong in Firefox. We have fixed this issue.
Cannot publish with a framerate of 1 in Chrome. We have fixed this issue.
Calling Subscriber.subscribeToVideo(true) can cause the Subscriber to re-subscribe. We have fixed this issue.
Clicking a Publisher or Subscriber elements contained in a form element causes the form to submit. We have fixed this issue.
OT.checkScreenSharingCapability() incorrectly indicates screen-sharing is supported in Chrome on Android. We have fixed this issue.
A Subscriber element is not always destroyed if the subscriber fails to initially connect to the stream. We have fixed this issue.
Specifying the resolution or frame rate along with a video source can cause publishing to fail in Chrome. We have fixed this issue.
Setting the video resolution of a published stream was not working in Firefox. We have fixed this issue.
Setting the video resolution of a published stream was not working on a page that also loads adapter.js We have fixed this issue.
Video flickers when its container is resized the OpenTok Plugin for Internet Explorer. We have fixed this issue.
There was a three-second delay when subscribing to a stream in the OpenTok Plugin for Internet Explorer. We have fixed this issue.
The "contain" setting for the fitmode property is not working in the OpenTok Plugin for Internet Explorer. We have fixed this issue.
Publisher objects not dispatching accessDenied events in Firefox 49.0.1. We have fixed this issue.
Screen sharing videos are blurry in the OpenTok Plugin for Internet Explorer. We have fixed this issue.
Publishers and subscribers in Chrome incorrectly displaying a "possible network or firewall issue" message. We have fixed this issue.
The getImgData() method of Subscriber and Publisher objects returns an image with the incorrect resolution in the OpenTok Plugin for Internet Explorer. We have fixed this issue.
Unable to publish in Firefox 42 or lower. We have fixed this issue.
Publishing does not work in Chrome Canary version 57. We have fixed this issue.
Publishing does not work in Chrome Canary version 57. We have fixed this issue.
In Chrome 54, clicking the "Stop Sharing" button for a screen-sharing stream does not result in the stream being destroyed. We have fixed this issue.
Muting a publisher's audio immediately after connecting does not work. We have fixed this issue.
Automatic reconnection of subscribers causes the OpenTok plugin for Internet Explorer to crash. We have fixed this issue.
Publisher video resolution settings not working in Chrome 53. We have fixed this issue.
Publisher video disappears. The Publisher video could disappear when editing text nodes on the page (for example, when using a localization library, such as localize.js). We have fixed this issue.
Audio activity indicator issues. The audio indicator was not being displayed in subscribers to and publishers of audio-only streams. Also, the audio indicator was being displayed for streams that are muted. We have fixed these issues.
The values returned by the Publisher.getImgData() and Subscriber.getImgData() methods were incorrect in the OpenTok Plugin. We have fixed this issue.
Screen-sharing was limited to 1280 by 720 pixels in the OpenTok Plugin. However, OpenTok supports screen-sharing streams up to as 1920 by 1920 pixels in size. We have fixed this issue.
OT.checkSystemRequirements() incorrectly returns 1 for old, unsupported browser versions. We have fixed this issue.
Incorrect "InvalidStateError: Peer connection is closed" error. This error was incorrectly being logged for Subscribers in new beta versions of Firefox. We have fixed this issue.
Publishing does not work in Chrome Canary version 57. We have fixed this issue.
Firefox would crash when sending and receiving streams to a client using the OpenTok plugin for Internet Explorer. Mozilla has fixed this Firefox bug.
Publisher video resolution settings not working in Chrome 53. We have fixed this issue.
Subscriber streams dropped and incorrect error messages indicating firewall issues. We have fixed an issue in which subscriber streams would be dropped, leading to these inaccurate error messages.
64-bit support in Internet Explorer. The OpenTok Plugin for Internet Explorer now supports 64-bit mode.
Issue in publishing streams in Chrome 50. We have fixed this issue.
Publisher accessDenied event not working in Firefox 44. We have fixed this issue.
Error when subscribing to the same stream multiple times. We have fixed this issue.
Subscribing to you own stream (using the testNetwork option in the Session.subscribe() method) is not working in Chrome. We have fixed this issue.
global.jasmine property set. The OpenTok.js library was incorrectly adding this property. We have fixed this issue.
Error logged in console: "More than one module is trying to define on on OTHelpers." We have fixed this issue.
audioLevelUpdated events are not dispatched by the Publisher in Internet Explorer. We have fixed this issue.
OT.initPublisher() fails if the Allow Device Access dialog box is open for another Publisher. This problem occured in Firefox and Internet Explorer. We have fixed this issue.
videoDisabledDisplayMode style working incorrectly. This is an optional property you
pass into the style
property of the Session.subscribe()
options
parameter or using the Subscriber.setStyle()
method. We have
fixed this issue.
Unable to publish or subscribe in Firefox 43+. This is due to a change in the WebRTC API implemented in Firefox. We have fixed this issue.
Unable to initialize two publishers synchronously in Firefox and Internet Explorer. In Firefox and the OpenTok Plugin for Internet Explorer, while the user is being prompted to grant a publisher access to the camera and microphone, you could not initialize another publisher. We have fixed this issue.
Added support for screen sharing in Internet Explorer.
Issues with Firefox–Internet Explorer streaming. This release fixes issues with streams transmitted between clients using the OpenTok Plugin for Internet Explorer and Firefox version 42.
OT.getDevices() returning device with the kind property set to an incorrect value. The property is set to 'audioinput' and 'videoinput' instead of 'audioInput' and 'videoInput'. We have fixed this issue.
Error running in Internet Explorer 11: Unable to get property 'split' of undefined or null reference. We have fixed this issue.
Cannot read property 'videoWidth' of null Error. See this post to the OpenTok forums. We have fixed this issue.
The OpenTok plugin for Internet Explorer supports adding no more than two Subscribers to the page. We have fixed this issue.
Publishing audio-only streams can result in errors: "cannot read property addEventListener of null" and "cannot read property videoWidth of null." We have fixed this issue.
Publisher and Subscriber videos don't resize properly if their aspect ratios change. We have fixed this issue.
Some errors in Session.publish() completion handler not resulting in the OT object dispatching an exception event. We have fixed this issue.
Some errors in publishing do not result in errors in the Session.publish() completion handler. We have fixed this issue.
Extra "no element found" errors logged in the web console in Firefox. We have fixed this issue.
A publisher or subscriber element is not resized when the container element resizes (programmatically or due to CSS changes). We have fixed this issue.
The audio-only background image is not displayed in voice-only publishers and subscribers. We have fixed this issue.
Unable to publish on an HTTP page using the OpenTok Plugin for Internet Explorer. We have fixed this issue.
CSS layout issues in the installer for the OpenTok Plugin for Internet Explorer. We have fixed these issues.
Non-responsive dialog boxes in the OpenTok Plugin for Internet Explorer. The installation and update dialog boxes are now responsive, resizing appropriately based on the browser window's dimensions.
Unsupported methods in the OpenTok Plugin for Internet Explorer. The following
methods now work: Subscriber.setAudioVolume()
and
Subscriber.getAudioVolume()
. Also, the audioLevelUpdated
event is now dispatched by Subscriber and Publisher objects in the OpenTok Plugin for
Internet Explorer.
Cannot reconnect to a session without reloading the page. We have fixed this issue.
Audio level meter displayed when it should not be. The publisher and subscriber audio meter was being used even if the client is using video (not audio-only). We have fixed this issue.
Uncaught error when calling Subscriber.subscribeToAudio(). The uncaught error was "Uncaught TypeError: Cannot read property 'id' of null." We have fixed this issue.
Multiple console warnings for "Style.setAll::Invalid style property passed videoDisabledIndicatorDisplayMode : auto." We have fixed this issue.
The installer and updater for the OpenTok plugin are broken in Internet Explorer 9. We have fixed this issue.
Interoperation issues between the OpenTok plugin for Internet Explorer and both the OpenTok Android SDK and the OpenTok iOS SDK. We have fixed this issue.
The streamCreated event sometimes fires before the connectionCreated event for the client publishing the stream. We have fixed this issue.
Unexpected error when reconnecting and subscribing multiple times in Chrome. The full error message was "Uncaught SyntaxError: Failed to construct 'AudioContext': number of hardware contexts reached maximum." We have fixed this issue.
Unexpected error when subscribing to a stream that has no audio. The full error message was "Uncaught InvalidStateError: Failed to execute 'createMediaStreamSource' on 'AudioContext': MediaStream has no audio track." We have fixed this issue.
Issues with the installation and update dialog boxes for the OpenTok plugin for Internet Explorer. We have improved these dialog boxes to work in smaller browser windows.
Unable to call Publisher.getImgData() and Subscriber.getImgData() in Internet Explorer. We have fixed this issue.
Excessive logging to the console. The OpenTok.js library was logging unnecessary
information to the console, even when the log level was set to OT.ERROR
(see
OT.setLogLevel()). We have
fixed this issue.
In Chrome, hiding an element that contains a Publisher or Subscriber (by setting the display CSS property to "none") causes the browser to crash. We have fixed this issue.
Unable to subscribe to audio-only streams in Chrome. We have fixed this issue.
Issues loading the OpenTok.js library using JavaScript script loaders. We have fixed this issue.
Calls to OT.initSession() sometimes fail on pages loaded via HTTP (not HTTPS). We have fixed this issue.
The stream.hasVideo property was not set correctly. In Firefox, if the user
did not allow access to the camera (or if there is no camera), the hasVideo
property of the corresponding Stream object was incorrectly set to true
.
We have fixed this issue.
For information, see the release notes for OpenTok.js 2.0.
See the reference documentation for the OpenTok.js library.
To see sample code and to read more information on using the OpenTok.js library, see the OpenTok Tutorials and Examples page.
For documentation on the OpenTok server-side libraries, see the OpenTok server-side libraries page.
Also check out the OpenTok Help Center.
We'd love to hear from you! If you have any issues or bugs, you can report them to us at our support page.
Thank you for your feedback!
We appreciate it.
If you need an answer to a question or help with an issue, contact our support team.