メニュー

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 iOS

The Twilio Programmable Video SDKs use Semantic Versioning.

2.7.0 (February 14, 2019)

API の変更点

  • Added new TVIRoomStateReconnecting to signify that the Client is attempting to reconnect to the Room due to a network disruption.
  • Added two new delegate methods to TVIRoomDelegate
  • [TVIRoomDelegate room:isReconnectingWithError:] - Invoked when the Client experiences a network interruption in signaling or media. The TVIRoom.state property will transition to TVIRoomStateReconnecting and the Client will attempt to restore the connection.
  • [TVIRoomDelegate didReconnectToRoom:] - Invoked after the Client successfully reconnects to the Room. If the reconnection attempts fail, [TVIRoomDelegate room:didDisconnectWithError:] is invoked instead.

改善点

  • TwilioVideo.framework is now built with Xcode 10.1.

バグ修正

  • Fixed a bug where video tracks configured for screencast could be simulcasted with empty spatial layers. [CSDK-2540]

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.6.0 (December 19, 2018)

API の変更点

  • Added properties to control the torch and camera zoom while capturing:
  • TVICameraSource.torchLevel
  • TVICameraSource.torchMode
  • TVICameraSource.zoomFactor
  • Removed TVICameraSourceOptions.torchMode and TVICameraSourceOptions.torchLevel.
  • Added TVILocalVideoTrack.source property to retrieve the TVIVideoSource used when creating the local video track.

バグ修正

  • TVILocalVideoTrack.capturer and TVILocalVideoTrack.constraints no longer return nil when called while the VideoSource APIs are being used. [ISDK-2331]
  • TVICameraSourceStartedBlock is now fired when calling [TVICameraSource selectCaptureDevice:completion:] repeatedly, with the same device. [ISDK-2321]

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.6.0-preview2 (December 13, 2018)

This preview refines the TVICameraSource APIs, introducing manual orientation, torch and zoom controls. We've also squashed a few bugs with TVIVideoSource and picked up the latest fixes from the 2.5.6 release.

API の変更点

  • The torch may not switch on when starting TVICameraSource if the supplied TVICameraSourceOptions.torchMode is set to AVCaptureTorchModeOn. [ISDK-2327]
  • Introduced [TVICameraSource initWithDelegate:] method.
  • Introduced TVICameraSourceOptions and TVICameraSourceOptionsBuilder classes, including options for the torch and camera zoom.
  • Replaced [TVICameraSource initWithPreviewEnabled:delegate:] with [TVICameraSource initWithOptions:delegate:], which accepts TVICameraSourceOptions.
  • TVICameraSourceStartedBlock now includes a TVIVideoFormat argument.

改善点

  • Added [TVICameraSource updateVideoOrientation:] method to enable manual control of orientation tags. #324
  • Added helper function TVIVideoOrientationIsValid.
  • Refactored internals of TVIConnectOptions for improved resource management. [ISDK-1943]

バグ修正

  • Fixed a bug where the signaling connection would not recover after a network handover. [CSDK-2623]
  • Fixed a bug where the SDK might close the signaling connection after connecting to a Group Room using CallKit when the application is backgrounded. #29
  • Fixed a crash when downscaling RGB32 images tagged with TVIVideoOrientationDown. [ISDK-2307]
  • TVIVideoSink.sourceRequirements is populated after calling TVIVideoSink.onFormatRequest(). [ISDK-2309]
  • It is now possible to drop frames using a format request. [ISDK-2264]
  • Fixed a memory leak when removing a TVIAudioSink from a TVIAudioTrack.
  • The return value for TVICameraSource.init is now correctly marked as null_unspecified.
  • TVICameraSourceStartedBlock is now fired when calling [TVICameraSource selectCaptureDevice:format:completion:] repeatedly, with different formats.
  • [TVICameraSource supportedFormatsForDevice:] no longer returns duplicate formats.

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • TVICameraSourceStartedBlock is not fired when calling [TVICameraSource selectCaptureDevice:completion:] repeatedly, with the same device. [ISDK-2321]
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.6.0-preview1 (December 3, 2018)

This release introduces new TVIVideoSource APIs as a replacement for TVIVideoCapturer. A Source is a producer of video content (such as frames from the Camera), and delivers that content to a Sink.

We have updated ReplayKitExample to use the TVIVideoSource APIs, and you can try this app today. We will be updating our other examples during the preview period.

As part of this transition we are deprecating the following classes, protocols, and methods:

  • TVICameraCapturer
  • TVICameraCapturerDelegate
  • TVILocalVideoTrack.capturer
  • TVILocalVideoTrack.constraints
  • TVILocalVideoTrack.trackWithCapturer:
  • TVILocalVideoTrack.trackWithCapturer:enabled:constraints:name:
  • TVIVideoCapturer
  • TVIVideoCaptureConsumer
  • TVIVideoConstraints
  • TVIVideoConstraintsBuilder

The existing TVIVideoCapturer APIs will continue to function until the next major release of our SDK. The following replacement APIs are now available in this preview:

  • TVICameraSource
  • TVICameraSourceDelegate
  • TVILocalVideoTrack.trackWithSource:
  • TVILocalVideoTrack.trackWithSource:enabled:name:
  • TVIVideoSource
  • TVIVideoSink

改善点

  • It is possible to produce video from the camera in any aspect ratio using TVICameraSource and [TVIVideoSource requestOutputFormat:]. For example, you can now stream square 480x480 video for multi-party conferencing scenarios.
  • The H.264 encoding pipeline can now use hardware acceleration for cropping (in addition to scaling) when a TVIVideoSource is used.

