Changelog: Twilio Video iOS Latest
The Twilio Programmable Video SDKs use Semantic Versioning. Twilio supports version N-1 for 12 months after the first GA release of version N. We recommend you upgrade to the latest version as soon as possible to avoid any breaking changes. Version 5.x is the latest Video iOS version.
Support for 4.x will cease on February 14th, 2023. This branch will only receive fixes for critical issues until that date. Check this guide when planning your migration to 5.x.
Support for iOS SDK version 3.x ended on December 4, 2021.
To ensure your account has the most up-to-date features and bug fixes, we recommend updating your Twilio Video SDK at least once a quarter.
The Twilio Programmable Video SDKs use Semantic Versioning.
5.7.1 (November 1, 2023)
This release is now available through CocoaPods again as we have resolved the issue.
Bug Fixes
- Updated documentation for
didFailToPublishVideoTrack
callback.
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 6.3 MB | 21.2 MB |
arm64 | 6.3 MB | 21.2 MB |
5.7.0 (June 29, 2023)
This release adds the possibility to enable camera multitasking for a video session.
Enhancements
- Camera multitasking allows users to continue broadcasting their camera even if the video application is put to background.
Limitations
This feature is supported on a limited set of devices: * iPad Pro (4th generation) * iPad Pro (5th generation) * iPad Air (5th generation)
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 6.3 MB | 21.2 MB |
arm64 | 6.3 MB | 21.2 MB |
5.6.0 (March 28, 2023)
This release is not available through CocoaPods because CocoaPods has incorrrectly removed the ownership of this project from Twilio. We will publish the pod for this release as soon as the ownership issue is resolved.
Enhancements
- This release now uses WebRTC-m105
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 6.3 MB | 21.2 MB |
arm64 | 6.3 MB | 21.2 MB |
5.5.0 (January 5, 2023)
Bug Fixes
- The following thread performance checker warning has been resolved
"Thread Performance Checker: -[AVCaptureSession startRunning] should be called from background thread. Calling it on the main thread can lead to UI unresponsiveness"
Maintenance
- Bitcode is now disabled for all builds due to deprecation by Apple since the release of Xcode 14. See excerpt below from Xcode 14 Release Notes: Deprecations
"Starting with Xcode 14, bitcode is no longer required for watchOS and tvOS applications, and the App Store no longer accepts bitcode submissions from Xcode 14."
"Xcode no longer builds bitcode by default and generates a warning message if a project explicitly enables bitcode: “Building with bitcode is deprecated. Please update your project and/or target settings to disable bitcode.” The capability to build with bitcode will be removed in a future Xcode release. IPAs that contain bitcode will have the bitcode stripped before being submitted to the App Store. Debug symbols can only be downloaded from App Store Connect / TestFlight for existing bitcode submissions and are no longer available for submissions made with Xcode 14. (86118779)"
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 5.7 MB | 19.1 MB |
arm64 | 5.7 MB | 19.1 MB |
5.4.0 (November 29, 2022)
Features
- This release introduces support for a noise cancellation audio device,
NoiseCancellationProcessor
via a new TwilioAudioProcessors SDK
API Changes
TVIAudioDeviceFormatChanged
method is now marked as deprecated and will raise a warning to useTVIAudioDeviceReinitialize
instead. The API will be removed in v6.0+.
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.7 MB | 10.9 MB |
arm64 | 4.7 MB | 10.9 MB |
5.3.0 (November 7, 2022)
Enhancements
- Picture in Picture mode is now supported with the SDK. A new renderer
SampleBufferVideoView
is added for picture in picture support. In order for picture in picture to work on iOS 15+, your app must have com.apple.developer.avfoundation.multitasking-camera-access entitlement.
The following code, from our Twilio Video iOS App, illustrates implementing picture in picture using SampleBufferVideoView
:
class PictureInPictureViewController: UIViewController {
@IBOutlet weak var videoView: VideoView!
private var pipController: AVPictureInPictureController!
private var pipVideoCallViewController: AVPictureInPictureVideoCallViewController!
override func viewDidLoad() {
let sampleBufferVideoCallView = SampleBufferVideoView()
sampleBufferVideoCallView.contentMode = .scaleAspectFit
pipVideoCallViewController = AVPictureInPictureVideoCallViewController()
pipVideoCallViewController.preferredContentSize = CGSize(width: 1080, height: 1920)
pipVideoCallViewController.view.addSubview(sampleBufferVideoCallView)
sampleBufferVideoCallView.translatesAutoresizingMaskIntoConstraints = false
let constraints = [
sampleBufferVideoCallView.leadingAnchor.constraint(equalTo: pipVideoCallViewController.view.leadingAnchor),
sampleBufferVideoCallView.trailingAnchor.constraint(equalTo: pipVideoCallViewController.view.trailingAnchor),
sampleBufferVideoCallView.topAnchor.constraint(equalTo: pipVideoCallViewController.view.topAnchor),
sampleBufferVideoCallView.bottomAnchor.constraint(equalTo: pipVideoCallViewController.view.bottomAnchor)
]
NSLayoutConstraint.activate(constraints)
sampleBufferVideoCallView.bounds = pipVideoCallViewController.view.frame
let pipContentSource = AVPictureInPictureController.ContentSource(
activeVideoCallSourceView: videoView,
contentViewController: pipVideoCallViewController
)
pipController = AVPictureInPictureController(contentSource: pipContentSource)
pipController.canStartPictureInPictureAutomaticallyFromInline = true
pipController.delegate = self
}
}
Please note that the render hints are not supported in picture in picture mode except for the track switch on and off hints when the SampleBufferVideoView
renderer is added and removed from the RemoteVideoTrack
respectively. As a result when the app is in the background and in picture in picture mode, the displayed RemoteVideoTrack
will still be active (e.g Dominant Speaker track), consuming bandwidth, and it will have the default spatial dimension determined by the media server.
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.7 MB | 10.9 MB |
arm64 | 4.7 MB | 10.9 MB |
5.2.1 (September 30, 2022)
Bug Fixes
- Fixed a bug in Adaptive Simulcast where processing of capturer parameter change events was causing a crash and debug check failure. [VIDEO-11409]
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.7 MB | 10.9 MB |
arm64 | 4.7 MB | 10.9 MB |
5.2.0 (August 24, 2022)
Bug Fixes
- Max video bandwidth limits are now applied to each simulcast layer when simulcast is enabled, and the expected behavior for max video bitrates with simulcast is better documented.
- Fixed several bugs that could cause crashes and deadlocks when a Room is disconnected / destroyed.
- Fixed a use-after-free bug associated with tasks posted to TaskQueue that could lead to undefined behavior.
- Fixed a bug which could cause a crash in IceConnectionActivityMonitor when reconnecting to or disconnecting from a Room.
- Fixed a race condition where subscribed callbacks for Remote Participant could be raised for tracks that have been ended.
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.7 MB | 10.9 MB |
arm64 | 4.7 MB | 10.9 MB |
5.1.1 (July 5, 2022)
Bug Fixes
- Fixed symbol naming conflicts for side-by-side support of third-party WebRTC builds. #207
Known Issues
- On iOS 15.4+, lower frame rate may be observed when H.264 codecs are used. #238
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested workarounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.8 MB | 11.4 MB |
arm64 | 4.8 MB | 11.4 MB |
5.1.0 (March 14, 2022)
Features
- This release introduces Adaptive Simulcast along with new Video Encoding modes for publishers. Adaptive Simulcast reduces publisher resource usage by only sending those encodings for a video track that are needed by subscribers or by the media server (when recording is enabled). This is an opt-in feature and can be enabled by setting the new Connect Option
videoEncodingMode
toauto
, which allows the SDK to select video codecs, use adaptive simulcast and manage encodings automatically. This feature cannot be used alongsideEncodingParameters.maxVideoBitrate
.
API Changes
- Added the
videoEncodingMode
property toConnectOptions
. - The
videoEncodingMode
API is mutually exclusive with existing codec management APIsEncodingParameters.maxVideoBitrate
andpreferredVideoCodecs
.
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested work arounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Size Impact
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.8 MB | 11.4 MB |
arm64 | 4.8 MB | 11.4 MB |
5.0.0 (February 14, 2022)
Maintenance
- The minimum iOS version supported is 12.2.
- This release is built with Xcode 13.
Enhancements
- Microphone access will only be requested when recording audio and publishing an audio track.
Notes
- Starting with iOS 14.5, apps can overwrite the audio interruption caused by smart cover use on iPads. See #225 for more details.
Bug Fixes
- Fixed a bug which could occur when connected to a Peer-to-Peer or Go Room and publishing a second video track before another Participant joins, causing the connection to be terminated or the second video track not to be fully established.
- Fixed a bug which could cause the Room connection to be terminated by the server.
- Fixed a bug which could cause the media connection not to be re-established after network changes.
- Fixed a bug where audio fails to start in the iOS Simulator on M1 Mac Mini when no microphone is present.
Known Issues
- Audio playback fails in some cases when running a simulator on a Mac Mini. #182
- Unpublishing and republishing a
LocalAudioTrack
orLocalVideoTrack
might not be seen by Participants. #34 - H.264 video might become corrupted after a network handoff. #147
- iOS devices do not support more than three H.264 encoders. Refer to #17 for suggested workarounds.
- Publishing H.264 video at greater than 1280x720 @ 30fps is not supported. If a failure occurs then no error is raised to the developer. [ISDK-1590]
Architecture | Compressed Size | Uncompressed Size |
---|---|---|
Universal | 4.8 MB | 11.3 MB |
arm64 | 4.8 MB | 11.3 MB |
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.