OpenTok Release Notes
Welcome to the public release of the OpenTokTM API Version 0.91.55! If you have any questions, concerns, feedback, please let us know on our forums.
New features
Fixed issues
Known issues
Things to look for when upgrading to v0.91
Installation instructions
How to report bugs
New Features on May 17, 2012 v0.91.55
Notification when the Recorder cannot acquire a camera. The Recorder now alerts the user if it cannot acquire a camera.
Other changes. See the list of features added in previous versions (which follows), as well as the list of fixed issues and known issues.
Features added in previous versions
New Features on May 10, 2012 v0.91.55
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).
New Features on April 26, 2012 v0.91.53
Improvements for performance and stability. This release includes improvements for performance and stability.
New Features on April 12, 2012 v0.91.52
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. For more information, see Testing and Production.
New Features on March 29, 2012 v0.91.51
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.
New Features on March 22, 2012 v0.91.50
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.
New Features on March 16, 2012 v0.91.49
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.
New Features on March 13, 2012 v0.91.48
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.
New Features on March 1, 2012 v0.91.47
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().
New Features on February 16, 2012 v0.91.46
This release includes fixes for quality and stability.
New Features on February 9, 2012 v0.91.45
This release includes fixes for quality and stability.
New Features on February 2, 2012 v0.91.44
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.
New Features on January 19, 2012 v0.91.43
This release includes fixes for quality and stability.
New Features on January 11, 2012 v0.91.42
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.
New Features on January 5, 2012 v0.91.41
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.
New Features on December 22, 2011 v0.91.40
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().
New Features on December 19, 2011 v0.91.39
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:
- Archive.getStateManager()
- ChangeFailedEvent
- Session.getStateManager()
- StateChangedEvent
- StateManager
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.
New Features on December 1, 2011 v0.91.38
This release includes fixes for quality and stability. See the list of fixed issues and known issues.
New Features on November 28, 2011 v0.91.37
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.
New Features on November 17, 2011 v0.91.36
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.
New Features on November 10, 2011 v0.91.35
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 theforceDisconnect()method of the Session object).readyH264(Boolean) Whether the client supports H.264 encoding.upBandwidth(Number) The upstream (publishing) bandwidth, in kbps.- Publisher.setStyle()
- Session.publish() (see the
backgroundImageURIproperty of thestyleproperty of thepropertiesparameter) - Session.subscribe() (see the
backgroundImageURIproperty of thestyleproperty of thepropertiesparameter) - Subscriber.setStyle()
- You can use code to start and stop the recording in a Recorder object. Call the
startRecording()andstopRecording()methods of the Recorder object. See the documentation for Recorder.startRecording() and Recorder.stopRecording(). - The Recorder class now includes options for showing and hiding all user interface buttons. You do this by setting
the
styleproperty of thepropertiesparameter of theRecorderManager.displayRecorder()method. See the documentation for RecorderManager.displayRecorder(). - You can set the
titleproperty of the Archive object produced by the Recorder. You can set aninitialArchiveTitleproperty of thepropertiesparameter of theRecorderManager.displayRecorder()method; and you can set thesetTitle()method of the Recorder object. See the documentation for Recorder.setTitle(). - You can have archives play back when loaded (without the user clicking the Play button). Set the
autoPlayproperty of thepropertiesparameter of theRecorderManager.displayPlayer()method. See the documentation for RecorderManager.displayPlayer(). - OpenTok Archiving API documentation This document includes a conceptual overview of archiving, a complete archiving API reference, and a tutorial on how to use the archiving API.
- archiving.html tutorial file This file includes code
that creates an archive, records to the archive, closes the archive, loads the archive, and
plays back the recorded streams.
Important: The tutorial file does not work as-is. Please download the file and edit theAPI_KEYandSESSION_IDvalues 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. - In staging
<script src="https://staging.tokbox.com/v0.91/js/TB.min.js" ></script> - In production
<script src="https://swww.tokbox.com/v0.91/js/TB.min.js" ></script> - The
Session.publish()method (JavaScript docs, ActionScript docs) has a newmicrophoneGainproperty of thepropertiesparameter. - The Publisher class
(JavaScript docs,
ActionScript docs)
includes new
getMicrophoneGain()andsetMicrophoneGain()methods. - The
Session.subscribe()method (JavaScript docs, ActionScript docs) has a newaudioVolumeproperty of thepropertiesparameter. - The Subscriber class
(JavaScript docs,
ActionScript docs)
includes new
getAudioVolume()andsetAudioVolume()methods. - The
Session.publish()method (JavaScript docs, ActionScript docs) has a newstyleproperty of thepropertiesparameter. - The Publisher class
(JavaScript docs,
ActionScript docs)
includes a new
setStyle()method. - The
Session.subscribe()method (JavaScript docs, ActionScript docs) has a newstyleproperty of thepropertiesparameter. - The Subscriber class
(JavaScript docs,
ActionScript docs)
includes a new
setStyle()method. - If compiling from the command line, add the
-swf-version=12argument when you run MXMLC. - If you are using Flex Builder 4.5, open the Project Properties dialog box, and then select
ActionScript Compiler (or Flex Compiler). In the Flash Player Options setting, select
Use a specific version 10.3.0. Add
-swf-version=12under Additional compiler arguments. - In the OpenTok JavaScript library, the
getImgData() method of the Publisher object and the
getImgData() method of the Subscriber object each return a string that you can use in the
dataURL scheme of an HTML IMG element. - In the OpenTok ActionScript library, the getBitmapData() method of the Publisher class and the getBitmapData() method of the Subscriber class each return a ActionScript flash.display.BitmapData object.
- Web browsers on desktop computers
- The web browser on Android
- Installed AIR apps for Android
- Installed AIR apps for iOS 4 (including iPhone, iPod, and iPad 2)
- Bandwidth and latency statistics. When you connect to a session, you can request information on the bandwidth and latency of the connection. Bandwidth is measured for both upload bandwidth and download bandwidth (and both are reported in kbps). Latency is measured in milliseconds. This information can help you to handle different network conditions. (Developers can subscribe to multiplexed streams and use audio-only mode to use less bandwidth.)
- Capabilities detection. This lets you see whether the runtime environment supports a feature (such as publishing). For example, publishing is not supported in the web-based apps running in the Android browser.
- The
propertiesparameter of theSession.connect()method now includes adetectConnectionQualityproperty (which is optional). If you set this property to 1, you can check theconnectionQualityproperty of the Session object. This property includes the following properties:downBandwidth(a Number in kbps),latency(a Number, in milliseconds), andupBandwidth(a Number in kbps). - The new
Session.capabilitiesproperty includes apublishproperty. This property is defined by the Capabilities class. Thepublishproperty 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 includeforceDisconnect,forceUnpublish, andsubscribe.) - Publishing to OpenTok sessions is not supported in the web browser on Android. However, users can subscribe to OpenTok streams in the browser. Developers can use the OpenTok ActionScript library to build AIR apps for Android (or iOS), and these apps can access the camera.
- AIR apps on Android do not have access to the front-facing camera. (Access to the rear-facing camera is possible.) This issue has been reported to Adobe. (This is not an issue in AIR for iOS. AIR apps for iOS can access both the front- and rear-facing cameras.)
Publisher.publishAudio()Publisher.publishVideo()Session.publish()Session.subscribe()Stream.hasAudioStream.hasVideoStreamPropertyChangedEventSubscriber.subscribeToAudio()Subscriber.subscribeToVideo()TB.setShowMicSettings()TB.setShowCamSettings()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 theroleparameter.)MODERATOR In addition to the priviledges granted to a publisher, a moderator can call theforceUnpublish()andforceDisconnect()method of the Session object.
New Features on November 3, 2011 v0.91.34
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.
New Features on October 27, 2011 v0.91.33
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:
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.
New Features on October 20, 2011 v0.91.32
Bug fixes This version includes a number of internal bug fixes and stability improvements.
New Features on October 13, 2011 v0.91.31
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).
New Features on October 6, 2011 v0.91.30
Additions to the stand-alone archive API These include the following:
New Features on October 4, 2011 v0.91.29
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
New Features on September 29, 2011 v0.91.28
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.
New Features on September 15, 2011 v0.91.27
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.
New Features on September 7, 2011 v0.91.26
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, the OpenTok JavaScript API reference, and Getting started archiving sample.
New Features on August 11, 2011 v0.91.23
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.
New Features on July 27, 2011 v0.91.21
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:
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).
New Features on July 18, 2011 v0.91.20
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:
Note, however, that OpenTok video streams are not sent on a secure socket.
New Features on June 30, 2011 v0.91.19
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:
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:
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).
New Features on June 17, 2011 v0.91.18
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:
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.
New Features on May 18, 2011 v0.91.15
You can now capture images of OpenTok streams:
New Features on May 5, 2011 v0.91.14
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.
New Features on April 28, 2011 v0.91.13
This release includes a number of bug fixes. See Fixed issues.
New Features on April 14, 2011 v0.91.12
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:
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.
New Features on April 6, 2011 v0.91.11
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).
New Features on March 30, 2011 v0.91.10
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.
New Features on March 21, 2011 v0.91.9
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.
New Features on March 11, 2011 v0.91.8
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:
New Features on February 22, 2011 v0.91.5
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:
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.
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.
New Features on February 14, 2011 v0.91.4
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.
New Features on February 7, 2011 v0.91.3
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.
New Features on January 31, 2011 v0.91.2
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.
New Features on January 24, 2011 v0.91.1
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.
New Features on January 17, 2011 v0.91.0
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.
Device panel displayed by default when you click the settings button
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.
Fixed on May 17, 2012 v0.91.55
"No Video" overlay sometimes displayed on top of active video. We have fixed this issue.
Fixed in previous versions
Fixed on May 10, 2012 v0.91.54
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.
Fixed on April 26, 2012 v0.91.53
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.
Fixed on April 12, 2012 v0.91.52
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.
Fixed on March 29, 2012 v0.91.51
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.
Fixed on March 1, 2012 v0.91.47
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.
Fixed on January 19, 2012 v0.91.43
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.
Fixed on January 5, 2012 v0.91.41
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.
Fixed on December 19, 2011 v0.91.39
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.
Fixed on December 1, 2011 v0.91.38
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.
Fixed on November 28, 2011 v0.91.37
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.
Fixed on November 17, 2011 v0.91.36
Calling Player.getImgData() returns an empty string. We have fixed this issue.
Fixed on November 3, 2011 v0.91.34
Calling Session.unpublish() in the OpenTok ActionScript library can result in a null object error. We have fixed this issue.
Fixed on September 29, 2011 v0.91.28
When closing an archive while recording a session, the recording indicator in the publisher remains on. We have fixed this issue.
Fixed on September 15, 2011 v0.91.27
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.
Fixed on August 29, 2011 v0.91.25
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.
Fixed on August 18, 2011 v0.91.24
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.
Fixed on August 11, 2011 v0.91.23
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.
Fixed on July 27, 2011 v0.91.21
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.
Fixed on June 30, 2011 v0.91.19
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.
Fixed on June 17, 2011 v0.91.18
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().)
Fixed on May 26, 2011 v0.91.16
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.
Fixed on April 28, 2011 v0.91.13
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:
- The optional
propertiesparameter of theSession.connect()method is a SessionConnectionProperties object. - The
connectionproperty 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.
Fixed on April 14, 2011 v0.91.12
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.
Fixed on April 6, 2011 v0.91.11
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.
Fixed on March 30, 2011 v0.91.10
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.
Fixed on March 21, 2011 v0.91.9
Occassional error when connecting to a session using the ActionScript 3.0 library We have fixed this.
Fixed on March 11, 2011 v0.91.8
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.
Fixed on March 4, 2011 v0.91.7
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.
Fixed on February 28, 2011 v0.91.6
Faster camera acquisition. This speeds up the availability of videos in both published and subscribed streams.
Fixed on February 22, 2011 v0.91.5
The publisher object now resizes, as necessary, to accommodate the Flash Player Settings dialog box. This was sometimes not occurring in Internet Explorer.
Fixed on February 14, 2011 v0.91.4
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.
Fixed on January 24, 2011 v0.91.1
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.
Fixed on January 17, 2011 v0.91.0
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.
Fixed on January 3, 2011 v0.90.3
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.
Fixed on December, 2011 v0.90.2
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.
Known issues
The following are known issues for this version of the OpenTok API:
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 a bandwidth test completes. 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()".
In Firefox running on Mac OS, you sometimes cannot click the Allow and Deny buttons in the Flash Player camera acquisition dialog box. If the users resizes the browser window slightly, the controls become available. This happens if the OpenTok Publisher or Device Panel is automatically positioned on the page. To workaround this issue, use absolute positioning, or ensure that the x and y coordinates of these widgets are integers.
This issue is fixed in Firefox 4.
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.
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.
Things to look for when upgrading to v0.91
If you are upgrading from OpenTok v0.90 to v0.91, there are some considerations you should bare in mind. Show details.
When updating to v0.91, you should look for the following:
Two instances of the device panel displayed at once
When the user clicks the settings button in the publisher control, if the
app displays two device panels, you need to adjust your code. In the event
handler for the settingsButtonClick event, you can call the
preventDefault() method. This prevents the default behavior of the
event (which is to automatically display a device panel in the center of the
screen. Or you can remove code that calls the displayPanel() method
of a DeviceManager object, and let the default device panel be displayed.
Two close buttons displayed for the device panel
The device panel has an optional close button, which is displayed by
default. However, your existing code may display an HTML element that serves as
the close control. If you use the DeviceManager.displayPanel() method
to display the device panel, you can prevent the new close button from appearing;
set the showCloseButton property of the properties
parameter of the method to false.
New dimensions of the device panel
The device panel now has new dimensions in v0.91. With the close button displayed (see the previous note), the device panel is 360 pixels wide by 270 pixels high. Without the close button displayed, it is 340 pixels wide by 230 pixels high.
New default behaviors for streamDestroyed and sessionDisconnected events
The streamDestroyed and sessionDisconnected events
have new default behaviors. For both events, by default all subscribers are unsubscribed
from. And for the sessionDisconnected event, all publishers are destroyed.
Call the preventDefault() method of either of these events to prevent
the default behavior. Otherwise, consider removing or revising any code you may have that
removes subscribers and publishers in the event listeners for these events.
Installation instructions
The OpenTok API includes the following:
- The OpenTok JavaScript library You include this in your web page
using a standard
scripttag. There is no need to install this file on your web server. Use the src attribute to load the latest version of the OpenTok API. When you are developing your app, load the script from the OpenTok staging server:<script src="http://staging.tokbox.com/v0.91/js/TB.min.js"></script>
When you are ready to deliver a production version of your app, load the script from the following location:<script src="http://static.opentok.com/v0.91/js/TB.min.js"></script>
- The OpenTok ActionScript library This is for Flash app developers only. (HTML/JavaScript developers use the OpenTok Javascript library.) You include this SWC file when compiling your Flash app. Download the SWC file from the Downloads page.
- The OpenTok server-side libraries These libraries include code for your web server. Use these libraries to obtain OpenTok session IDs and to obtain validation tokens for individual users. There are versions of the OpenTok server-side libraries for Java, PHP, Python, and Ruby. You can obtain the OpenTok server-side libraries at GitHub.
For more documentation on the OpenTok JavaScript library and the OpenTok server-side libraries, see the OpenTok API reference.
To see some samples, with descriptions of how the code works, see Tutorials and sample code.
Also check out the OpenTok Developer FAQs page.
How to report bugs
We’d love to hear from you! If you have any issues or bugs, you can report them to us at support@tokbox.com.
IRC Live Chat
Have a quick question? Chat with other developers. Join chat
TokBox staff may not be online right now. To reach them during off-hours, visit the forums.