バグ修正

  • Cropping a TVIVideoFrame to produce an I420 buffer (suitable for VP8 and VP9 encoding) no longer stretches the source image.

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Crash when downscaling RGB32 images tagged with TVIVideoOrientationDown. [ISDK-2307]
  • TVIVideoSink.sourceRequirements is not populated after calling TVIVideoSink.onFormatRequest(). [ISDK-2309]
  • Output format requests only support cropping and scaling, and can't drop frames to hit a target frame rate. [ISDK-2264]
  • The signaling connection may not recover after a network handover. [CSDK-2623]
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • When iphone is locked, if user connects to a group Room by answering an incoming call request on CallKit UI, the phone gets disconnected from Room after 90 seconds. #29

2.5.6 (December 5, 2018)

バグ修正

  • Fixed a bug where the signaling connection would not recover after a network handover. [CSDK-2623]
  • Fixed a bug where the SDK might close the signaling connection after connecting to a Group Room using CallKit when the application is backgrounded. #29

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.5.5 (November 28, 2018)

バグ修正

  • Resolved an issue where TVIVideoView could display video which was rotated incorrectly on an iPhone XS, iPhone XS Max, or iPhone XR running iOS 12.1. #326
  • Resolved an issue where switching cameras on an iPhone XS, iPhone XS Max, or iPhone XR running iOS 12.1 could cause the application to hang. [ISDK-2268]

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The signaling connection may not recover after a network handover. [CSDK-2623]
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • When iphone is locked, if user connects to a group Room by answering an incoming call request on CallKit UI, the phone gets disconnected from Room after 90 seconds. #29

2.5.4 (November 26, 2018)

改善点

  • Improved the detection of, and recovery from media connection failures. Worst case recovery times have been reduced by up to 10 seconds.
  • Removed forced ICE restarts after a signaling connection handover. Superfluous ICE restarts use up resources, create extra signaling traffic, and involve an extra round trip time to re-establish ice connection.
  • Chooses a lower cost network for media traffic when one becomes available. For eg., when a call is originally on LTE and Wifi becomes available, media traffic is moved to the Wifi network.

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • TVIVideoView can display video which is rotated incorrectly on an iPhone XS, iPhone XS Max, or iPhone XR running iOS 12.1. #326
  • The signaling connection may not recover after a network handover. [CSDK-2623]
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • When iphone is locked, if user connects to a group Room by answering an incoming call request on CallKit UI, the phone gets disconnected from Room after 90 seconds. #29

2.5.3 (October 18, 2018)

改善点

  • Reduced signaling traffic in Group Rooms when communicating with an ICE-lite agent.

バグ修正

  • Fixed a bug where the Client could send additional ICE candidates after signaling the end of candidates, or mark candidates with a username from a future offer.
  • Made the reliance on MetalKit.framework optional so apps consuming TwilioVideo.framework can be run in an iOS 9.x simulator. #130 [ISDK-2207]
  • Fixed a crash in rendering a disabled TVILocalVideoTrack using OpenGL renderer. [ISDK-2211]

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The signaling connection may not recover after a network handover. [CSDK-2623]
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.5.2 (October 8, 2018)

改善点

  • TwilioVideo is now built and distributed as both a dynamic framework, TwilioVideo, and a static library, libTwilioVideo.a. The static library is not available as a Carthage or Cocoapoads dependency and is only available as a manual download from the Video iOS Releases page.

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.5.1 (October 4, 2018)

バグ修正

  • Fixed a crash that occurs when disabling a TVILocalVideoTrack published with the H.264 codec. [ISDK-2210] #308

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.5.0 (September 27, 2018)

API の変更点

  • We have deprecated the usage of TVIScreenCapturer on iOS 12.0 and above, due to performance issues on some device and UIView combinations. We recommend that anyone who is interested in sharing their screen use ReplayKit, along with a custom TVIVideoCapturer instead. We are putting the finishing touches on a new ReplayKit example app. #303

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • A crash occurs when disabling a TVILocalVideoTrack published with the H.264 codec. [ISDK-2210] #308

2.4.1 (September 21, 2018)

バグ修正

  • Fixed a crash which might occur during teardown when signaling::PeerConnectionSignaling processes a close message.
  • Fixed a potential crash caused by a memory corruption when a custom audio device is created. [ISDK-2176]
  • Fixed a crash that occurs when WebRTC fails to create local session description.
  • Fixed a crash that might occur when session description callbacks arrive from WebRTC after we have destroyed the PeerConnection instance.

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • A crash occurs when disabling a TVILocalVideoTrack published with the H.264 codec. [ISDK-2210] #308

2.4.0 (August 28, 2018)

改善点

  • TwilioVideo.framework is now built with Xcode 9.4.1.
  • When a Room is completed via the REST API, connected Clients will now receive a [TVIRoomDelegate room:didDisconnectWithError:] callback with the error code TVIErrorRoomRoomCompletedError.
  • The signaling Client has been updated to support version 2 of the Room Signaling Protocol (RSP). Clients can now recover when a Group Room is transitioned to a new Media Server.
  • Added a softwareAecEnabled property to TVIAudioOptions to use the software acoustic echo cancellation.
  • We have defined several new error codes:
    • TVIErrorRoomSubscriptionOperationNotSupportedError
    • TVIErrorRoomRoomCompletedError
    • TVIErrorTrackServerTrackCapacityReachedError
  • TwilioVideo.framework now uses C++14 internally.
  • Introduced a safer threading model in the signaling layer that prevents occasional crashes and missing Track subscription events.
  • The SDK no longer waits for pending events when closing a PeerConnection speeding up the teardown process.
  • Added ECS debugging support at the signaling layer that will help in troublshooting ice server related issues.

バグ修正

  • The signaling Client is more lenient when encountering unexpected RSP messages.
  • Fixed a rare crash when TVIRoom is destroyed while fetching ICE servers. [CSDK-2499]
  • Resolved a scenario where an ICE restart could be ignored after experiencing signaling glare.

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • A crash occurs when WebRTC fails to create local session description.
  • A crash might occur when session description callbacks arrive from WebRTC after we have destroyed the PeerConnection instance.
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • A crash occurs when disabling a TVILocalVideoTrack published with the H.264 codec. [ISDK-2210] #308

