Deprecation Notice - Versions 1.0.0-beta10 and earlier |
---|
Please note that older versions of the Programmable Video Android SDK prior to 1.0.0-beta11 are deprecated and will stop working on September 13, 2018. Please make sure you're using the latest version of the library in your apps, and make sure your customers update their apps by that date. For more information please review the knowledge base. |
Compatibility Notice - All versions |
---|
Please note that all 1.x versions are incompatible with Firefox 63+ in a Peer-to-Peer Room. For more information please review the Github Issue. |
The Twilio Programmable Video SDKs use Semantic Versioning.
Improvements
3.1.0
and Gradle version to 4.4
Bug Fixes
Known issues
Improvements
Bug Fixes
Known issues
Bug Fixes
Room#disconnect()
twice. #255Known issues
Bug Fixes
turns
scheme are now supported. The SDK will now use turns
by default if turn is enabled for your Room.stuns
scheme are now supported.Known issues
Improvements
targetSdkVersion
to 27buildToolsVersion
to 27.0.3Known issues
Improvements
Bug Fixes
Known issues
Improvements
Known issues
Improvements
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.setVideoScaleType
when width or height is set to MATCH_PARENT
Known issues
Improvements
If you are downloading Video Android SDK artifacts from the Twilio CDN then there is one options available moving forward.
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}
1.3.7
Javadocs go to https://twilio.github.io/twilio-video-android/docs/1.3.7Bug Fixes
takePicture
on CameraCapturer
.Known issues
Improvements
Known issues
Improvements
Known issues
Bug Fixes
Known issues
Improvements
Known issues
Improvements
Room
that has not connected #116Known issues
Improvements
CameraCapturer
incorrectly reported a failure to close the
camera.Known issues
Room
that has not connected sometimes results in a crash #116Features
CameraCapturer.isSourceAvailable
that validates if a camera source is
available on the device. This method is used when creating a CameraCapturer
instance and when
calling CameraCapturer#switchCamera
to validate that a source can be used for capturing frames.Improvements
Participant.Listener
, ScreenCapturer.Listener
, VideoCapturer.Listener
,
and VideoRenderer.Listener
.Bug Fixes
Known issues
Room
that has not connected sometimes results in a crash #116Improvements
Participant#setListener
with null
is no longer allowed.Bug Fixes
LocalMedia
in CameraCapturer
javadoc.Known issues
Room
that has not connected sometimes results in a crash #116Improvements
Known issues
Room
that has not connected sometimes results in a crash #116Features
Improvements
LocalParticipant#release
. This method is not meant to be called and is now a
no-op until it is removed in 2.0.0-preview1
release. #132CameraCapturer
to help identify cases when the camera service cannot be reached. #126getSupportedFormats
for CameraCapturer
, ScreenCapturer
, and Camera2Capturer
to
be synchronized
.Bug Fixes
Known issues
Room
that has not connected sometimes results in a crash #116Bug Fixes
VideoConstraints
logic where valid VideoCapturer video formats were ignored due to very strict checking of aspect ratios in WebRTC.LocalVideoTrack
where FPS check was incorrectly marking a constraint as incompatible. #127Known issues
Room
that has not connected sometimes results in a crash #116Improvements
Camera2Capturer
. Camera2Capturer
uses android.hardware.camera2
to implement
a VideoCapturer
. Camera2Capturer
does not yet implement takePicture
and the ability to modify
camera parameters once Camera2Capturer
is running.Create LocalVideoTrack
with Camera2Capturer
1// Check if device supports Camera2Capturer2if (Camera2Capturer.isSupported(context)) {3// Use CameraManager.getCameraIdList() for a list of all available camera IDs4String cameraId = "0";5Camera2Capturer.Listener camera2Listener = new Camera2Capturer.Listener() {6@Override7public void onFirstFrameAvailable() {}89@Override10public void onCameraSwitched(String newCameraId) {}1112@Override13public void onError(Camera2Capturer.Exception exception) {}14}15Camera2Capturer camera2Capturer = new Camera2Capturer(context, cameraId, camera2Listener);16LocalVideoTrack = LocalVideoTrack.create(context, true, camera2Capturer);17}
This release adds Insights statistics collection, which reports RTP quality metrics back to Twilio. In the future, these statistics will be included in customer-facing reports visible in the Twilio Console. Insights collection is enabled by default, if you wish to disable it reference the following snippet.
1ConnectOptions connectOptions = new ConnectOptions.Builder(token)2.enableInsights(false)3.build();
Bug Fixes
onParticipantDisconnected
was
invoked #125Known issues
Room
that has not connected sometimes results in a crash #116Bug Fixes
Known issues
Room
that has not connected sometimes results in a crash #116Improvements
ScreenCapturer
performance by enabling capturing to a texture.Bug Fixes
Known issues
Room
that has not connected sometimes results in a crash #116We've promoted 1.0.0-beta17 to 1.0.0 as our first General Availability release.
Known issues
Room
that has not connected sometimes results in a crash #116Improvements
LocalMedia
class with Track factories for LocalVideoTrack
and LocalAudioTrack
Working with LocalVideoTrack
and LocalAudioTrack
before 1.0.0-beta17
1// Create LocalMedia2LocalMedia localMedia = LocalMedia.create(context);3LocalVideoTrack localVideoTrack = localMedia.addVideoTrack(true, videoCapturer);4LocalAudioTrack localAudioTrack = localMedia.addAudioTrack(true);56...78// Destroy LocalMedia to free native memory resources9localMedia.release();
Working with LocalVideoTrack
and LocalAudioTrack
now
1// Create Tracks2LocalVideoTrack localVideoTrack = LocalVideoTrack.create(context, true, videoCapturer);3LocalAudioTrack localAudioTrack = LocalAudioTrack.create(context, true);45...67// Destroy Tracks to free native memory resources8localVideoTrack.release();9localAudioTrack.release();
ConnectOptions.Builder
now takes a List<LocalAudioTrack>
and List<LocalVideoTrack>
instead of LocalMedia
Providing LocalVideoTrack
and LocalAudioTrack
before 1.0.0-beta17
1LocalMedia localMedia = LocalMedia.create(context);2LocalVideoTrack localVideoTrack = localMedia.addVideoTrack(true, videoCapturer);3LocalAudioTrack localAudioTrack = localMedia.addAudioTrack(true);45ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)6.roomName(roomName)7.localMedia(localMedia)8.build();9VideoClient.connect(context, connectOptions, roomListener);
Providing LocalVideoTrack
and LocalAudioTrack
now
1List<LocalVideoTrack> localAudioTracks =2new ArrayList<LocalVideoTrack>(){{ add(localVideoTrack); }};3List<LocalAudioTrack> localVideoTracks =4new ArrayList<LocalAudioTrack>(){{ add(localAudioTrack); }};56ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)7.roomName(roomName)8.audioTracks(localAudioTracks)9.videoTracks(localVideoTracks)10.build();11VideoClient.connect(context, connectOptions, roomListener);
getVideoTracks()
and getAudioTracks()
moved from LocalMedia
and Media
to LocalParticipant
and Participant
Media
from Participant
and migrated Media.Listener
to Participant.Listener
.
AudioTrack
and VideoTrack
events are raised with the corresponding Participant
instance.
This allows you to create tracks while connected to a Room
without immediately adding them to the connected Room
textureId
and samplingMatrix
fields to I420Frame
so implementations of VideoRenderer
can extract YUV data from frame represented as texture.org.webrtc.YuvConverter
to facilitate converting a texture to an in memory YUV buffer.ScreenCapturer.Listener
callbacks on the thread ScreenCapturer
is created on.Room
for the first time occasionally leading to a 53001 error onConnectFailure
response.Room#getParticipants
returns List<Participant>
instead of Map<String, Participant>
.Bug Fixes
org.webrtc.voiceengine.WebRtcAudioManager
and org.webrtc.voiceengine.WebRtcAudioTrack
construction. #102Known issues
Improvements
VideoFrame.RotationAngle
to ensure VideoFrame
objects are constructed with
valid orientation values.CameraCapturer
to be powered by latest WebRTC camera capturer.CameraCapturer
to allow scheduling a picture to be taken while the capturer is not
running.Bug Fixes
VideoRenderer
s receiving null
YUV data for VideoTrack
s #93Known issues
org.webrtc.voiceengine.WebRtcAudioManager
and org.webrtc.voiceengine.WebRtcAudioTrack
construction. #102Improvements
VideoClient
class to Video
.Known issues
VideoRenderer
to VideoTrack
#93Improvements
StatsReport
.Bug Fixes
Known issues
VideoRenderer
to VideoTrack
#93Improvements
Bug Fixes
Room#disconnect
when releasing Participant
mediaKnown issues
VideoRenderer
to VideoTrack
#93Improvements
VideoClient
an abstract class.TwilioException
will now carry a numeric code belonging to one of these ranges, an error message, and an optional error explanation.VideoConstraints
. Adding a LocalVideoTrack
with no constraints, results in LocalMedia
applying a set of default constraints based on the closest supported VideoFormat
to 640x480 at 30 FPS. Adding a LocalVideoTrack
with custom constraints, results in LocalMedia
checking if the constraints are compatible with the given VideoCapturer
before applying. If the constraints are not compatible LocalMedia
applies default constraints. #68Bug Fixes
Known issues
VideoRenderer
to VideoTrack
#93Improvements
connect
from instance method to static method on VideoClient
class. Calling the new static connect
method requires a Context
in addition to ConnectOptions
and a Room.Listener
. VideoClient
is no longer an object that can be instantiated and an instance is no longer required to connect to a Room
.VideoClient
constructor to ConnectOptions.Builder
constructor.Connecting to a Room
before 1.0.0-beta11
1// Create VideoClient2VideoClient videoClient = new VideoClient(context, accessToken);3ConnectOptions connectOptions = new ConnectOptions.Builder()4.roomName(roomName)5.localMedia(localMedia)6.build();7videoClient.connect(connectOptions, roomListener);
Connecting to a Room
with static connect
1ConnectOptions connectOptions = new ConnectOptions.Builder(accessToken)2.roomName(roomName)3.localMedia(localMedia)4.build();5VideoClient.connect(context, connectOptions, roomListener);
Bug Fixes
Room
on HTC 10.Room#disconnect
.Known issues
VideoRenderer
to VideoTrack
#93Improvements
Bug Fixes
Known issues
VideoRenderer
to VideoTrack
#93Bug Fixes
Known issues
VideoRenderer
to VideoTrack
#93Features
isRecording
method to Room
, and callbacks to RoomListener
. Please note that recording is only available in our Group Rooms developer preview. isRecording
will always return false
in a P2P Room.Bug Fixes
CameraCapturer#updateCameraParameters
API #54getStats()
immediately after disconnecting from Room
Known issues
VideoRenderer
to VideoTrack
#93Improvements
LocalMedia#addAudioTrack
enabled parameterBug Fixes
Known issues
Room
immediately after calling getStats()
results in a crash.VideoRenderer
to VideoTrack
#93Bug Fixes
EglBaseProvider
.Known issues
Room
immediately after calling getStats()
results in a crash.VideoRenderer
to VideoTrack
#93New features
getStats()
method to Room
that builds a StatsReport
with metrics for all the audio and video tracks being shared to a Room
.Room
.VideoException
to TwilioException
.Bug Fixes
takePicture
.PictureListener
callbacks are invoked on the calling thread of takePicture
.Known issues
Room
immediately after calling getStats()
results in a crash.VideoRenderer
to VideoTrack
#93New features
CameraCapturer
for taking a picture.Known issues
New features
CameraCapturer
for providing custom Camera.Parameters
.isScreencast()
method to VideoCapturer
. This indicates if a capturer is providing screen content and affects any scaling attempts made while media is flowing.Bug fixes
LocalMedia
will now return null
when attempting to add a LocalAudioTrack
without RECORD_AUDIO permission. CameraCapturer
will log an error and provide an error code via a new CameraCapturer.Listener
when trying to capture video without CAMERA permission.Known issues
New features
AccessManager
in VideoClient
constructor. Only a context and access token are required to create a VideoClient
.updateToken
method to VideoClient
that allows for an access token to be updated in case it has expiredBug fixes
Known issues
New features
Bug fixes
release()
method on the I420Frame
object allowing developers to free native memory once they are done using the frame when implementing their own custom renderersKnown issues
New features
Known issues
VideoRenderer
New features
Bug fixes
Known issues
VideoRenderer