We’re happy to announce that we recently made available OpenTok mobile SDKs 2.7.0 for iOS and Android. Improvements have been made in three main areas: Xcode 7 and iOS 9 support, quality and reliability and ease of use of the library.
Now let’s jump into all the details:
Xcode 7 and iOS 9 support
A beta bitcode version of the OpenTok iOS SDK is now available here. For more information about this update you can check out our blog post. If you have any comments or need to report any issues, please contact us at: email@example.com.
Android ARM v7a Support
Version 2.7.0 now takes advantage of the arm v7a architecture. This will allow you to target specific architecture (x86, arm v7a, armeabi) and results in a folder structure mapping them. You’ll notice an improvement of performance with respect to previous armeabi if you device is compatible with it, as most recent Android devices are.
Network Statistics and Camera Customization
We’ve released a new API for A/V network statistics (now moving from beta to production) which offers new methods for getting audio and video network information for a stream. You can now set a delegate object to monitor the following statistics for a subscriber’s stream:
Total audio and video packets lost
Total audio and video packets received
Total audio and video bytes received
See the documentation here:
iOS for the OTSubscriberKit.networkStatsDelegate property.
Note that this API can be used to perform a network test before starting the communication, you can find information on how to do that and sample code to illustrate the usage of this API on GitHub here: opentok-network-test.
Customize Video Resolution and Frame-Rate
Customizing the video resolution and frames-per-second (FPS) of the camera is now very simple using the default camera video capturer with the desired parameters for setting the frame-rate and resolution of the stream:
On iOS, just add the method OTPublisher initWithDelegate:name:cameraResolution:cameraFrameRate:]
Note that with this new method you don’t need to create a custom video driver to set the video resolution and FPS.
Connectivity and Video Quality
Automatic Reconnection Feature
Now clients can automatically reconnect to OpenTok sessions and audio-video streams after a temporary drop in network connectivity meaning that calls can continue seamlessly.
So how exactly does it work?
The new [OTSessionDelegate sessionDidBeginReconnecting] and [OTSessionDelegate sessionDidConnect] messages are sent when the client is attempting to reconnect and when it succeeds in reconnecting. Any existing publishers and subscribers are automatically reconnected when the client reconnects.
The new [OTSubscriberKitDelegate subscriberDidDisconnectFromStream:] and [OTSubscriberKitDelgate subscriberDidReconnectToStream:] messages are sent when the subscriber’s stream disconnects and reconnects.
If the client cannot reconnect to the session, the [OTSessionDelegate sessionDidDisconnect:] message is sent.
Like the streams, signals are guaranteed to be sent even if a reconnection happens. However, you have the option for the pending signals during a reconnection not to be sent afterwards; set the retryAfterReconnect parameter to NO when calling the new [OTSession signalWithType:string:connection:retryAfterReconnect:error:] method. (All signals sent by other clients while your client was disconnected are received upon reconnecting).
To participate in the beta program, email us at firstname.lastname@example.org.
Scalable Video Coding
Multi-party video communications can be challenging under different networks and devices so intelligent communication systems aim to optimize quality for each device given network conditions and hardware capabilities.
Scalable Video Coding (SVC) does just that by enabling the client to publish a multi-quality video stream, composed of multiple video resolutions and frame rates. This allows for subscribing endpoints to simultaneously consume different video resolutions and frame rates based on their network conditions .
For further optimization, the receiver can set the preferred video resolution and frame rate that the subscriber would like to receive. Lowering the preferred video resolution and frame rate might lower video quality but it also reduces network and CPU usage. See the documentation:
This beta feature is available for publishers using the OpenTok Android and iOS SDKs, as well as for publishers using OpenTok.js in Chrome. If you’re interested in participating in the beta program, you can find out more here.
You can find out more information about all of these new releases in the release notes for the Android SDK and iOS SDK . If you’re interested in participating in the beta program, you can find out more here.