2.3.0 (August 7, 2018)

We have promoted 2.3.0-preview2 to 2.3.0. This release is based on WebRTC 67 and also resolves conflicts when using Twilio Video alongside other WebRTC based dependencies.

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • A crash occurs when disabling a TVILocalVideoTrack published with the H.264 codec. [ISDK-2210] #308

2.3.0-preview2 (August 2, 2018)

機能

  • Objective-C classes in WebRTC are prefixed with TVI. It is now possible to use the Video SDK side by side with any other Chromium WebRTC based dependency in the same application.

API の変更点

  • Deprecated the usage of TVIVideoRenderingType.OpenGLES on iOS 12.0+ to match Apple's deprecation notice for OpenGLES.framework.

バグ修正

  • The TVIVideoRenderingType.OpenGLES renderer doesn't display i420, and y420 frames produced by a TVIVideoCapturer. [ISDK-2078]
  • Retry failed ICE Server requests up to TVIIceOptions.iceServersTimeout to increase reliability.
  • Fixed a crash which could occur when AVAudioSession.inputNumberOfChannels == 0 and TVIDefaultAudioDevice is used. [ISDK-2143]
  • TVIDefaultAudioDevice no longer overrides AVAudioSession.preferredInputNumberOfChannels and AVAudioSession.preferredOutputNumberOfChannels after executing your block. The default block has also been updated to set channel preferences.
  • App extensions are supported with H.264 codecs.

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The TVIVideoRenderingType.OpenGLES renderer is not supported in app extensions. [ISDK-2159]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • A crash occurs when disabling a TVILocalVideoTrack published with the H.264 codec. [ISDK-2210] #308

2.3.0-preview1 (June 29, 2018)

改善点

  • This release is based on Chromium WebRTC 67.
  • TVIAVAudioSessionConfigurationBlock now configures AVAudioSession.preferredIOBufferDuration to 20 milliseconds by default, to match changes in WebRTC.
  • We have enabled multi-threaded VP8 encoding when the device has 3 or more CPU cores and the output size is greater than 640x480.

API の変更点

  • Deprecated the TVIAudioOptions.levelControl and TVIAudioOptions.levelControlInitialPeakLevelDBFS properties as they are no longer supported in Chromium WebRTC 67.
  • Opus audio is now decoded in mono, which can be seen when attaching a TVIAudioSink to a TVIRemoteAudioTrack.

バグ修正

  • Fixed a crash which might occur when processing the stats reports when calling [TVIRoom getStatsWithBlock:].
  • A subscriber may not send a keyframe request to the publisher when it initially subscribes to an H.264 encoded Track in a Group Room. [CSDK-2034]
  • The SDK is compatible with Firefox 63+ in a Peer-to-Peer Room. #35

既知の問題

  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The TVIVideoRenderingTypeOpenGLES renderer doesn't display i420, and y420 frames produced by a TVIVideoCapturer. [ISDK-2078]
  • A crash might occur when AVAudioSession.inputNumberOfChannels == 0 and TVIDefaultAudioDevice is used. [ISDK-2143]
  • App extensions may not be supported yet. [ISDK-2047]
  • The Video SDK may call UIApplication APIs from a background thread. [ISDK-2051]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded. #17
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • A crash occurs when disabling a TVILocalVideoTrack published with the H.264 codec. [ISDK-2210] #308

2.2.2 (July 25, 2018)

改善点

  • Clarified the header docs for TVIVideoViewDelegate.
  • Updated certificate bundle to include "Starfield Class 2 CA" and "Starfield Services Root Certificate Authority - G2" using release-2.0.0 of cert-bundle.

バグ修正

  • Fixed a crash which might occur when processing the stats reports when calling [TVIRoom getStatsWithBlock:].
  • Retry failed ICE Server requests up to TVIIceOptions.iceServersTimeout to increase reliability.
  • Fixed a memory leak which could occur after creating SDPs.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.2.1 (June 20, 2018)

改善点

  • Refactored internal signaling reachability events, which reduced thread hops on Apple platforms.
  • Increased the signaling disconnect timeout interval to 7 seconds when a network connection is available.

バグ修正

  • A timer overflow could cause events to occur sooner than expected.
  • Fixed a bug that caused disconnected responses to be dropped and delayed [TVIRoomDelegate room:didDisconnectWithError:] callbacks by up to 1 second.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • A crash may occur when processing the stats reports when calling [TVIRoom getStatsWithBlock:].
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.2.0 (June 7, 2018)

改善点

  • TVIRoom's delegate property is no longer read only. #13
  • When invalidating TVIVideoView, the black frame is rendered synchronously rather than on the next vsync.

バグ修正

  • Corrected the @return documentation for the [TwilioVideo connectWithOptions:delegate:] method. #14
  • Fixed a bug where [TVIVp8Codec isEqual:] returned YES when TVIVp8Codec.isSimulcast did not match.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • A crash may occur when processing the stats reports when calling [TVIRoom getStatsWithBlock:].
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.1.0 (May 25, 2018)

改善点

  • TwilioVideo.framework is now built with the Xcode 9.3 toolchain.
  • Improved thread safety when accessing the TVIVideoRenderer collection in TVIVideoTrack.
  • Added an initializer to TVIVp8Codec to enable simulcast. 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.
  • Fixed an issue where the aspect ratio in TVIVideoView could be incorrect. #266
  • Added two new properties to TVIIceOptions to control how ICE servers are fetched.
  • abortOnIceServersTimeout- Require ICE server fetching to complete, and disallow the use of default STUN servers if the request fails.
  • iceServersTimeout - A custom timeout to use when fetching ICE servers.

