Welcome to the public release of the OpenTok API Version 1.1.6! If you have any questions, concerns, feedback, please let us know on our forums.
Important information
New features
Fixed issues
Known issues
More information
How to report bugs
Adobe Flash 11.1 requiredThe OpenTok library now requires Adobe Flash 11.1 or higher. This version
of Flash Player supports all features of the OpenTok library, including acoustic echo cancellation and H.264 video.
The OpenTok JavaScript library prompts the user to upgrade the version of Flash Player (if required) when you call
TB.initSession(), TB.initPublisher(), TB.initRecorderManager(), or
TB.initDeviceManager().
Flash crashes with multiple subscribers in Chrome for WindowsThe latest version of the Flash Pepper plugin for Chrome for Windows crashes if you add more than a few Subscribers to a page. We have logged a bug report with the Chromium project.
Acoustic echo cancelation does not work in ChromeClients who publish in Chrome should wear headphones to prevent audio feedback. This bug has been logged at the Chromium project, and there is a related bug logged with Adobe.
This version includes a number of improvements in performance and stability.
The OpenTok JavaScript library prompts the user to upgrade the version of Flash Player (if required) when you call
TB.initSession(), TB.initPublisher(), TB.initRecorderManager(), or
TB.initDeviceManager(). The OpenTok library now requires Adobe Flash 11.1 or higher. You can prevent
this prompt from appearing by checking TB.checkSystemRequirements() before calling one of these methods.
This version includes a number of improvements in performance and stability. Please see the list of features added in previous versions (which follows), as well as the list of fixed issues and known issues.
This version includes a number of improvements in performance and stability.
This version includes a number of improvements in performance and stability.
This version includes a number of improvements in performance and stability.
Smaller SWF files. The Flash Player files used by the OpenTok JavaScript and ActionScript libraries are now smaller (with the same functionality).
Improvements in peer-to-peer streaming with Flash Player. We have made improvements in performance and stability for Flash player peer-to-peer streaming.
Remember option for the Flash Player Settings dialog box. The properties parameter of the
TB.initPublisher() method now includes a rememberDeviceAccess property. This determines
whether to display a "Remember" option in the Flash Player Settings dialog box. The Flash Player Settings dialog box
lets the user grant access to the camera and microphone for a website. When you set this property to true,
the user's selection is remembered in subsequent uses of the OpenTok API. This option is also available
for properties parameter of the Session.publish() and RecorderManager.displayRecorder()
methods. For more information, see the documentation for the TB.initPublisher() method
(ActionScript
docs/JavaScript docs) and the
RecorderManager.displayRecorder() method
(JavaScript docs).
New error when generating a composite video of a multi-stream archive with a corrupt video file. If a video file is corrupt when you use the REST API to generate a multi-stream archive, the API call returns a 500 SERVER ERROR. For details, see the "Response" section of Generating a composite video of a multi-stream archive.
Removal of staging environment. We no longer have separate staging and production environments. All OpenTok applications now use the production environment. Use the following URL for the TokBox JavaScript library:
<script src="http://static.opentok.com"></script>
If your page loads via HTTPS, be sure to load the OpenTok JavaScript library via HTTPS (otherwise the browser will display a warning to the user):
<script src="https://swww.tokbox.com/v1.1/js/TB.min.js" ></script>
For ActionScript app development, there is now one OpenTok.swc file (not separate files for staging and production). Download the SWC from the Downloads page.
Removal of staging environment. We no longer have separate staging and production environments. All OpenTok applications now use the production environment. Use the following URL for the TokBox JavaScript library:
<script src="http://static.opentok.com"></script>
If your page loads via HTTPS, be sure to load the OpenTok JavaScript library via HTTPS (otherwise the browser will display a warning to the user):
<script src="https://swww.tokbox.com/v1.1/js/TB.min.js" ></script>
For ActionScript app development, there is now one OpenTok.swc file (not separate files for staging and production). Download the SWC from the Downloads page.
This release includes a number of improvements of stability and performance.
Use of tokens on staging. We want to emphasize the importance of generating and issuing tokens to clients. For this reason, we no longer support the "devtoken" and "moderator_token" test token strings for use with the OpenTok staging servers. You can generate tokens at the OpenTok dashboard. (And you can still use the OpenTok server-side libraries to generate tokens.)
New REST API to generate composite videos of multi-stream archives. You can now create an MP4 video file that includes the videos of a multi-stream archive containing up to four streams. See Generating a composite video of a multi-stream archive.
Deprecated connectionData in the Session.connect() method. Define connection data when
you call the generate_token() method of the
OpenTok
server-side libraries. You can also generate a token and define connection data on the
OpenTok dashboard.
New tutorial Pre-publish set-up. This tutorial shows how to select and test cameras and microphones prior to publishing a stream to a session. There is a version for ActionScript developers and one for JavaScript developers.
New stand-alone Publisher objects. You can create a Publisher object using the TB.initPublisher() method.
This Publisher object does not send a stream to the session until you call Session.publish() (passing
in the Publisher object to the method). Before calling Session.publish(), you can use this Publisher
to set and test the microphone and camera. For more information, see the documentation for the TB.initPublisher() method
(ActionScript
docs/JavaScript docs).
New events when the Adobe Settings dialog box opens and closes. The Publisher object now dispatches
accessDialogOpened and accessDialogClosed events. For more information, see
the documentation for the Publisher events
(ActionScript
docs/JavaScript docs).
New Publisher.session property. The session property of a Publisher object indicates which
Session (if any) the Publisher is publishing to. For more information, see the documentation for Publisher.session
(ActionScript
docs/JavaScript docs).
New microphone and camera detection and settings for a Publisher. The new Publisher.detectDevices()
method lets you check the cameras and microphones available to a Publisher. The devicesDetected event
reports the available devices. You can then call the new setMicrophone() and setCamera() methods
of the Publisher to set the microphone and camera it uses. For more information, see
the following documentation:
Publisher.detectDevices()
(ActionScript
docs/JavaScript docs).
Publisher.setCamera()
(ActionScript
docs/JavaScript docs).
Publisher.setMicrophone()
(ActionScript
docs/JavaScript docs).
New microphone activity and gain events. The new Publisher.detectMicActivity() method
lets you check representative microphone levels for microphone attached to a Publisher. After calling
detectMicActivity(true) on a Publisher object, the Publisher object dispatches microphoneActivityLevel
events. This event includes a value property, which is a number representing the microphone level.
Also, the Publisher object dispatches a microphoneGainChanged event when the microphone gain
changes (because of the user adjusting the microphone gain or as a result of calling the setMicrophoneGain()
method of the Publisher object). For more information, see the documentation for Publisher.detectMicActivity()
(ActionScript
docs/JavaScript docs)
and for Publisher events
(ActionScript
docs/JavaScript docs).
API to report an issue to TokBox. The TB.reportIssue() method lets you submit an issue report to TokBox. See
the documentation for TB.reportIssue() (ActionScript
library/JavaScript docs).
New debugging tutorial. This tutorial describes effective means to debug an app that OpenTok. There is a version of the tutorial for JavaScript developers and for ActionScript developers.
Other changes. See the list of features added in previous versions (which follows), as well as the list of fixed issues and known issues.
Notification when the Recorder cannot acquire a camera. The Recorder now alerts the user if it cannot acquire a camera.
Method to upgrade Flash Player. The JavaScript library now includes a TB.upgradeSystemRequirements()
method. This provides an interface for the user to update to the latest version of Flash Player. See
TB.upgradeSystemRequirements().
Event when video pauses in the Player. The JavaScript library now includes a playbackPaused
event, dispatched by the Player when video playback is paused. See
Player events.
New streamNotRecording and sessionNotRecording events. In the JavaScript library, the Session object dispatches these events
if you call Session.stopRecording() or Session.stopRecording() for an archive that is not recording. See
Session events.
New invalidDeviceName event. If you specify an invalid name for the microphoneName or cameraName
property of the properties parameter of Session.publish(), the Publisher object dispatches an
invalidDeviceName event (a DeviceEvent object). See the documentation for Session.publish()
(ActionScript
docs/JavaScript docs)
and Publisher events (ActionScript
library/JavaScript docs).
Improvements for performance and stability. This release includes improvements for performance and stability.
Maximum length of archives and storage limits on staging. When using the OpenTok staging environment, archives are limited to 5 minutes in length. Archives in the staging environment are deleted after 3 days. Use the OpenTok staging environment for testing and development purposes. Use the production environment when your application is ready.
Microphone level API changes. The microphoneLevelChanged event, is now available in
the OpenTok ActionScript library. (It was added in the OpenTok JavaScript library in v0.91.41.) For details,
see VolumeEvent.
Note that of the stream must set the reportMicLevels property of the properties
parameter when calling the Session.publish() method.
Announcing the OpenTok iOS SDK. Use the OpenTok iOS SDK to add OpenTok sessions to iOS apps. These apps can use OpenTok sessions to connect to clients on other iOS devices as well as clients of web-based apps that use the OpenTok JavaScript or ActionScript library. For more information, see OpenTok iOS video SDK.
Improvements for performance and stability. This release includes improvements for performance and stability.
Other features: See the list of features added in previous versions (which follows), as well as the list of fixed issues and known issues.
Announcing the OpenTok iOS SDK. Use the OpenTok iOS SDK to add OpenTok sessions to iOS apps. These apps can use OpenTok sessions to connect to clients on other iOS devices as well as clients of web-based apps that use the OpenTok JavaScript or ActionScript library. For more information, see OpenTok iOS video SDK.
Detection of h.264 capabilities. The OpenTok iOS SDK supports h.264 video only. To interoperate with iOS apps,
web-based apps that publish video to OpenTok sessions should check the client for h.264 support. In the OpenTok JavaScript
library, the Capabilities class includes a new property, publishH264. For more information, see
Capabilities.publishH264.
ActionScript developers should check that the client is running Flash Player 11 or higher.
New events for the Recorder. The Recorder object, defined in the OpenTok JavaScript library, now dispatches
the following events: resize, accessAllowed, and accessDenied. These events are
related to the client granting or denying access to the camera and microphone. The Recorder resizes, if needed, to display
the dialog box asking the user to allow access to the camera and microphone. For more information, see the documentation on
Recorder events.
Other features: See the list of features added in previous versions (which follows), as well as the list of fixed issues and known issues.
Removal of the multiplexing and server-side server-side echo suppression features and the
the Group API. We no longer support multiplexing. This means that OpenTok JavaScript library
and the OpenTok ActionScript library no longer include the Group and GroupProperties classes,
nor do they include the SessionConnectEvent.groups property. Also, in the OpenTok
server-side libraries, the properties method of the create_session() method
no longer includes multiplexer or echoSuppression options. (Note that
server-side echo suppression was replaced with the acoustic echo cancellation feature, which was
added in OpenTok v0.91.18.)
Addition of stream names to the archive manifest file. The archive manifest file now
includes a name attribute for each video stream. This corresponds to the stream's name,
which (optionally) you can assign when publishing a stream. For more information, see the documentation on
Downloading
archive videos. Note that for archives older than v0.91.48, the name attribute is always set
to an empty string.
Other features: See the list of features added in previous versions (which follows), as well as the list of fixed issues and known issues.
Control of video duration indication in the Player: You can choose to not display the duration of the video
in the preview screen of the Player. Set the showPreviewTime property of the properties
parameter of the RecorderManager.displayPlayer() method to false. For more information, see
RecorderManager.displayPlayer().
This release includes fixes for quality and stability.
This release includes fixes for quality and stability.
Note about Adobe AIR and mobile devices: Due to breaking changes in the latest version of Adobe AIR, we are no longer able to support AIR for mobile implementations of the OpenTok API. We apologize for any inconvenience this may cause, and are hard at work on other libraries for mobile platforms. To learn more, please email us at bizdev@tokbox.com.
This release includes fixes for quality and stability.
Removal of the archive recording notification. The archiving notification message displayed in the Publisher was causing user interface problems in some applications. We have removed this notification. We are will be adding back recording notification (in a different form) in a future release.
Other features. See the list of features added in previous versions (which follows), as well as the list of fixed issues and known issues.
Microphone level API. A client detect the activity level of streams they have subscribed to. When you add an event
listener for the new microphoneLevelChanged event, every 500 milliseconds the Session object dispatches the event
for each stream the client has subscribed to. The event object is defined by the VolumeEvent class, which includes a
streamId property and a volume property. For more information, see
VolumeEvent.
Changes to the active speaker API. The active speaker API, which was added in OpenTok v0.91.39, has been replaced by the microphone level API.
Downloading archive videos You can now use the OpenTok server-side SDK to download videos you record using the OpenTok archiving API. For more information, see Downloading archive videos.
Control of the Player user interface. You can now control the display of the speaker control, the display of the pause and play buttons, display of the playback time indicator, and the control bar that displays the buttons and time indicator. For more information, see RecorderManager.displayPlayer().
Enabling the active speaker API. (Important: This feature was removed in OpenTok v0.91.41 and replaced with the
microphoneLevelChanged event.) You can now decide whether or not detectActivity events are dispatched for a published
stream. The default behavior is to not dispatch detectActivity events for a stream. Call the
detectActiveSpeakerChanges() method and pass in a value of true. For more information, see
Publisher.detectActiveSpeakerChanges().
Deleting archives You can now delete archives. For details, see Deleting archives.
Session and Archive State API. This API lets you set state data on a session. Clients connected to the session can add event listeners for changes to the state data. For example, a moderator could use this API to relay information on streams that participants should subscribe to. An archive recording the session (or streams in the session) records state data (and state data changes) in addition to the streams.
For more information, see the following sections of the OpenTok JavaScript library reference:
Note: The Session and Archive State API is in beta testing. It is available in the OpenTok JavaScript library. We welcome your comments.
Detecting active speakers. (Important: This feature was removed in OpenTok v0.91.41 and replaced with the
microphoneLevelChanged event.) You can detect active speakers in a session. A stream is determined to be an active
participant based on audio activity. The Session object dispatches an activeSpeakerChanged event when streams
become active or inactive. The activeSpeakerChanged event is defined by the ActiveSpeakerChangedEvent class.
The event object includes a streams array, which is an array of Stream objects for which active speaker status
has changed. Each Stream object has an isActiveSpeaker property (Boolean) which indicates whether the Stream is
currently an active speaker. This feature is implemented in the OpenTok JavaScript library. For details, see the documentation
for Session events,
Stream.isActiveSpeaker, and
ActiveSpeakerChangedEvent.
New default height for the Recorder The default height of the Recorder is now is 271 pixels with the control bar displayed or 240 pixels without the control bar displayed. (OpenTok v0.91.39 also adds a feature that lets you hide the Recorder control bar. See below.) The previous default height of the Recorder was 288 pixels.
New UI configurability in the Recorder. You can now hide the control bar (user interface controls) and timers
in a Recorder. Set the showControlBar property, the showRecordCounter property, or the
showPlayCounter property to false in the properties parameter
of the RecorderManager.displayRecorder() method.
For details, see RecorderManager.displayRecorder().
Maximum length of videos in the Recorder. Videos created with the Recorder are now limited to 90 minutes in length.
This release includes fixes for quality and stability. See the list of fixed issues and known issues.
New user interface in the stand-alone archive Recorder and Player The redesign includes new button design, a pause button and a video seek scrubber.
API for pausing playback in the stand-alone archive Player See Player.pause().
Using the archiving API on staging In the OpenTok staging environment, archives older than one week are deleted on a weekly basis.
In the OpenTok staging environment, archives older than one week are deleted on a weekly basis.
Video quality setting and stream quality API additions This API addition is now available in the OpenTok ActionScript library. (It was added to the OpenTok JavaScript library in v0.91.35.)
For more information, see the OpenTok ActionScript library documentation for Session.publish() and Stream.quality.
Video quality setting and stream quality API additions Using the OpenTok JavaScript or ActionScript API, you can now
set the desired video resolution (height and width) of a video stream. Set the encodedHeight and encodedWidth
property of the properties parameter of the publish() method of the Session object. If the client's
bandwidth does not support the desired resolution, OpenTok will encode using the nearest supported resolution. When the actual
encoded resolution is determined, the Session object dispatches a streamPropertyChanged event. The
changedProperty property of the StreamPropertyChangedEvent object is set to "quality".
The encodedHeight and encodedWidth properties of the newValue property of the event
is set to the width of resolution of the encoded video stream.
After the streamPropertyChanged event is dispatched, the quality property
of the Stream object also provides more details about the stream's quality. The quality property
of the Stream object includes the following properties:
AECEnabled (Boolean) Whether the client supports acoustic echo cancellation.camLevel (Number) A number indicating the camera level. Values from 0 through 100
indicate the camera level at the time of the reading; a value of -1 indicates an inactive camera.encodedHeight (Number) The height of the resolution of the encoded stream, in pixels.encodedWidth (Number) The width of the resolution of the encoded stream, in pixels.latency (Number) The latency of the connection to the OpenTok server, in milliseconds.micLevel (Number) A number indicating the microphone level. Values from 0 through 100
indicate the microphone level at the time of the reading; a value of -1 indicates an inactive microphone.networkQuality (String) The network quality: "good", "acceptable",
or "poor". The rating indicates the potential connection quality, based on the combination of the
upload bandwidth and latency. A moderator may use this indicator to determine whether use a stream in an app
(or whether to call the forceDisconnect() method of the Session object).readyH264 (Boolean) Whether the client supports H.264 encoding.upBandwidth (Number) The upstream (publishing) bandwidth, in kbps.Downloading archive videos You can now download videos you record using the OpenTok archiving API. You can download videos by calling a RESTful web API, passing in a token (created with your API key and assigned a role of moderator), and an archive ID. Downloaded videos are FLV files. For more information, see Downloading archive videos.
Background image API The OpenTok JavaScript library now includes an API for setting the background image of a
Publisher or Subscriber object. This image is displayed if the Publisher or Subscriber object is not displaying video. (For example,
the image is displayed if you call publishVideo(false) on a Publisher object or subscribeToVideo(false) on a
Subscriber object.) You can load the image from the web by specifying the URI of a JPEG, GIF, or PNG file. You can also use the
getImgData() method of a Publisher or Subscriber object and use the resulting data as the background image. For more
information, see the following methods in the OpenTok JavaScript library reference:
backgroundImageURI property of the style property of the properties parameter)backgroundImageURI property of the style property of the properties parameter)API for starting and stoping playback in the recorder The Player class in the OpenTok JavaScript library now includes a play() method and a stop() method.
Bug fixes This version includes a number of internal bug fixes and stability improvements.
H.264 video in peer-to-peer sessions H.264 video is now supported in peer-to-peer sessions (for clients that
have Flash Player 11 installed). For more information on peer-to-peer sessions, see the create_session() method
in the OpenTok server-side library documentation
(for JavaScript developers,
for ActionScript developers).
Additions to the stand-alone archive API These include the following:
startRecording()
and stopRecording() methods of the Recorder object. See the documentation for
Recorder.startRecording() and
Recorder.stopRecording().style property of the properties parameter of the RecorderManager.displayRecorder() method.
See the documentation for
RecorderManager.displayRecorder().title property of the Archive object produced by the Recorder. You can set an initialArchiveTitle
property of the properties parameter of the RecorderManager.displayRecorder() method; and you can
set the setTitle() method of the Recorder object. See the documentation for
Recorder.setTitle().autoPlay
property of the properties parameter of the RecorderManager.displayPlayer() method. See the documentation for
RecorderManager.displayPlayer().Important fix for Flash Player 11 In Flash Player 11, there are changes to the Flash Player Settings dialog box that affect how the client allows or denies access to the camera and microphone. Due to this change, OpenTok v0.91.28 and earlier do not support publishing in clients running Flash Player 11 (unless the client has previously allowed OpenTok access to cameras and microphones persistently, by clicking the Remember option in the Flash Player Settings dialog box).
With version 0.91.29, we have fixed the issue. However, the Flash Player Settings dialog box no longer includes an option to "Remember" when a user allows access to the camera and microphone. For further updates, or to keep track of the issue please reference our blog
H.264 video OpenTok now supports H.264 video, which provides improved quality. Clients that have Flash Player 11 installed automatically publish videos using the H.264 codec. (Others will continue to publish using the Sorenson Spark codec.) The release candidate for Flash Player 11 is available at Adobe labs.
All clients can subscribe to both types of video (Flash Player 11 is not required). A session can have a combination of both types of videos.
Requirements for ActionScript development The new H.264 capabilities require that you compile using the Flash Player 11 SWC. This file is available at Adobe labs.
Peer-to-peer sessions You can now use peer-to-peer streaming in sessions. When peer-to-peer streaming is enabled in a session, clients transmit streams directly to each other, instead of being relayed using an intermediate OpenTok server. If peer-to-peer streaming fails (either when streams are initially published or during the course of a session), the session falls back to using the OpenTok servers for relaying streams. (Peer-to-peer streaming uses UDP, which may be blocked by a firewall.)
Only two clients can connect to a peer-to-peer session. If another client attempts to connect, the client's TB object dispatches an exception event.
You enable peer-to-peer streaming when you create a session using the OpenTok server-side SDK. Set the
p2p.preference property of the properties parameter of the create_session()
method. (Set the property to "enabled".) For details, see the OpenTok server-side library documentation
(for JavaScript developers,
for ActionScript developers).
New session IDs In OpenTok v0.91.28, the length of the session ID string has increased. A session ID string can be up to 255 characters long.
Tutorial for using stand-alone recordings: This new tutorial shows how to use the OpenTok JavaScript library to record and play back stand-alone archives. A stand-alone archive is a recording of an audio-video stream that you make outside of an OpenTok session.
Stand-alone archives are one feature of the OpenTok archiving beta API. For more information, see the Archiving overview.
Saved approval of mic and camera access: When the user is presented with the Adobe Flash Player Settings dialog box to allow opentok.com access to the camera and microphone, there is now a Remember option. In the OpenTok JavaScript API, if the user clicks Allow and Remember, then the next time the client displays a Publisher for this site, the Adobe Flash Player Settings dialog box is not displayed; however another dialog box has the user confirm website access to the camera and microphone for the specific domain of the webpage. If the user then selects Allow and Remember again, no further camera/mic access dialog boxes are presented for this site. Camera and mic access is granted persistently (for the page's domain).
Archiving API: The OpenTok archiving API now lets you record stand-alone archives. A stand-alone archive is a recording of an audio-video stream that is made outside of the context of an OpenTok session. You can play-back a stand-alone recording in a stand-alone player or you can play it back to a session. If you play back a stand-alone recording in an OpenTok session, all clients connected to the session can view the archive, and it plays back in sync on all subscribing clients. For details, see Recording and playing back stand-alone archives. Also see the Recorder, RecorderManager, and Player classes in the OpenTok JavaScript API reference.
Archiving beta documentation: The documentation for the archiving beta feature is now included with the rest of the OpenTok JavaScript API documentation at the the OpenTok site. (Previously, the documentation was provided as a separate download.) For information on getting started, see the Archiving overview and the OpenTok JavaScript API reference.
Support for Mac OS 10.7 (Lion) In Mac OS 10.7, users need to configure Flash Player in order to use OpenTok. The Publisher and DevicePanel objects now include a notification that instructs users of Mac OS 10.7 on how to configure the system to support camera and microphone use in Flash Player.
OpenTok archiving API beta. The OpenTok archiving API lets you archive video streams in sessions. You can then play back archived streams. This beta test feature is now available to all developers.
To get started, please download the OpenTok_Archiving_API.zip file. This ZIP file contains the following:
API_KEY and SESSION_ID values so that the page can connect to
an OpenTok session. See the archiving documentation for a description of how to use the tutorial
as well as a description of how the code works.
You can test the archiving API using the OpenTok staging environment. OpenTok will discard archives from the staging environment periodically. In the production environment, the archiving API is a premium feature. To sign up for this feature, write bizdev [at] tokbox [dot] com.
To get announcements, communicate with other beta testers, and send us feedback, subscribe to the OpenTok archiving API beta forum.
Tutorial for adding metadata to connections. There is a new "Passing User Information" tutorial (for JavaScript developers, for ActionScript developers). This sample code shows how to pass metadata when connecting to a session (a feature that was added in OpenTok v0.91.19).
API for adding metadata to connections. You can now attach metadata to a connection.
For example, you can add information about the user connecting. In the
production environment, you secure this data by passing it into the generate_token()
method of the OpenTok server-side library.
When testing the app in the staging environment using a test token string (such as
'devtoken'), you can assign the metadata when you call the Session.connect() method
(JavaScript docs,
ActionScript docs).
Specify a connectionData property of the properties parameter.
The metadata is available via the data property of a Connection object. Clients can get
a reference to Connection objects in the sessionCreated, connectionCreated,
and streamCreated events. The sessionCreated and connectionCreated events
each have a connections property, which is an array of Connection objects. The sessionCreated
and streamCreated events each have a streams property, which is an array of
Stream objects. (Each Stream object has a connection property, which is a Connection object.)
JavaScript support for HTTPS. The OpenTok JavaScript library supports HTTPS. If your page loads via HTTPS, be sure to load the OpenTok JavaScript library using HTTPS as well. Otherwise the browser will display a warning to the user. Use the following URLs to load the libary via HTTPS:
<script src="http://static.opentok.com/v0.91/js/TB.min.js" ></script><script src="https://swww.tokbox.com/v.91/js/TB.min.js" ></script>Note, however, that OpenTok video streams are not sent on a secure socket.
Mic gain and speaker volume control API OpenTok v.0.91.19 includes enhancements for programatically controlling the microphone gain of a Publisher and the audio volume of a Subscriber. The following methods implement this API:
Session.publish() method
(JavaScript docs,
ActionScript docs)
has a new microphoneGain property of the
properties parameter.getMicrophoneGain() and setMicrophoneGain() methods.Session.subscribe() method
(JavaScript docs,
ActionScript docs)
has a new audioVolume property of the
properties parameter.getAudioVolume() and setAudioVolume() methods.User interface customization API OpenTok v.0.91.19 includes enhancements for customizing elements of the OpenTok video user interface. The following methods implement this API:
Session.publish() method
(JavaScript docs,
ActionScript docs)
has a new style property of the properties parameter.setStyle() method.Session.subscribe() method
(JavaScript docs,
ActionScript docs)
has a new style property of the properties parameter.setStyle() method.API for detecting acoustic echo cancellation. This feature lets you determine
whether a Publisher is using acoustic echo cancellation (a feature that was added in
OpenTok v0.91.18). The Publisher class
(JavaScript docs,
ActionScript docs)
adds a getEchoCancellationMode() method and an echoCancellation event.
When the OpenTok library determines the echo cancellation mode used be the Publisher, the Publisher
dispatches an echoCancellationModeChanged event. For an example of using this API,
see the audio tutorial
(JavaScript version,
ActionScript version).
Acoustic Echo Cancellation OpenTok v0.91.18 takes advantage of the greatly improved acoustic echo cancellation available in Flash Player 10.3 and Adobe AIR 2.7.
For best results, all web-based users who simultaneously publish and subscribe to streams should have Flash Player 10.3 installed. If a client has an older version of Flash Player (10.0 through 10.2), echo cancellation will not take place on that connection; if the client publishes an audio stream, it may echo back a subscribed audio stream.
Acoustic echo cancellation is not supported for USB microphones.
To take advantage of this feature, developers who use the OpenTok ActionScript library need to use compile a SWF version 12 file:
-swf-version=12 argument when you
run MXMLC.-swf-version=12 under Additional compiler arguments.Important: You need to add the Flash 10.3 version of the playerglobal.swc file to the Flex SDK. (Adobe left this out of the Flex 4.5.1 SDK.) You can obtain it from http://download.macromedia.com/pub/labs/flashplatformruntimes/flashplayer10-3/flashplayer10-3_rc1_playerglobal_042011.swc.
SWF version 12 is supported in Flash Player 10.0 and later and AIR 2.0 and later. In Flash Player 10.3 and AIR 2.7, SWF version 12 supports acoustic echo cancellation.
You can now capture images of OpenTok streams:
data URL scheme of an HTML IMG element.
The Publisher object now dispatches an accessAllowed or accessDenied
event when the user clicks the Allow or Deny button in the Flash Player Settings dialog box
(either granting or denying the app access to the camera and microphone). For more information,
see the Publisher class in the
OpenTok
JavaScript API reference or the
OpenTok
ActionScript API reference.
Check out the new TokBox Community Portal. This new section of the site includes lots of new features for developers, including a Gallery for sharing code, apps and tutorials, a new and improved developer forum, and a list of OpenTok developers for hire.
This release includes a number of bug fixes. See Fixed issues.
Mobile support. This release adds support for mobile adds support for Android and iOS devices. With this release, you can develop OpenTok apps for each of these platforms:
OpenTok audio-video sessions can interconnect users across any of these platforms. New support for mobile adds the following features:
The OpenTok ActionScript and JavaScript library include the following additions to support these features:
properties parameter of the Session.connect() method
now includes a detectConnectionQuality property (which is optional).
If you set this property to 1, you can check the connectionQuality property of the
Session object. This property includes the following properties:
downBandwidth (a Number in kbps), latency (a Number, in milliseconds),
and upBandwidth (a Number in kbps).Session.capabilities property includes a publish property.
This property is defined by the Capabilities class. The publish property indicates
whether the app is running in an environment that supports publishing (and by a user whose role
supports publishing). Publishing videos is not supported in the browser on Android. (Other properties
of the Capabilities class include forceDisconnect, forceUnpublish, and
subscribe.)For more information, see the API reference.
In addition to the new mobile API, changes in the OpenTok UI will support mobile devices. For example, on mobile devices, the settings buttons are displayed when the user taps the screen. (There is no mouse-over event on mobile devices.) Also, in AIR apps running on mobile devices, the settings button is replaced by a switch camera button.
For ActionScript developers, the new version of the opentok.swc file supports development of AIR apps for the desktop, Android, or iOS. (It also supports development of Flash apps for the browser.)
Support for AIR apps on Android requires AIR 2.6 to be installed. Support for browser-based apps on Android requires Flash Player 10.1 to be installed. For a list of supported Android devices, see the Adobe list of Flash platform certified devices.
Support for AIR apps on iOS requires iOS 4. To compile the iOS app, you need the AIR 2.6 SDK.
There are a couple of restrictions (due to limitations of Adobe AIR and Adobe Flash Player):
Changes to the OpenTok ActionScript API. The TB.initSession() now only takes
one parameter: sessionId. The Camera, Capabilities, and Microphone classes have been renamed
TBCamera, TBCapabilities, and TBMicrophone (to fix naming conflicts with the classes in the flash.* packages).
There are now two versions of the opentok.swc file: one for use in developing staging (test) versions of your
app, and one for use in developing production versions of you app (see the
Downloads page). Also, when developing Adobe AIR applications,
you no longer need to download the OpenTok SWF bundle and include the SWF files in your application directory. You can simply
develop using the opentok.swc file.
Included with this release is a new tutorial demonstrating how to use audio-only and video-only streams. See the JavaScript or ActionScript version of the tutorial.
This version of OpenTok fixes some known issues (see Fixed issues).
You can specify the z-index layer of the device panel
As of this release, the OpenTok device panel is added to the top z-index of the HTML DOM. You
can specify a specific z-index level when calling the DeviceManager.displayPanel()
method. This feature only applies to the OpenTok JavaScript library. Users of the OpenTok
ActionScript library can use ActionScript to position the DevicePanel object returned by the
DeviceManager.getDevicePanel() method.
The reason propery of the SessionDisconnectEvent class can now be set to
"clientDisconnected". This specifies that the user disconnected from the session by calling
the disconnect() method of the Session object.
Users can now report an issue to Tokbox. On Mac OS, Command-click the OpenTok logo (in the top-lefthand corner of any video). On Windows, Control-click the OpenTok logo.
FireFox 4 support. OpenTok supports the new version of FireFox.
The OpenTok AS3 library. This library is now ready, no longer in beta. It provides an ActionScript 3.0 API for developers to use OpenTok functionality in Flash apps. For details, see the Downloads.
Audio-only and video-only features. These are now available in the OpenTok ActionScript library as well as the OpenTok JavaScript library. For more information, see the list of New features added in previous versions.
Timestamps for connections and streams. The Connection and Stream class each have
a creationTime property, which is the timestamp for the creation of the connection
or stream.
The OpenTok AS3 library is now available in Beta. It provides an AS3 API for developers to use OpenTok functionality in Flash apps. For details, see the Downloads.
You can now publish audio-only and video-only streams, and you can subscribe to audio or video only. For more information, see the following sections of the OpenTok Javascript library reference:
Publisher.publishAudio()Publisher.publishVideo()Session.publish()Session.subscribe()Stream.hasAudioStream.hasVideoStreamPropertyChangedEventSubscriber.subscribeToAudio()Subscriber.subscribeToVideo()TB.setShowMicSettings()TB.setShowCamSettings()When creating a user token, you can now assign a user to a role.
Each role defines a set of permissions granted to a user. The generate_token()
method of the server-side API includes a new role parameter. Valid parameter values
are defined in the RoleConstants class in the server-side SDKs:
SUBSCRIBER A subscriber can only subscribe to streams.PUBLISHER A publisher can publish streams, subscribe to streams, and signal.
(This is the default value if you do not specify a value for the role parameter.)MODERATOR In addition to the priviledges granted to a publisher, a moderator
can call the forceUnpublish() and forceDisconnect() method of the
Session object.If the user's role does not permit calling a method of the OpenTok API, the
TB object dispatches an exception event.
Important: In order to use moderation features, a user must be assigned
a token that has been generated to use the moderator role. Moderation features are
the forceUnpublish() and forceDisconnect() methods of the Session object.
(Note as of OpenTok v0.91.59, the following information is obsolete; the "devtoken" and
"moderator_token" test token strings are no longer supported.) When testing your app, you can use the
new "moderator_token" token string. This puts the user in the role of a moderator. In version 0.91.5,
the "devtoken" test token string puts the user in the role of a publisher.
Calling the create_session() method in the OpenTok server-side libraries
results in an OpenTokException in the event of an error. You can check the error message
for details. This error is now included in each of the OpenTok server-side libraries.
There is a new TB.log() method, which lets you send as string to a debug console (if there
is one). For more information, see the TB class in the
OpenTok API reference.
There is a new forceUnpublish() method of the Session object.
An app can force a publisher for a specified stream to stop publishing the stream. Calling this method
results in the Session object (on clients subscribed to the stream) to dispatch a streamDestroyed
event (defined by the StreamEvent class). The the reason property of the event object
is set to "forceUnpublished". The default behavior for this event is to remove any publishers
or subscribers for to the stream from the HTML DOM. You can prevent the default behavior by calling the
preventDefault() method of the StreamEvent object. For more information, see the
Session and StreamEvent classes in the
OpenTok API reference.
There is a new deviceInactive event. A Publisher object dispatches a deviceInactive
event when the camera or microphone used has become inactive. If a camera or microphone attached to a Publisher
object is initially inactive, the Publisher immediately dispatches a deviceInactive event.
Also, when a camera or microphone is disconnected (or becomes inactive for any other reason),
the Publisher object dispatches the deviceInactive event. The deviceInactive
event is defined by the DeviceEvent class. The camera or microphone property
of the DeviceEvent object define the camera or microphone that is inactive.
There is a new error code, 1004, for an exception event resulting from an authentication error. See the documentation for the ExceptionEvent class.
The OpenTok JavaScript library reference documentation includes new details on errors that are thrown.
The OpenTok server-side library now includes a version number.
There are more descriptive error messages in v0.91.1. You should also review the features added in version v0.91.0 and read Things to look for when upgrading to v0.91.
A few new features add default behaviors for user interface actions. You may need to modify code in your app if it currently responds to these events. For more information, see Things to look for when upgrading to v0.91.
When the user clicks the settings button in the publisher control (and the Publisher
object dispatches a settingsButtonClick event), a device panel now displays
by default. The default device panel appears in the middle of the page.
If you use the DeviceManager.displayPanel() method to
load a custom device panel, you should call the preventDefault() method
of the settingsButtonClick event.
The device panel now includes an optional close button. Clicking this button closes
the device panel. When creating a device panel using the DeviceManager.displayPanel()
method, you can set the showCloseButton property of the properties
parameter to false if you do not want to display the close button. When the
user clicks the close button, the DevicePanel dispatches a closeButtonClick
event. Call the preventDefault() method of this event to prevent the device
panel from closing.
By default, when the Session object dispatches a streamDestroyed event,
subscribers subscribed to the stream are unsubscribed. You can call the
preventDefault() method of the event to cancel this default behavior.
By default, when the Session object dispatches a sessionDisconnected event,
subscribers subscribed to the stream are unsubscribed and publishers are destroyed.
You can call the preventDefault() method of the event to cancel
this default behavior.
A page now exists to validate tokens generated by the API: http://staging.tokbox.com/hl/token/validate_page.
If you are encountering errors in using an OpenTok session token,
you can use this page to validate the token. If the token is
invalid, the output of the token validator page includes an
invalid tag, which contains a description of why the
token may be invalid.
Unable to reuse a session ID in the OpenTok library and the OpenTok on WebRTC library. For example, once you used a session ID in OpenTok on WebRTC, it is only available for use in OpenTok on WebRTC. We have fixed this issue.
Uncaught JavaScript error when you call RecoderManager.displayRecorder(). We have fixed this issue.
The microphone level meter is not visible in the Publisher. When the user positions the cursor over the microphone gain control, the Publisher now displays a level meter.
The Publisher video frame rate drops when you listen for the microphoneActivityLevel event. We have fixed this issue.
Setting the style for a Publisher object is not working. We have fixed this issue.
The Recorder object does not dispatch an accessAllowed event if the Remember option was selected in The Flash Player Security dialog box. We have fixed this issue.
The video in the Recorder widget image is stretched when you set mirror to true. We have fixed this issue.
Opening the Device Panel while a Publisher is on the stage crashes Flash Player when using the OpenTok ActionScript library. We have fixed this issue.
Subscribing to and publishing videos with different dimensions crashes Flash Player when using the OpenTok ActionScript library. We have fixed this issue.
Wrong error message when a third client attempts to connect to a peer-to-peer session. We have fixed this issue.
No changeFailed event dispatched when trying to call stateManager.set() on an archive stateManager. We have fixed this issue.
Unable to call Session.publish() a second time using a Publisher object created with TB.initPublisher(). We have fixed this issue.
Subscriber.stream property set to null in the OpenTok ActionScript library. We have fixed this issue.
The TB object does not dispatch an exception event when a third client attempts to connect to a peer-to-peer session. We have fixed this issue.
Client unable to click the Allow button in the Flash Player Settings dialog box in Chrome. This issue was fixed in Chrome 22.
Cannot re-record after playing back a previous recording in the Recorder. We have fixed this issue.
Publisher does not dispatch echoCancellationModeChanged event if not connected to a session. We have fixed this issue.
Setting cameraName and microphoneName don't apply when using TB.initPublisher(). We have fixed this issue.
calling the publishAudio() method before you add the Publisher object to the display list has no effect. We have fixed this issue.
Video skews when passing in encodedHeight and encodedWidth properties to TB.initPublisher().
We have fixed this issue. However, the Publisher may adjust the camera resolution based on bandwidth considerations; and
when this adjustment is made, the image may still skew slightly. Flash Player requires that the width and height of the
camera be set to integers, and if the new values do not match the requested aspect ratio exactly, some skewing can result.
For best results, use values for encodedWidth and encodedHeight that match a standard aspect ratio,
such as 4:3.
Flash Player crashes in Chrome 21 for Windows. We have fixed this issue.
Publisher does not dispatch echoCancellationModeChanged event if not connected to a session. We have fixed this issue.
Setting cameraName and microphoneName don't apply when using TB.initPublisher(). We have fixed this issue.
calling the publishAudio() method before you add the Publisher object to the display list has no effect. We have fixed this issue.
In the OpenTok JavaScript library, Stream property values were not changed after a corresponding streamPropertyChanged event was dispatched. We have fixed this issue.
Names not appearing in subscribers in the ActionScript library. We have fixed this issue.
Player.getImgData(), Recorder.getImgData(), and Subscriber.getImgData() incorrectly returning null. We have fixed this issue.
Position of volume control fluctuates when you mouse over a Publisher. We have fixed this issue.
"No Video" overlay sometimes displayed on top of active video. We have fixed this issue.
If you repeatedly create, record, and close an Archive, the recording indicator icon does not appear in the Publisher. We have fixed this issue.
Videos published from iOS devices stutter when viewed in a web client with Flash Player 11.2. We have fixed this issue. Use the latest version of the OpenTok iOS SDK.
Cannot connect to a session after disconnecting from another session using the OpenTok ActionScript library. We have fixed this issue.
The Recorder UI was sometimes stuck in an infinite loading state after saving an archive. We have fixed this issue. If you continue to see this issue, after updating to the latest version of the OpenTok JavaScript library, please contact bizdev@tokbox.com.
The Stream.quality property was not set in the ActionScript 3 library. We have fixed this issue.
In the OpenTok ActionScript library, Stream property values were not changed after a corresponding streamPropertyChanged event was dispatched. We have fixed this issue.
Microphone control UI repositioning in the Publisher UI when you publish with a stream name. We have fixed this issue.
Setting the cameraName or microphoneName property of the properties parameter of Session.publish() has no effect. We have fixed this issue.
Insecure content warning blocks the Video Messages app in Internet Explorer. We have fixed this issue.
Archive StateManager not dispatching "changed:property" events. The StateManager object for an archive did not dispatch "changed:property" events (events for a specific property change). We have fixed this issue.
ArchiveEvent.archives[0] set to undefined. For the sessionRecordingStopped and
sessionRecordingStopped events, the archives[0] property of the event object was
set to undefined. We have fixed this issue.
Issues with the Publsher.getImgData() and Subscriber.getImgData() methods. In some cases, the Publsher.getImgData() and Subscriber.getImgData() methods of the OpenTok JavaScript library returned cropped image data. Also, these methods returned empty strings in peer-to-peer sessions. We have fixed these issues.
Error when two cameras are connected to a computer. For example, you would see an error if you use an external webcam and then open another browser with my built-in camera. We have fixed this issue.
Calling setStyle('showSaveButton', false) for a Recorder object does not work. We have fixed this issue.
Settings and volume buttons were covered by the control bar in the Recorder and Player. We have fixed this issue.
Video scrubber control functioning incorrectly in the Player. We have fixed this issue.
"Loading" indicator does not disappear when a stream is loadedWe have fixed this issue.
Orientation of streams in AIR for iOS. The orientation (rotation) of streams published from AIR on iOS was incorrect, depending on the device orientation. We have fixed this issue. Note, however, that AIR for iOS does not support H.264 video delivered on RTMP, which includes video streams published in browsers that have Flash Player 11 installed.
Orientation of streams in the ActionScript library. The orientation (rotation) of streams is incorrect when using the ActionScript library.
The archives property of an ArchiveEvent was sometimes not an array. For the playbackStarted
and playbackStopped event this property was incorrectly set as an Archive object, rather than an array of archives.
Calling Player.getImgData() returns an empty string. We have fixed this issue.
Calling Session.unpublish() in the OpenTok ActionScript library can result in a null object error. We have fixed this issue.
When closing an archive while recording a session, the recording indicator in the publisher remains on. We have fixed this issue.
The Publisher sometimes does not dispatch accessAllowed and accessDenied events when it should.
Under certain instances, after calling the publish method of the Session object, the Publisher object did not
dispatch these events, even when the user allows or denies access to the camera and microphone. We have fixed this issue.
No Activity indicator shown in publisher when there is activity The Publisher video display includes a No Activity indicator to show when no activity is detected from the camera. Occasionally this would appear when it should not have. We have fixed this issue.
Wrong z-index level for report issue form If you set a z-index level for other elements on a page, the report issue form could be obscured by them. We have fixed this issue.
Fixed video orientation in iOS When using auto-orientation on iOS, the orientation of a published video did not adjust when the orientation of the device changed. We have fixed this issue.
Publisher and DevicePanel not working in Mac OS 10.7 (Lion) There was an issue in Adobe Flash Player running in Mac OS 10.7. (See this entry in the Adobe support forum.) The Publisher and DevicePanel objects now include a notification that instructs users of Mac OS 10.7 on how to configure the system to support camera and microphone use in Flash Player.
Setting connection metadata in the OpenTok Ruby library There was an error in the generate_token()
method of the OpenTok Ruby library. Connection metadata was not set correctly. We have fixed this issue.
Auto-produced stream in the targeting mobile platforms (switching) tutorial. This tutorial was not showing the auto-produced stream. We have fixed this issue.
Connection.data not set in streamCreated and signalReceived events. The data
property of Connection objects passed via the streamCreated and signalReceived events was
always undefined, even if the connection data was set. We have fixed this issue.
White space in screen captures. If you resize the Publisher, calling the getImgData()
method (in the OpenTok JavaScript library) returns an image string that contains superfluous white space around
the image. We have fixed this issue.
Incorrect log level. The default log level was incorrectly set to DEBUG. We have reset
the default log level to NONE. (See the documentation for TB.setLogLevel().)
Flash Player crashes upon publishing a video when using certain camera drivers. Some camera drivers are not compatible with Flash Player. OpenTok now avoids using an incompatible camera driver after it causes Flash Player to crash.
Compilier error when using the opentok.swc file. When using the OpenTok ActionScript library to create a SWF file, an AIR file, or a IPA file (for iOS), the compiler generated an error (in not recognizing the MicrophoneEnhancedOptions class). We have removed references to that class in the opentok.swc file.
Connecting to sessions on Android devices. When trying to connect to a session in an AIR app running on Android, you could sometimes see an error ("TypeError: Error #1010: A term is undefined and has no properties"). We have fixed this issue.
Corrections to the documentation related to connection quality. The documentation
(for both the JavaScript library and the ActionScript library) correct information about obtaining connection
quality statistics. The Connection class (SessionConnection in ActionScript) includes a quality property.
This property is set when you set the detectConnectionQuality property of the property parameter
of the Session.connect() method to 1. (The previous verions of the documentation included a property named
connectionQuality. This was incorrect.) See the
OpenTok
JavaScript library reference and the
OpenTok
ActionScript library reference.
Corrections to the ActionScript 3 API and documentation. The documentation for the OpenTok ActionScript library includes the following changes and corrections:
properties parameter of the Session.connect() method is
a SessionConnectionProperties object.connection property of a Session object is now of type SessionConnection. The
SessionConnection class extends the Connection class.See the OpenTok ActionScript library reference.
Clarification on the status property for cameras listed in the deviceDetected event . The documentation now clarifies how to properly check when the user clicks the Accept button to grant access to a camera, see the documentation for DeviceManager events.
A session cannot be disconnected after a failed connection. In FireFox, after a session disconnected because of network connection, if you reconnected, you could not successfully disconnect (intentionally). We have fixed this issue.
Publisher mic level set too high. In some situations, the microphone level was initially set too high, resulting in audio static. We have fixed this.
Port 1935 needed for streaming - The end user no longer needs to have port 1935 open to stream using OpenTok. If 1935 is not available it will fall back to port 80. We highly recommend keeping port 1935 open, when possible.
The Session.forceUnpublish() method does not work in the OpenTok ActionScript library. This has been fixed.
Videos display "No Activity" even when the mic and camera are active. This has been fixed.
The publisher video does not resize to accomodate the Adobe Flash Player Settings dialog box. This had been occuring when you set the dimensions of the container element using CSS. This has been fixed.
The device panel is displayed in back of other DOM elements.
By default, we now display the device panel on top of other DOM elements. You
can specify a z-index level when calling the DeviceManager.displayPanel()
method (in the OpenTok JavaScript library).
In the OpenTok ActionScript library, the Session.subscribe() method should take a Stream object as the first parameter. It now does.
Selecting a new camera or microphone in the device picker overrides
the publishVideo and publishAudio settings of the Publisher object. This is fixed.
You can now call the publishAudio() or publishVideo() methods
of the Publisher object, and the publisher uses the specified camera or microphone.
A session did not disconnect until all browser windows are closed. This issue is fixed.
Repositioning of the device panel. The position of device panel would change if you changed the settings multiple times. This issue has been fixed.
A camera incorrectly shown in the device panel as having no activity. This issue is fixed.
Mic volume meter initially non-responsive. The microphone volume meter in the publisher display was non-responsive when you first displayed it. This issue has been fixed.
Session disconnect is not immediate in a Flash-based app running in Internet Explorer. When using the OpenTok ActionScript library in Internet Explorer, an app would not disconnect from a session until the user closed the browser window. This issue has been fixed.
Occassional error when connecting to a session using the ActionScript 3.0 library We have fixed this.
DeviceManager.detectDevices() throws an error. We have fixed this.
Session events ceased after calling the unpublish() method. We have fixed this problem, which appeared in early versions of the ActionScript library.
The scroll wheel on the Mac does not work. We have fixed this.
Video image mirrored in the Device Picker. The image now reflects the orientation in the displayed publisher video.
The Flash Player security panel for camera access no longer displays a "Remember Me" option (which would apply to multiple sites using the OpenTok API).
The OpenTok PHP server-side library
uses file_get_contents if cURL does not exist.
Session not dispatching streamDestroyed events in ActionScript apps. We have fixed this.
Incorrect error when calling Session.connect() with an invalid token. The error stated that you are already connected to the session. We have fixed this.
The reason property for the SessionDisconnectEvent is incorrectly set to "networkDisconnected" when calling Session.disconnect(). We have fixed this.
Improved removal of destroyed streams. We have improved removal of streams that are destroyed as a result of a browser crash.
Echo suppression in the audio tutorial does not work. We have fixed this.
Under certain circumstances, applications would display a black screen. We have fixed this.
Faster camera acquisition. This speeds up the availability of videos in both published and subscribed streams.
The publisher object now resizes, as necessary, to accommodate the Flash Player Settings dialog box. This was sometimes not occurring in Internet Explorer.
The sessionConnected event was not always dispatched in Firefox on Windows. On Windows, the transparent wmode setting in browsers other than Internet Explorer was causing occasional issues.
The getSessionInfo() method now validates your API key when doing authentication. This change should not impact you as long as you are passing the correct API key. And of course, in case you do mistakenly pass us the incorrect key, we will display an appropriate error message.
In the Subscriber widget, the volume slider used to have odd behavior when the widget was in muted state. This behavior has now been fixed.
The PHP SDK no longer uses the deprecated split function. It now uses the almost equivalent explode function.
The default wmode for the publisher and subscriber widgets is now "transparent".
The launch form now accepts non-ASCII characters.
The enable/disableAudio/Microphone functions now work.
Calling session.disconnect() doesn't fully work in Firefox. This was because the hasOwnProperty("cleanupView") condition failed in Firefox. This behavior has now been fixed.
The error() function in our JavaScript API (using a 3rd-party tool) breaks. This stopped JavaScript execution. This has now been fixed.
Active camera no longer properly selected on Chrome with Google camera drivers present. This behavior has now been fixed.
Publisher doesn't obey Adobe's Default Camera (e.g., we should always pick the default). This behavior has now been fixed.
Two cameras grabbed (only one used) when publishing to two different sessions. This behavior has now been fixed.
Camera acquisition is slow at times - We have made some improvements to the Camera acquisition time.
Clicking "Deny" in the Adobe Settings Dialog does not resize the Publisher back to its original size. This has now been fixed.
Port 1935 needed for streaming - The end user no longer needs to have port 1935 open to stream using OpenTok. If 1935 is not available it will fall back to port 80.
The session generator form (http://staging.tokbox.com/hl/session/create) now works in Firefox and Internet Explorer.
Black screen in Subscriber while waiting for Publisher to allow camera. - We now wait until the camera is allowed before we start publishing.
Server-side libraries - We made some small changes to the server-side libraries.
To avoid confusion all references to partner_id and partner_key have been
changed to api_key and api_secret. We also renamed location_hint
and ip_passthru in the session create API to just be location. Updating to
these libraries is not required.
We have also made several quality improvements under the covers as part of this release.
The following are known issues for this version of the OpenTok API:
Client unable to click the Allow button in the Flash Player Settings dialog box. We have noticed that some clients are having trouble clicking the Allow button (to allow camera and microphone access) in the Flash Player Settings dialog box. We have noticed this in some versions Firefox, but the problem occurs intermittently. We have also seen this issue in the new versions of the Apple MacBook Pro (with Retina display). This issue was fixed in Chrome 22.
Flash Player crashes in Chrome 22 for Windows when publishing to peer-to-peer sessions. This is due to the Chrome 22 use of the experimental "Pepper" plugin version of Flash Player. The following workaround fixes the issue:
chrome://plugins in the address bar.Initial video encoded as H.263 for Publishers using LifeCam or Logitech webcams in Flash Player 11.2 for Windows. For these cameras, Publishers' streams start out using H.263 video, and then switch to H.264 video after 2 or 3 seconds. Note that H.263 video is not supported in Subscribers using the OpenTok iOS SDK. An iOS client will not be able to subscribe to the stream if it is using H.263 encoding (such as when the stream is first created).
Stream names not appearing in Subscribers in the ActionScript library. Using the OpenTok ActionScript library, the stream name (if one is set) is not displayed in the Subscriber video.
The Session.capabilities property is set to null when using the OpenTok ActionScript library.
Spurious trace output when debugging with the OpenTok ActionScript library. The trace output when debugging may include extraneous content that begins with "typecheck com.tokbox.util::Helper/getEnhancedMicrophone()".
Mic volume meter initially non-responsive. The microphone volume meter in the publisher display is non-responsive when you first display it.
Camera conflict with Gmail. The camera in an OpenTok app may disconnect or stop streaming when you open or close Gmail in another browser tab.
A Publisher or Subscriber is destroyed when I set the CSS style of the container DIV
to display:none This is a known issue in Firefox and Chrome (see
Mozilla bug 90268).
An application can hang when using the device panel if the user detaches a camera or microphone. This is an issue with Flash Player, and a bug has been filed with Adobe.
The status property of a Camera object in the list of cameras for the deviceStatusEvent object is sometimes incorrectly reported as "unknown."
High white balance in the Motorola Xoom camera. When publishing from an AIR app for Android on the Motorola Xoom, the camera white balance can become unacceptably high. This appears to be an issue with Adobe AIR and it has been reported to Adobe.
Flash Player crashes upon publishing a video when using certain camera drivers. We are researching this issue.
In Chrome, you cannot add a file or folder in the Flash Player Global Security Settings manager. This prevents you from testing an OpenTok application loaded from the file system. You can, however, test a page loaded from a web server. This is a known issue in the chromium.org bugbase.
Support in AIR for iOS. Adobe AIR for iOS does not support H.264 video delivered on RTMP, which includes video streams published in browsers that have Flash Player 11 installed.
For more information, see the following:
Also check out the OpenTok Developer FAQs page.
We'd love to hear from you! If you have any issues or bugs, you can report them to us at support@tokbox.com.