Menu

Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Changelog: Twilio Video Android

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

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 to VideoView but subclasses TextureView instead of SurfaceView. 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 the VideoTextureView 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

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

2.1.0 (May 29th, 2018)

Features

  • Added simulcast property to Vp8Codec. 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

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

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 where VideoPixelFormat.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

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

2.0.0-beta4 (April 4th, 2018)

Improvements

  • Removed trackId from BaseTrackStats. trackSid or trackName can be used to identify track stats in a StatsReport.
  • Removed getTrackId from LocalAudioTrack, LocalVideoTrack, and LocalDataTrack.
  • Added getSid to RemoteAudioTrack, RemoteVideoTrack, and RemoteDataTrack.
  • Updated Android Gradle Plugin version to 3.1.0 and Gradle version to 4.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 and VideoCodec from enums to abstract classes with concrete implementations. The subclasses of AudioCodec and VideoCodec 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

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

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

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

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

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 to BaseTrackStats.

Bug Fixes

  • Removed public getEncodingOptions method from ConnectOptions.

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-preview7 (December 26th, 2017)

Improvements

  • Added version to javadoc title, header, and bottom.
  • LocalParticipant throws IllegalArgumentException when attempting to publish or unpublish a released Track.

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

2.0.0-preview6 (November 28th, 2017)

Improvements

  • LocalDataTrack name is no longer provided via static create method argument. DataTrack names are now provided via DataTrackOptions. 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 as WRAP_CONTENT or a custom value. Setting a width or height to MATCH_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 to MATCH_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

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 an AudioTrack, VideoTrack, and DataTrack.
  • 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.

  1. Follow our Downloading Video SDKs Guide for Android.
  2. 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}

Bug Fixes

  • Fixed NPE when calling takePicture on CameraCapturer.

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-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 via ConnectOptions and published using LocalParticipant#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 to AspectRatio 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

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 to ConnectOptions and can also be set on LocalParticipant after joining a Room.
  • Added two static create methods to LocalAudioTrack and LocalVideoTrack 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 from Track to LocalAudioTrack and LocalVideoTrack.
  • Added AudioCodec and VideoCodec as part of the new codec preferences API. Audio and video codec preferences can be set in ConnectOptions. 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 and RemoteVideoTrack. These new objects extend AudioTrack and VideoTrack 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 new RemoteAudioTrack which allows developers to mute the audio received from a RemoteParticipant.
  • Added RemoteAudioTrackPublication which represents a published RemoteAudioTrack. This new class contains the following methods:
    • getTrackSid - Returns the identifier of a remote video track within the scope of a Room.
    • 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 published RemoteVideoTrack. This new class contains the following methods:
    • getTrackSid - Returns the identifier of a remote video track within the scope of a Room.
    • 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 published LocalAudioTrack. This new class contains the following methods:
    • getTrackSid - Returns the identifier of a local video track within the scope of a Room.
    • 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 published LocalVideoTrack. This new class contains the following methods:
    • getTrackSid - Returns the identifier of a local video track within the scope of a Room.
    • 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 into RemoteParticipant. LocalParticipant and the new RemoteParticipant implement Participant.
  • Added RemoteParticipant#getRemoteAudioTracks and RemoteParticipant#getRemoteVideoTracks which return List<RemoteAudioTrackPublication> and List<RemoteVideoTrackPublication> respectively.
  • Moved Participant.Listener to RemoteParticipant.Listener and changed the listener to return RemoteParticipant, RemoteAudioTrackPublication, and RemoteVideoTrackPublication in callbacks.
  • Renamed the following RemoteParticipant.Listener callbacks:
    • onAudioTrackAdded renamed to onAudioTrackPublished.
    • onAudioTrackRemoved renamed to onAudioTrackUnpublished.
    • onVideoTrackAdded renamed to onVideoTrackPublished.
    • onVideoTrackRemoved renamed to onVideoTrackUnpublished.
  • Added the following callbacks to RemoteParticipant.Listener:
    • onAudioTrackSubscribed - Indicates when audio is flowing from a remote particpant's audio track. This callback includes the RemoteAudioTrack that was subscribed to.
    • onAudioTrackUnsubscribed - Indicates when audio is no longer flowing from a remote partipant's audio track. This callback includes the RemoteAudioTrack that was subscribed to.
    • onVideoTrackSubscribed - Indicates when video is flowing from a remote participant's video track. This callback includes the RemoteVideoTrack that was subscribed to.
    • onVideoTrackUnsubscribed - Indicates when video is no longer flowing from a remote participant's video track. This callback includes the RemoteVideoTrack that was subscribed to.
  • Renamed TrackStats to RemoteTrackStats, AudioTrackStats to RemoteAudioTrackStats, and VideoTrackStats to RemoteVideoTrackStats
  • Renamed LocalParticipant#addAudioTrack and LocalParticipant#addVideoTrack to LocalParticipant#publishedTrack.
  • Added LocalParticipant.Listener which is provides the following callbacks:
    • onAudioTrackPublished - Indicates when a local audio track has been published to a Room.
    • onVideoTrackPublished - Indicates when a local video track has been published to a Room.
  • Added LocalParticipant#getLocalAudioTracks and LocalParticipant#getLocalVideoTracks which return List<LocalAudioTrackPublication> and List<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.

Bug Fixes

  • Change visibility of LocalParticipant#release() from public to package. #132

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
  • 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
Rate this page:

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 browsing the Twilio tag on Stack Overflow.