バグ修正

  • Fixed a bug where the SDK could crash when unsubscribing from a TVIRemoteDataTrack and disconnecting from a Room at the same time.
  • Fixed a rare crash that occurs during PeerConnectionSignaling teardown.
  • Fixed an issue in PeerConnectionSignaling which could cause DTLS roles to be negotiated incorrectly in a multi-party Peer-to-Peer Room.
  • Fixed build configuration to reduce file size of libtwilio-video for Darwin and iOS.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.0.1 (May 4, 2018)

機能

  • TVIVideoView now uses MTKView from MetalKit.framework when Metal rendering is selected.

バグ修正

  • Resolved a rare crash involving TVIVideoView and an internal class named TVIDisplayLinkTimer when Metal rendering is used.
  • Fixed a bug where the SDK could invoke UIView APIs on a background thread while invalidating a TVIVideoView.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The aspect ratio in TVIVideoView could be incorrect. #266
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.0.0 (April 26, 2018)

This is our first Generally Available (GA) 2.0 release.

Thank you for the feedback that you've provided on our preview and beta releases. This version includes some minor API changes around TVIVideoFrame and TVIVideoRenderer / TVIVideoView reuse, but otherwise is very similar to 2.0.0-beta4.

機能

  • TVIVideoFrame.timestamp now uses CMTime instead of int64_t (in microseconds). We've found that developers writing custom TVIVideoCapturers are sometimes confused at having to convert time into microseconds. Furthermore, this conversion can be a destructive operation which causes the original timescale to be lost. For those working with CFTimeInterval we've also added an initializer which accepts this argument. The following code snippet demonstrates how to modify your capture logic when dealing with a source which produces CMSampleBuffers.
// Before
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
    CMTime presentationTimestamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
    int64_t timestamp = (int64_t)(CMTimeGetSeconds( presentationTimestamp ) * INT64_C( 1000000 ));
    TVIVideoFrame *frame = [[TVIVideoFrame alloc] initWithTimestamp:timestamp
                                                             buffer:CMSampleBufferGetImageBuffer( sampleBuffer )
                                                        orientation:TVIVideoOrientationUp];

    [_captureConsumer consumeCapturedFrame:frame];
}
// After
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
    CMTime timestamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
    TVIVideoFrame *frame = [[TVIVideoFrame alloc] initWithTimestamp:timestamp
                                                             buffer:CMSampleBufferGetImageBuffer( sampleBuffer )
                                                        orientation:TVIVideoOrientationUp];

    [_captureConsumer consumeCapturedFrame:frame];
}
  • TVIVideoFrame initializers are now marked as nullable instead of null_unspecified.
  • Added the optional invalidateRenderer method to the TVIVideoRenderer protocol. This method, if implemented, will be invoked when a TVIVideoRenderer object is removed from a video track by calling the [TVIVideoTrack removeRenderer:] method. This method allows the TVIVideoRenderer to perform any necessary cleanup that is required, for instance when the TVIVideoRender is to be reused with a different video track.
  • TVIVideoView implements the invalidateRenderer protocol method and will now better support reusing the view between different video tracks. #240 Now, when a TVIVideoView is removed as a renderer for a video track, the following will occur:
  • A black frame is rendered to the view to clear the last frame and then the view is resized back to its original internal dimensions.
  • The hasVideoData flag is reset. This will allow the [TVIVideoViewDelegate videoViewDidReceiveData:] method to be fired again when new video data arrives.
  • The videoDimensions, videoOrientation, viewShouldRotateContent and mirror properties are reset to their respective default values.

バグ修正

  • The H.264 encoder now supports inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The Video SDK could invoke UIView APIs on a background thread while invalidating a TVIVideoView.
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.0.0-beta4 (April 10, 2018)

機能

  • Added a framesEncoded stats field to TVILocalVideoTrackStats.
  • Removed trackId from TVIBaseTrackStats. trackSid can be used to identify track stats in a TVIStatsReport.
  • Removed trackId from TVILocalAudioTrack, TVILocalDataTrack, and TVILocalVideoTrack. trackSid or name can be used to identify local tracks.
  • Added TVIRemoteAudioTrack.sid, TVIRemoteVideoTrack.sid and TVIRemoteDataTrack.sid properties.
  • Replaced TVIAudioCodec enumeration with TVIAudioCodec, TVIG722Codec, TVIIsacCodec, TVIOpusCodec, TVIPcmaCodec and TVIPcmuCodec classes.
  • Replaced TVIVideoCodec enumeration with TVIH264Codec, TVIVp8Codec and TVIVp9Codec classes.

改善点

  • Simplified the internal process for retrieving ice servers and resolving outbound DNS.
  • The media engine now uses a dedicated thread for networking operations.
  • 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.

バグ修正

  • Fixed an issue where [TVIRoomDelegate room:didDisconnectWithError:] was not raised for connected Participants when a Room is completed via the REST API.
  • Fixed an issue where the value of [TVIRoom hash] could change between the time a TVIRoom object is created and when it connects. This issue could cause issues when the TVIRoom object was stored in a collection.
  • Quieted unnecessary warning logs when preferring codecs.
  • Fixed an issue where application thread would block up to 30 seconds when connecting to and destroying a TVIRoom in bad network conditions.
  • Fixed a bug where [TVIRoomDelegate room:didDisconnectWithError:] was not getting invoked due to a race condition between a network handover and a user initiated [TVIRoom disconnect] call. #235
  • ICE URIs using the turns scheme are now supported. The SDK will now use turns by default if turn is enabled for your Room.
  • ICE URIs using the stuns scheme are now supported.
  • Resolved a condition where ICE candidates might not be applied in Peer-to-Peer Rooms.
  • 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.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.0.0-beta3 (March 21, 2018)

