Changelog: Twilio Video Android 2.x
The Twilio Programmable Video SDKs use Semantic Versioning.
Compatibility Notice - All versions |
---|
Please note that all 2.x versions are incompatible with Firefox 63+ in a Peer-to-Peer Room. For more information please review the Github Issue. |
2.2.1 (September 13, 2018)
Improvements
- Adding a null video/audio codec to
ConnectOptions
will now throw an exception - Switched CI provider for build, test, and release pipeline.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.2.0 (August 30th, 2018)
Features
- Added flag to IceOptions
abortOnIceServerTimeout
that tells the client whether to continue or abort connecting to a Room when Ice fails to connect. - Added parameter to IceOptions
iceServersTimeout
that allows control of the timeout period when trying to retrieve Ice servers. - Added
VideoTextureView
.VideoTextureView
is similar toVideoView
but subclassesTextureView
instead ofSurfaceView
. Unlike SurfaceView, TextureView does not create a separate window but behaves as a regular View. This key difference allows a TextureView to be moved, transformed, animated, etc. For more see the TextureView documentation. If you were previously using this gist, please update your applications to use theVideoTextureView
provided with the SDK. NOTE:VideoTextureView
can experience dead locking on API Level 19 or below due to a WebRTC bug. Use with discretion.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.1.1 (July 13th, 2018)
Improvements
- Updated Room.Listener documentation to provide more clarity about when onRecording callbacks are received.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.1.0 (May 29th, 2018)
Features
- Added
simulcast
property toVp8Codec
. Enabling simulcast causes the encoder to generate multiple spatial and temporal layers for the video that is published. Simulcast should only be enabled in a Group Room.
Bug Fixes
- Fixed a bug where the SDK could crash when unsubscribing from a data track and disconnecting from the room at the same time.
- Fixed a rare crash that occurs when disconnecting from a
Room
. - Fixed an issue which could cause DTLS roles to be negotiated incorrectly in a multi-party Peer-to-Peer Room.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.2 (May 11th, 2018)
Improvements
- Updated Android Gradle Plugin to 3.1.1.
Bug Fixes
- Relaxed state check in CameraCapturer when stopCature is called and a camera closed event is not received.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.1 (April 26th, 2018)
Improvements
- Updated
ScreenCapturer
to capture at resolution based on the device's screen.
Bug Fixes
- Fixed bug in
VideoCapturer
API whereVideoPixelFormat.RGBA_8888
frames were not rotated before provided to video broadcaster. This bug would result in frames not being oriented properly when rendered by participants.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0 (April 17th, 2018)
We've promoted 2.0.0-beta5 to 2.0.0 as our first General Availability release.
2.0.0-beta5 (April 12th, 2018)
Bug Fixes
- Fixed issue where onDisconnected was not called when completing a Room using the REST API. #277
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0-beta4 (April 4th, 2018)
Improvements
- Removed
trackId
fromBaseTrackStats
.trackSid
ortrackName
can be used to identify track stats in aStatsReport
. - Removed
getTrackId
fromLocalAudioTrack
,LocalVideoTrack
, andLocalDataTrack
. - Added
getSid
toRemoteAudioTrack
,RemoteVideoTrack
, andRemoteDataTrack
. - Updated Android Gradle Plugin version to
3.1.0
and Gradle version to4.4
. - SDK now defers to WebRTC to validate ice servers and returns an error when a connection attempt fails due to invalid servers.
- Reduced the time needed to shutdown the signaling stack while disconnecting from a Room.
- Increased the signaling disconnect timeout interval to 1 second.
- Enable monotonic clock support in the signaling client.
- Initial connect message now includes client version metadata.
- Converted
AudioCodec
andVideoCodec
from enums to abstract classes with concrete implementations. The subclasses ofAudioCodec
andVideoCodec
are the following: AudioCodec
IsacCodec
OpusCodec
PcmaCodec
PcmuCodec
G722Codec
VideoCodec
Vp8Codec
H264Codec
Vp9Codec
The following snippets demonstrate the before and after for setting codec preferences.
// Setting preferences before 2.0.0-beta4
ConnectOptions aliceConnectOptions = new ConnectOptions.Builder(aliceToken)
.roomName(roomName)
.preferAudioCodecs(Collections.singletonList(VideoCodec.ISAC))
.preferVideoCodecs(Collections.singletonList(VideoCodec.VP9))
.build();
// Setting preferences with 2.0.0-beta4
ConnectOptions aliceConnectOptions = new ConnectOptions.Builder(aliceToken)
.roomName(roomName)
.preferAudioCodecs(Collections.<AudioCodec>singletonList(new IsacCodec()))
.preferVideoCodecs(Collections.<VideoCodec>singletonList(new Vp9Codec()))
.build();
Bug Fixes
- Fixed a bug where the SDK hangs if DNS resolution fails and the user does not initiate disconnect.
- Resolved an issue with clock rollover in the Room signaling layer that resulted in high CPU usage and disconnects.
- The signaling client no longer logs access tokens.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0-beta3 (March 27th, 2018)
Improvements
- Improved internal logic for retrieving ice servers and resolving outbound DNS.
Bug Fixes
- ICE URIs using the turns and stuns scheme are now supported. The SDK will now use turns by default if turn is enabled for your Room.
- Resolved a condition where ICE candidates might not be applied in Peer-to-Peer Rooms.
- Quieted unnecessary warning logs when preferring codecs.
- Fixed a bug where onDisconnected was not getting invoked due to a race condition between a network handover and a user initiated disconnect call.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0-beta2 (March 5th, 2018)
Bug Fixes
- Fixed crash when calling
Room#disconnect()
twice. #255
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0-beta1 (February 7th, 2018)
Improvements
- Updated
targetSdkVersion
to 27 - Updated
buildToolsVersion
to 27.0.3 - Updated Android Gradle plugin to to 3.0.1
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0-preview9 (January 25th, 2018)
Improvements
- Refactor internal reference counting of internal MediaFactory.
Bug Fixes
- Don't publish Ice Candidate stats unless an active pair is present.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0-preview8 (January 11th, 2018)
Features
- Added the following callbacks to
RemoteParticipant.Listener
onAudioTrackSubscriptionFailed
- Notifies listener that an audio track could not be subscribed to.onVideoTrackSubscriptionFailed
- Notifies listener that a video track could not be subscribed to.onDataTrackSubscriptionFailed
- Notifies listener that a data track could not be subscribed to.
- Added
trackSid
toBaseTrackStats
.
Bug Fixes
- Removed public
getEncodingOptions
method fromConnectOptions
.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0-preview7 (December 26th, 2017)
Improvements
- Added version to javadoc title, header, and bottom.
LocalParticipant
throwsIllegalArgumentException
when attempting to publish or unpublish a releasedTrack
.
Bug Fixes
- Fixed crash disconnecting from a
Room
before being connected.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0-preview6 (November 28th, 2017)
Improvements
LocalDataTrack
name is no longer provided via staticcreate
method argument. DataTrack names are now provided viaDataTrackOptions
. Reference snippets below:
Creating a LocalDataTrack
with name before 2.0.0-preview6
String dataTrackName = "data";
LocalDataTrack localDataTrack = LocalDataTrack.create(context, dataTrackName);
Creating a LocalDataTrack
with name after 2.0.0-preview6
String dataTrackName = "data";
DataTrackOptions dataTrackOptions = new DataTrackOptions.Builder()
.name("data")
.build();
LocalDataTrack localDataTrack = LocalDataTrack.create(context, dataTrackOptions);
- Updated javadoc to include note about
VideoView#setVideoScaleType
. Scale type will only be applied to dimensions defined asWRAP_CONTENT
or a custom value. Setting a width or height toMATCH_PARENT
results in the video being scaled to fill the maximum value of the dimension. - Add warning log when calling
setVideoScaleType
when width or height is set toMATCH_PARENT
Bug Fixes
- Fixed a potential crash when publishing or unpublishing a Data Track.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0-preview5 (November 9th, 2017)
Features
- Added the following callbacks to
LocalParticipant.Listener
onAudioTrackPublicationFailed
- Notifies listener that local participant failed to publish audio track.onVideoTrackPublicationFailed
- Notifies listener that local participant failed to publish video track.onVideoTrackPublicationFailed
- Notifies listener that local participant failed to publish video track.
Improvements
- Include javadoc and sources jar with artifacts published to Bintray.
- Added support for
DataTrack
API with Group rooms. - Updated to Build Tools 26.0.2
- Support annotations and Relinker no longer exposed at compile time
- Made
Track
interface public.Track
is the common interface for anAudioTrack
,VideoTrack
, andDataTrack
. - Twilio CDN no longer hosts the Video Android aar artifacts or Javadocs
Accessing Artifacts
If you are downloading Video Android SDK artifacts from the Twilio CDN then there are two options available moving forward.
- Follow our Downloading Video SDKs Guide for Android.
- Download the artifacts directly from Bintray.
Viewing Javadocs
All Javadocs back to 1.0.0-preview1
are now hosted on Github Pages
with the following URL scheme. https://twilio.github.io/twilio-video-android/docs/{version}
- To view
2.0.0-preview5
Javadocs go to https://twilio.github.io/twilio-video-android/docs/2.0.0-preview5
Bug Fixes
- Fixed NPE when calling
takePicture
onCameraCapturer
.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0-preview4 (October 24th, 2017)
Features
- Added new
DataTrack
API. A data track represents a unidirectional source that allow sharing string and binary data with all participants of a Room. Data tracks function similarly to audio and video tracks and can be provided viaConnectOptions
and published usingLocalParticipant#publishTrack
. Messages sent on the data track are not guaranteed to be delivered to all the participants. The following snippets demonstrate how to send and receive messages with data tracks.
Creating a LocalDataTrack
LocalDataTrack localDataTrack = LocalDataTrack.create(context);
Connecting to a Room
with a LocalDataTrack
ConnectOptions connectOptions = new ConnectOptions.Builder(token)
.dataTracks(Collections.singletonList(localDataTrack))
.build();
Video.connect(context, connectOptions, roomListener);
Publishing a LocalDataTrack
// ... Connected to room
LocalParticipant localParticipant = room.getLocalParticipant();
localParticipant.publish(localDataTrack);
Observing RemoteDataTrackPublication
and RemoteDataTrack
RemoteParticipant.Listener participantListener = new RemoteParticipant.Listener() {
// ... complete interface ellided
// Participant has published data track
@Override
public void onDataTrackPublished(RemoteParticipant remoteParticipant,
RemoteDataTrackPublication remoteDataTrackPublication);
// Participant has unpublished data track
@Override
public void onDataTrackUnpublished(RemoteParticipant remoteParticipant,
RemoteDataTrackPublication remoteDataTrackPublication);
// Data track has been subscribed to and messages can be observed.
@Override
public void onDataTrackSubscribed(RemoteParticipant remoteParticipant,
RemoteDataTrackPublication remoteDataTrackPublication,
RemoteDataTrack remoteDataTrack);
// Data track has been unsubsubscribed from and messages cannot be observed.
@Override
public void onDataTrackUnsubscribed(RemoteParticipant remoteParticipant,
RemoteDataTrackPublication remoteDataTrackPublication,
RemoteDataTrack remoteDataTrack);
};
Sending messages on LocalDataTrack
String message = "Hello DataTrack!";
ByteBuffer messageBuffer = ByteByffer.wrap(new byte[]{ 0xf, 0xe });
localDataTrack.send(message);
localDataTrack.send(messageBuffer);
Observing messages from data track
RemoteDataTrack.Listener dataTrackListener = new RemoteDataTrack.Listener() {
@Override
public void onMessage(String message) {
// Should print "Hello DataTrack!"
Log.d(TAG, String.format("Received data track message: %s", message));
}
@Override
public void onMessage(ByteBuffer message) {
Log.d(TAG, "Received message buffer on data track!");
}
};
Improvements
- Moved pre-defined aspect ratios from
VideoConstraints
class toAspectRatio
class. - Local audio, video, and data tracks return their track IDs for
getName
if no name was specified. - Improved threading contract.
Bug Fixes
- Fixed issue that caused track and room names with certain UTF-8 characters to be improperly encoded. #179
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- DataTrack support for Group Rooms is currently available only on JavaScript. DataTrack support for Group Rooms will be available on iOS and Android soon.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
- Data Tracks might not be subscribed with Chrome 76+ in a Peer-to-Peer Room. #433
2.0.0-preview3 (September 22nd, 2017)
Improvements
- Upgraded to Android Oreo from Nougat
Bug Fixes
- Fixed case on some devices where
CameraCapturer
incorrectly reported a failure to close the camera. - Improved echo cancellation on Nexus 6P and Nexus 6 by enabling hardware echo canceller and disabling OpenSL ES.
- Fixed crash disconnecting from
Room
that has not connected #116
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
2.0.0-preview2 (September 14th, 2017)
Bug Fixes
- Fixed crash when disconnecting from a Room immediately after unpublishing a local track.
Known issues
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
2.0.0-preview1 (September 11th, 2017)
Features
- Added
EncodingParameters
which constrains how much bandwidth is used to share audio and video. This object has been added toConnectOptions
and can also be set onLocalParticipant
after joining aRoom
. - Added two static
create
methods toLocalAudioTrack
andLocalVideoTrack
that allow creating named tracks. The following snippet demonstrates how to create a video track named "screen".
LocalVideoTrack screenVideoTrack = LocalVideoTrack.create(context,
true,
screenCapturer,
"screen");
- Moved
getTrackId
fromTrack
toLocalAudioTrack
andLocalVideoTrack
. - Added
AudioCodec
andVideoCodec
as part of the new codec preferences API. Audio and video codec preferences can be set inConnectOptions
. The following snippet demonstrates how to prefer the iSAC audio codec and VP9 video codec.
ConnectOptions aliceConnectOptions = new ConnectOptions.Builder(aliceToken)
.roomName(roomName)
.preferAudioCodecs(Collections.singletonList(VideoCodec.ISAC))
.preferVideoCodecs(Collections.singletonList(VideoCodec.VP9))
.build();
- Added
RemoteAudioTrack
andRemoteVideoTrack
. These new objects extendAudioTrack
andVideoTrack
respectively and come with the following new method: getName
- Returns the name of the track or an empty string if no name is specified.- Added
enablePlayback
to newRemoteAudioTrack
which allows developers to mute the audio received from aRemoteParticipant
. - Added
RemoteAudioTrackPublication
which represents a publishedRemoteAudioTrack
. This new class contains the following methods:getTrackSid
- Returns the identifier of a remote video track within the scope of aRoom
.getTrackName
- Returns the name of the track or an empty string if no name was specified.isTrackEnabled
- Checks if the track is enabled.getAudioTrack
- Returns the base class object of the remote audio track published.getRemoteAudioTrack
- Returns the remote audio track published.
- Added
RemoteVideoTrackPublication
which represents a publishedRemoteVideoTrack
. This new class contains the following methods:getTrackSid
- Returns the identifier of a remote video track within the scope of aRoom
.getTrackName
- Returns the name of the track or an empty string if no name was specified.isTrackEnabled
- Checks if the track is enabled.getAudioTrack
- Returns the base class object of the remote audio track published.getRemoteAudioTrack
- Returns the remote audio track published.
- Added
LocalAudioTrackPublication
which represents a publishedLocalAudioTrack
. This new class contains the following methods:getTrackSid
- Returns the identifier of a local video track within the scope of aRoom
.getTrackName
- Returns the name of the track or an empty string if no name was specified.isTrackEnabled
- Checks if the track is enabled.getAudioTrack
- Returns the base class object of the local audio track published.getLocalAudioTrack
- Returns the local audio track published.
- Added
LocalVideoTrackPublication
which represents a publishedLocalVideoTrack
. This new class contains the following methods:getTrackSid
- Returns the identifier of a local video track within the scope of aRoom
.getTrackName
- Returns the name of the track or an empty string if no name was specified.isTrackEnabled
- Checks if the track is enabled.getAudioTrack
- Returns the base class object of the local audio track published.getLocalAudioTrack
- Returns the local audio track published.
- Converted
Participant
to an interface and migrated previous functionality intoRemoteParticipant
.LocalParticipant
and the newRemoteParticipant
implementParticipant
. - Added
RemoteParticipant#getRemoteAudioTracks
andRemoteParticipant#getRemoteVideoTracks
which returnList<RemoteAudioTrackPublication>
andList<RemoteVideoTrackPublication>
respectively. - Moved
Participant.Listener
toRemoteParticipant.Listener
and changed the listener to returnRemoteParticipant
,RemoteAudioTrackPublication
, andRemoteVideoTrackPublication
in callbacks. - Renamed the following
RemoteParticipant.Listener
callbacks:onAudioTrackAdded
renamed toonAudioTrackPublished
.onAudioTrackRemoved
renamed toonAudioTrackUnpublished
.onVideoTrackAdded
renamed toonVideoTrackPublished
.onVideoTrackRemoved
renamed toonVideoTrackUnpublished
.
- Added the following callbacks to
RemoteParticipant.Listener
:onAudioTrackSubscribed
- Indicates when audio is flowing from a remote particpant's audio track. This callback includes theRemoteAudioTrack
that was subscribed to.onAudioTrackUnsubscribed
- Indicates when audio is no longer flowing from a remote partipant's audio track. This callback includes theRemoteAudioTrack
that was subscribed to.onVideoTrackSubscribed
- Indicates when video is flowing from a remote participant's video track. This callback includes theRemoteVideoTrack
that was subscribed to.onVideoTrackUnsubscribed
- Indicates when video is no longer flowing from a remote participant's video track. This callback includes theRemoteVideoTrack
that was subscribed to.
- Renamed
TrackStats
toRemoteTrackStats
,AudioTrackStats
toRemoteAudioTrackStats
, andVideoTrackStats
toRemoteVideoTrackStats
- Renamed
LocalParticipant#addAudioTrack
andLocalParticipant#addVideoTrack
toLocalParticipant#publishedTrack
. - Added
LocalParticipant.Listener
which is provides the following callbacks:onAudioTrackPublished
- Indicates when a local audio track has been published to aRoom
.onVideoTrackPublished
- Indicates when a local video track has been published to aRoom
.
- Added
LocalParticipant#getLocalAudioTracks
andLocalParticipant#getLocalVideoTracks
which returnList<LocalAudioTrackPublication>
andList<LocalVideoTrackPublication>
respectively.
Improvements
- Null renderers cannot be added or removed from local or remote video tracks.
- Renderers cannot be added or removed from a
LocalVideoTrack
that has been released.
- Change visibility of
LocalParticipant#release()
from public to package. #132
- Network handoff, and subsequent connection renegotiation is not supported for IPv6 networks #72
- Participant disconnect event can take up to 120 seconds to occur #80 #73
- Disconnecting from a
Room
that has not connected sometimes results in a crash #116 - Disconnecting from a Room immediately after unpublishing a local track may result in a crash.
- Codec preferences do not function correctly in a hybrid codec Group Room.
- The SDK is not side-by-side compatible with other WebRTC based libraries #340
- In a P2P room, participants will not receive any media or data tracks published by participants using Firefox 63 or later. #377
Need some help?
We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd by visiting Twilio's Stack Overflow Collective or browsing the Twilio tag on Stack Overflow.