改善点

  • Added the functions TVIAudioSessionActivated() and TVIAudioSessionDeactivated() to support backgrounding for custom TVIAudioDevices. [ISDK-1842]
  • Removed the reconnectAfterReturningToForeground property from TVIConnectOptions and TVIConnectOptionsBuilder. The SDK will continue to support the default behavior of terminating signaling connections when AVAudioSession is inactive and the app is backgrounded.

バグ修正

  • Fixed a bug where TVIDefaultAudioDevice was not able to play or record audio if the user joins a Room with a bluetooth device. #236
  • Resolved a deadlock in TVIAudioDevice which could occur while invoking TVIAudioDeviceFormatChanged().

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.0.0-beta2 (February 27, 2018)

改善点

  • TVIAudioDeviceExecuteWorkerBlock executes the supplied block asynchronously.

バグ修正

  • Audio is not resumed for Alice if Alice is connected to a Room and receives an incoming cellular call and the caller cancels the call (iOS 9.x).
  • Resolved an issue where the device model was being incorrectly reported to Insights.
  • Improved thread safety while executing TVIAudioDeviceFormatChanged and TVIAudioDeviceExecuteWorkerBlock. It should no longer be possible for these functions to access an invalid TVIAudioDeviceContext.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • TVIDefaultAudioDevice is not able to play or record audio if the user joins a Room with a bluetooth device. #236
  • The signaling connection is closed upon entering the background when an audio device besides TVIDefaultAudioDevice is used in a Room. [ISDK-1842]
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.0.0-beta1 (February 7, 2018)

This release is focused on enabling more advanced audio use cases in Twilio Video. In the past you've been able to use TVIAudioSink to access raw audio samples from a TVIAudioTrack. However, these APIs did not allow developers to control the mechanism by which audio is captured and rendered in a Room.

We're now pleased to introduce TVIAudioDevice. This protocol works in concert with TVIAudioSink, giving you the ability to replace TVIDefaultAudioDevice. By implementing the TVIAudioDevice protocol, you can write your own audio capturer to feed audio samples to the Video SDK and an audio renderer to receive the remote Participant's audio samples. For example, you could integrate with ReplayKit2 and capture application audio for broadcast or play music using AVAssetReader.

See AudioDeviceExample which uses a custom Audio Device with CoreAudio to play the remote Participant's stereo audio. In the future, we will add more AudioDevices to the repo.

Please note, if you are providing your own custom audio device, it is necessary to support audio capturing in order to create an instance of TVILocalAudioTrack. Also, if the supplied audio device does not support audio rendering then the you will not be able to receive any audio samples via TVIAudioSink.

改善点

  • Added the ability to provide your own audio capturing and rendering via the TVIAudioDevice protocol. As a part of this change we've also added TVIAudioFormat which describes audio that is being captured and rendered.
  • Introduced TwilioVideo.audioDevice class property, and removed TVIConnectOptions.audioDevice. You should set your audio device on TwilioVideo before performing any other actions with the SDK such as creating Tracks or connecting to a Room.
  • The class factory methods for TVILocalAudioTrack and TVILocalDataTrack now return nullable instances.

バグ修正

  • TVIDefaultAudioDevice is not able to play or record audio after an AVAudioSessionInterruptionNotification is triggered. #221

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • TVIDefaultAudioDevice is not able to play or record audio if the user joins a Room with a bluetooth device. #236
  • The signaling connection is closed upon entering the background when an audio device besides TVIDefaultAudioDevice is used in a Room. [ISDK-1842]
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99

2.0.0-preview9 (January 19, 2018)

改善点

  • Our C++ core library is now built with the Xcode 9.1 toolchain (matching video-ios).

バグ修正

  • Clarified header docs for [TVIRoomDelegate room:didFailToConnectWithError:], [TVIRoomDelegate roomDidStartRecording:] and [TVIRoomDelegate roomDidStopRecording:].
  • Don't publish Ice Candidate stats unless an active pair is present.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • TVIDefaultAudioDevice is not able to play or record audio if the user joins a Room with a bluetooth device. #236
  • TVIDefaultAudioDevice is not able to play or record audio after an AVAudioSessionInterruptionNotification is triggered. #221
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayerオーディオコンテントがRoomオーディオと正しくミックスされません。 #62

2.0.0-preview8 (January 9, 2018)

As of this release we are removing support for iOS 8 and raising our minimum target to iOS 9.0. Twilio Video 1.x releases will continue to support iOS 8.1 and later.

改善点

  • [TVICameraCapturerDelegate cameraCapturerWasInterrupted:reason:] now uses AVCaptureSessionInterruptionReason instead of TVICameraCapturerInterruptionReason.
  • Added subscription failure callbacks to TVIRemoteParticipantDelegate.
    • failedToSubscribeToAudioTrack:error:forParticipant:
    • failedToSubscribeToDataTrack:error:forParticipant:
    • failedToSubscribeToVideoTrack:error:forParticipant:
  • This release deprecates TVIAudioController and adds a new TVIDefaultAudioDevice class. The TVIDefaultAudioDevice class allows you to record and playback audio and allows to configure AVAudioSession when you are connected to a Room.
  • TVIAudioController.startAudio() and TVIAudioController.stopAudio() have been removed in favor of a new property called TVIDefaultAudioDevice.enabled. This property provides developers with a mechanism to enable or disable the activation of the audio device prior to connecting to a Room or to stop or start the audio device while you are already connected to a Room. A Room can now be connected without activating the audio device by setting TVIDefaultAudioDevice.enabled to NO and can be enabled during the lifecycle of the Room by setting TVIDefaultAudioDevice.enabled to YES. The default value is YES. This API change was made to ensure full compatibility with CallKit as well as supporting other use cases where developers may need to disable the audio device during a call.
  • TVIDefaultAudioDevice can be provided to TVIConnectOptions while connecting to a Room.
  • TVIRoom has a new property audioDevice which points to the audio device used by the Room.

Examples #1 - Changing the audio route from speaker to receiver in a live call:

TVIDefaultAudioDevice *audioDevice = [TVIDefaultAudioDevice audioDevice];

//...connect to a Room with audioDevice. By default the audio route will be configured to speaker.

room.audioDevice.block =  ^ {
    // We will execute `kDefaultAVAudioSessionConfigurationBlock` first.
    kDefaultAVAudioSessionConfigurationBlock();

    // Overwrite the audio route
    AVAudioSession *session = [AVAudioSession sharedInstance];
    NSError *error = nil;
    if (![session setMode:AVAudioSessionModeVoiceChat error:&error]) {
        NSLog(@"AVAudiosession setMode %@",error);
    }

    if (![session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error]) {
        NSLog(@"AVAudiosession overrideOutputAudioPort %@",error);
    }
};
room.audioDevice.block();

Example #2 - Connecting to a Room using the AVAudioSessionCategoryPlayback category:

TVIDefaultAudioDevice *audioDevice = [TVIDefaultAudioDevice audioDeviceWithBlock:^ {

    // Execute the `kDefaultAVAudioSessionConfigurationBlock` first.
    kDefaultAVAudioSessionConfigurationBlock();

    // Overwrite the category to `playback`
    AVAudioSession *session = [AVAudioSession sharedInstance];
    NSError *error = nil;
    if (![session setCategory:AVAudioSessionCategoryPlayback
                         mode:AVAudioSessionModeVideoChat
                      options:AVAudioSessionCategoryOptionAllowBluetooth
                        error:&error]) {
        NSLog(@"AVAudioSession setCategory:options:mode:error: %@",error);
    }
}];

TVIConnectOptions *connectOptions = [TVIConnectOptions optionsWithToken:token
                                                                  block:^(TVIConnectOptionsBuilder *builder) {
                                                                builder.audioDevice = audioDevice;
                                                            }];

TVIRoom *room = [TwilioVideo connectWithOptions: connectOptions]
  • Our C++ core library is now built with the Xcode 9.0 toolchain.
  • Added several properties to TVIIceCandidatePairStats
    • activeCandidatePair - indicates if the candidate pair is active.
    • localCandidateIp - the IP address of the local candidate associated with this candidate pair.
    • remoteCandidateIp - the IP address of the remote candidate associated with this candidate pair.
    • relayProtocol - the relay protocol

バグ修正

  • TVICameraCapturer.init() is now annotated as null_unspecified instead of inheriting from NSObject.init() to match other initializers. [ISDK-1728]
  • Fixed a potential crash when connecting to Group Rooms and publishing Audio, Video and Data Tracks.
  • Fixed a crash which could occur in the signaling layer when disconnecting from a Room while receiving messages.
  • Resolved a multi-threading issue where TVIRemoteParticipantDelegate callbacks could be missed leading to [TVIRemoteParticipant unsubscribedFrom*Track:publication:forParticipant:] events raised when the underlying C++ core track is nullptr.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • TVIDefaultAudioDevice is not able to play or record audio if the user joins a Room with a bluetooth device. #236
  • TVIDefaultAudioDevice is not able to play or record audio after an AVAudioSessionInterruptionNotification is triggered. #221
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayerオーディオコンテントがRoomオーディオと正しくミックスされません。 #62

2.0.0-preview7 (November 9, 2017)

改善点

  • TwilioVideo.framework is now built with Xcode 9.1.

バグ修正

  • TVIAudioSink now pre-allocates buffers used on a real-time CoreAudio thread. #104 [ISDK-1412]
  • The name parameter has been removed from the TVILocalDataTrack trackWithOptions:name: method. Track names can now be provided in the TVIDataTrackOptions object. [ISDK-1708]
  • TVITrackPublications track property now returns nil from within the unsubscribedFrom*Track:publication:forParticipant: callback invocation. [ISDK-1710]
  • Fixed a potential crash when publishing or unpublishing a Data Track. [CSDK-1934]

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayerオーディオコンテントがRoomオーディオと正しくミックスされません。 #62

2.0.0-preview6 (November 3, 2017)

機能

  • Data tracks are now supported in both Peer-to-Peer and Group Rooms.
  • The following delegate methods were added to TVILocalParticipantDelegate. [ISDK-1625]
    • localParticipant:failedToPublishAudioTrack:withError:
    • localParticipant:failedToPublishDataTrack:withError:
    • localParticipant:failedToPublishVideoTrack:withError:

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayerオーディオコンテントがRoomオーディオと正しくミックスされません。 #62
  • TVIAudioSink should pre-allocate buffers used on a real-time CoreAudio thread. #104 [ISDK-1412]

2.0.0-preview5 (October 23, 2017)

機能

  • Added new TVIDataTrack API. A data track represents a unidirectional source that allows sharing string and binary data with all Participants in a Room. Data tracks function similarly to audio and video tracks and can be provided via TVIConnectOptions and published using [TVILocalParticipant publishDataTrack:]. Messages sent on the data track are not guaranteed to be delivered to all the Participants. Data tracks are currently supported in Peer-to-Peer Rooms only. The following snippets demonstrate how to send and receive messages with data tracks.

右記のものを作成する - TVILocalDataTrack

TVILocalDataTrack *localDataTrack = [TVILocalDataTrack track];

Connecting to a Room with a TVILocalDataTrack

TVIConnectOptions *connectOptions = [TVIConnectOptions optionsWithToken:accessToken
                                                                  block:^(TVIConnectOptionsBuilder *builder) {
                                                                          builder.dataTracks = @[localDataTrack];
                                                                  }];

TVIRoom *room = [TwilioVideo connectWithOptions:connectOptions delegate:self];

Publishing a TVILocalDataTrack

// ... Connected to room
TVILocalParticipant *localParticipant = room.localParticipant;

[localParticipant publishDataTrack:dataTrack];

Observing TVIRemoteDataTrackPublication and TVIRemoteDataTrack on TVIRemoteParticipantDelegate

@interface MyClass : NSObject <TVIRemoteParticipantDelegate> 

// Participant has published data track
- (void)remoteParticipant:(nonnull TVIRemoteParticipant *)participant 
       publishedDataTrack:(nonnull TVIRemoteDataTrackPublication *)publication;


// Participant has unpublished data track
- (void)remoteParticipant:(nonnull TVIRemoteParticipant *)participant 
     unpublishedDataTrack:(nonnull TVIRemoteDataTrackPublication *)publication;

// Data track has been subscribed to and messages can be observed.
- (void)subscribedToDataTrack:(nonnull TVIRemoteDataTrack *)dataTrack
                  publication:(nonnull TVIRemoteDataTrackPublication *)publication
               forParticipant:(nonnull TVIRemoteParticipant *)participant;

// Data track has been unsubsubscribed from and messages cannot be observed.
- (void)unsubscribedFromDataTrack:(nonnull TVIRemoteDataTrack *)dataTrack
                      publication:(nonnull TVIRemoteDataTrackPublication *)publication
                   forParticipant:(nonnull TVIRemoteParticipant *)participant;
@end

Sending messages on TVILocalDataTrack

NSString *message = @"Hello DataTrack!";
[localDataTrack sendString:message];

NSData *messageBuffer = [NSData dataWithBytes:bytes length:length];
[localDataTrack sendData:messageBuffer];

Observing messages from data track

@interface MyClass : NSObject <TVIRemoteDataTrackDelegate> 

- (void)remoteDataTrack:(nonnull TVIRemoteDataTrack *)remoteDataTrack didReceiveString:(nonnull NSString *)message;

- (void)remoteDataTrack:(nonnull TVIRemoteDataTrack *)remoteDataTrack didReceiveData:(nonnull NSData *)message;

@end

バグ修正

  • The H.264 decoder explicitly requests Metal compatibility on 64-bit devices. [ISDK-1464]
  • Codec preferences now function correctly in a hybrid codec Group Room. [CSDK-1733]
  • TVIAudioSinks added to a TVILocalAudioTrack now raise callbacks. Audio recording does not start until you join an empty Group Room or a Peer-to-Peer Room with one or more Participants. #104

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • 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]
  • Data tracks are only supported in Peer-to-Peer Rooms. [VIDEO-827]
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayerオーディオコンテントがRoomオーディオと正しくミックスされません。 #62
  • TVIAudioSink should pre-allocate buffers used on a real-time CoreAudio thread. #104 [ISDK-1412]

2.0.0-preview4 (September 22, 2017)

機能

  • TVIBaseTrackStatstrackSidプロパティーを追加しました。
  • The trackId, ssrc and codec properties in TVIBaseTrackStats are now annotated as nonnull.

バグ修正

  • TVIAudioCodecPCMU, TVIAudioCodecPCMA and TVIAudioCodecG722 operate at 64 kbps. Setting a maximum bitrate for these codecs no longer results in a loss of audio and video.
  • Setting an incorrect maximum bitrate for TVIAudioCodecISAC no longer results in a crash.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayerオーディオコンテントがRoomオーディオと正しくミックスされません。 #62
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104
  • Codec preferences do not function correctly in a hybrid codec Group Room. [CSDK-1733]
  • 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]
  • Network handoff failure may occur if signaling connection loss is detected before the SCNetworkReachability callback is invoked.

2.0.0-preview3 (September 19, 2017)

バグ修正

  • The H.264 codec invokes UIApplication APIs from a background thread. [ISDK-1494]
  • H.264 frames can not be encoded or decoded while the application is foregrounded, but inactive. [ISDK-1495, ISDK-1496]
  • Resolved a deadlock in VTDecompressionSessionInvalidate which could occur on iOS 11.0 when receiving H.264 video. [ISDK-1502]

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayerオーディオコンテントがRoomオーディオと正しくミックスされません。 #62
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104
  • TVIAudioCodecPCMU, TVIAudioCodecPCMA and TVIAudioCodecG722 operate at 64 kbps. Setting a maximum bitrate for these codecs results in a loss of audio and video.
  • Setting a maximum bitrate for TVIAudioCodecISAC results in a crash.
  • Codec preferences do not function correctly in a hybrid codec Group Room. [CSDK-1733]
  • 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]
  • Network handoff failure may occur if signaling connection loss is detected before the SCNetworkReachability callback is invoked.

2.0.0-preview2 (September 12, 2017)

バグ修正

  • Resolved a potential crash when unpublishing Tracks right before disconnecting from a Room.
  • Fixed some properties which were missed during docs generation.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • The H.264 codec invokes UIApplication APIs from a background thread. [ISDK-1494]
  • H.264 frames can not be encoded or decoded while the application is foregrounded, but inactive. [ISDK-1495, ISDK-1496]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayerオーディオコンテントがRoomオーディオと正しくミックスされません。 #62
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104
  • TVIAudioCodecPCMU, TVIAudioCodecPCMA and TVIAudioCodecG722 operate at 64 kbps. Setting a maximum bitrate for these codecs results in a loss of audio and video.
  • Setting a maximum bitrate for TVIAudioCodecISAC results in a crash.
  • Codec preferences do not function correctly in a hybrid codec Group Room. [CSDK-1733]
  • 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]
  • Network handoff failure may occur if signaling connection loss is detected before the SCNetworkReachability callback is invoked.

2.0.0-preview1 (September 11, 2017)

Our first 2.0 preview release delivers several important features including:

  • Support for the H.264 video codec.
  • Audio and video codec selection including iSAC, VP9 and more.
  • Sender side bandwidth controls.
  • Tracks can be named, and are assigned Server identifiers (SIDs).
  • A new object model which separates Track media and signaling, paving the way for selective subscription controls.

The full list of changes is:

  • Added TVIRemoteAudioTrack and TVIRemoteVideoTrack. These new classes are derived from TVIAudioTrack and TVIVideoTrack respectively. They have following common properties:
    • sid - Returns a unique identifier for the Track within the scope of a Room
    • isSubscribed - Indicates if the TVILocalParticipant is receiving audio or video.
  • Added a playbackEnabled property to TVIRemoteAudioTrack which allows developers to mute the audio received from a remote Participant.
  • Migrated the functionality of TVIParticipant into a new class called TVIRemoteParticipant. TVILocalParticipant and TVIRemoteParticipant are now derived from TVIParticipant.
  • Renamed TVIParticipantDelegate to TVIRemoteParticipantDelegate and changed the delegate to return TVIRemoteParticipant, TVIRemoteAudioTrack, and TVIRemoteVideoTrack in callbacks.
  • Added the following methods to TVIRemoteParticipantDelegate:
    • subscribedToAudioTrack:forParticipant: - Audio will start flowing from a remote Participant's audio Track after receiving this event.
    • unsubscribedFromAudioTrack:forParticipant: - Audio will stop flowing from a remote Participant's audio Track after receiving this event.
    • subscribedToVideoTrack:forParticipant: - Video will start flowing from a remote Participant's video Track after receiving this event.
    • unsubscribedFromVideoTrack:forParticipant: - Video will stop flowing from a remote Participant's video Track after receiving this event.
  • Renamed TVITrackStats to TVIRemoteTrackStats, TVIAudioTrackStats to TVIRemoteAudioTrackStats and TVIVideoTrackStats to TVIRemoteVideoTrackStats
  • Added TVITrackPublication, TVIAudioTrackPublication and TVIVideoTrackPublication which represent the mapping between a Track and its server generated sid.
  • The audioTracks and videoTracks getters on TVIParticipant now return TVITrackPublications instead of TVITracks.
  • Added TVILocalAudioTrackPublication and TVILocalVideoTrackPublication to represent a published TVILocalAudioTrack and TVILocalVideoTrack. Track publication classes are derived from TVIAudioTrackPublication and TVIVideoTrackPublication respectively.
  • Renamed [TVILocalParticipant addAudioTrack:] and [TVILocalParticipant addVideoTrack:] to [TVILocalParticipant publishAudioTrack:] and [TVILocalParticipant publishVideoTrack:].
  • Added TVILocalParticipantDelegate which provides the following callbacks:
    • localParticipant:publishedAudioTrack: - Invoked when a local audio Track has been published to a Room.
    • localParticipant:publishedVideoTrack: - Invoked when a local video Track has been published to a Room.
  • Added localAudioTracks and localVideoTracks collections to TVILocalParticipant. These collections return TVILocalAudioTrackPublications and TVILocalVideoTrackPublications respectively.
  • Added a name property to TVITrack. Names can be assigned to a TVILocalAudioTrack and TVILocalVideoTrack using their class factory methods.
  • Removed the trackId property from TVITrack and moved it into TVILocalAudioTrack and TVILocalVideoTrack.
  • Added TVIAudioCodec and TVIVideoCodec as part of the new codec preferences API. Audio and video codec preferences can be set in TVIConnectOptions.
  • Added TVIRemoteAudioTrackPublication and TVIRemoteVideoTrackPublication to represent a remote Participant's published audio and video Tracks. Track publication classes are derived from TVIAudioTrackPublication and TVIVideoTrackPublication respectively.
  • Added TVIEncodingParameters which constrains how much bandwidth is used to share audio and video. This object has been added to TVIConnectOptions and can also be set on TVILocalParticipant after joining a Room.
  • Added support for the H.264 video codec in Peer-to-Peer and Group Rooms.

バグ修正

  • Fixed a potential crash when calling [TVIRoom disconnect:] before [TVIRoomDelegate didConnectToRoom:] is called and then destroying the TVIRoom in the [TVIRoomDelegate room:didDisconnectWithError:] callback.

既知の問題

  • The SDK is incompatible with Firefox 63+ in a Peer-to-Peer Room. #35
  • Unpublishing and republishing a TVILocalAudioTrack or TVILocalVideoTrack might not be seen by Participants. #34
  • The H.264 encoder does not support inputs in TVIPixelFormatYUV420PlanarFullRange or TVIPixelFormatYUV420PlanarVideoRange. [ISDK-1489]
  • The H.264 codec invokes UIApplication APIs from a background thread. [ISDK-1494]
  • H.264 frames can not be encoded or decoded while the application is foregrounded, but inactive. [ISDK-1495, ISDK-1496]
  • Typically, a maximum of three H.264 encoders can be used at once. When this limit is exceeded no errors are raised and new video Tracks are not encoded.
  • There is a potential crash when unpublishing Tracks right before disconnecting from a Room.
  • Participant disconnect event can take up to 120 seconds to occur. #99
  • AVPlayerオーディオコンテントがRoomオーディオと正しくミックスされません。 #62
  • TVIAudioSinks added to a TVILocalAudioTrack do not raise any callbacks. #104
  • TVIAudioCodecPCMU, TVIAudioCodecPCMA and TVIAudioCodecG722 operate at 64 kbps. Setting a maximum bitrate for these codecs results in a loss of audio and video.
  • Setting a maximum bitrate for TVIAudioCodecISAC results in a crash.
  • Codec preferences do not function correctly in a hybrid codec Group Room. [CSDK-1733]
  • 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]
  • Network handoff failure may occur if signaling signaling connection loss is detected before the SCNetworkReachability callback is invoked.
Rate this page:

ヘルプが必要ですか?

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.