- Examples: Signaling & TURN server urls have been updated
- CallApp: CallApp will now always use secure websockets by default
- CallApp: The app now uses the new FrameProcessor to convert platform specific formats into Unity Texture2D. Using I420p can reduced CPU overhead by moving some conversion to the GPU.
- New MediaConfig default values: sending Video and Audio is now off by default
- Improved logging. ICall/IMediaNetwork and peers now have a global ID to allow associating log messages with individual instances. Log messages are prefixed with “awrtc:”
- log level can now be set via SetLogLevel/SetNativeLogLevel
- Fixed misleading warning log & issue with dropping signaling messages that arrive after a call already successfully connects
- Removed various obsolete classes & method
- Improved error messages given by UnityCallFactory & websockets
- Removed .NET 3.5 backwards compatibility
- Added NetworkConfig.KeepSignalingAlive to keep the signaling connection active
- KeepSignalingAlive and IsConference=true now allows custom server side code to start & shutdown client side peers by connecting/disconnecting a signaling connection.
- ConnectionId’s for signaling and MediaNetwork connectionIds are the same now
- VideoInput: Shared API added for all supported platforms including WebGL
- VideoInput: Added information for use with HDR
- Native: CommonNetworkConfig can now be used to create Calls/MediaNetwork instances with custom signaling network / custom websocket timeouts
- Native: Several old create methods removed from the factory classes. Use the create methods that get NetworkConfig as argument instead.
- Native: Added codec settings in NativeMediaConfig(experimental) to priotize codecs or change other codec specific settings
- Native: NativeMediaConfig.AudioAccess (experimental): Can be used to request emiting AudioFrame events with raw PCM for each incoming connection
- Native: Proxy support added (experimental)
- WebGL: Added support for Screen Capture API. Enabled via Unity_Media_EnableScreenCapture(“Screen capture”)
- WebGL: Fixed memory leak if multiple streams are active in parallel that use the “Native” pixel format.
- WebGL: updated npm dependencies
- Android x64 support added
- Android: Removed all WebCamTexture references to ensure Unity does not automatically add the Camera permission if it is removed from the AndroidManifest.xml
- Android: Fixed a bug causing log message to be truncated
- Android: added proguard-user.txt with rules to ensure proguard doesn’t strip required java components
- iOS: Added workaround for hardware decoding issues with resolutions greater than 720p
- awrtc_borwser (experimental): Added an alternative peer configuration enabled via SINGLE_NEGOTIATION=true. It will allow setting up the peer for video & audio but allows enabling/disabling these without renegotiation
- ConferenceApp: Added randomly generated usernames to show how ICall.Send can be used to tell different users apart and keep a reference between username & ConnectionId
- Ice Restart (experimental) NetworkConfig.MaxIceRestart can be set to allow several reconnection attempts before a connection is treated as disconnected.
- Reconfigure (experimental): ICall/IMediaNetwork.Configure can now be called at run-time to change settings without reconnecting. This requires an active signaling connection (KeepSignalingAlive=true).
Category Archives: General
V0.9854
The version on the asset store has been updated to V0.9854. If you want to use WebRTC Video Chat with Unity 2021.2 make sure to update the asset to the latest version!
Note from now on the old iOS arm 32 bit devices are no longer supported (iPhone 5C and below) and iOS 12 or higher is required.
See Changelog for details.
V0.985
V0.985 is now available in the asset store. See Changelog for details.
iOS 14 issue
Update: This is now part of the latest asset store release and no manual changes are needed.
There is a new issue for iOS 14 under following conditions:
- Your app is designed for iOS & distributed publicly
- Your app is sending audio (accessing the microphone)
- Your app will stop calls during its lifetime but continue running for a longer time
In this case iOS might continue showing the microphone indicator light. This is due to an earlier iOS 13 hotfix to workaround a bug with older Unity versions that could cause a crash or audio to stop working if the audio layer is being shut down. By now the latest Unity 2018 LTS & Unity 2019 LTS version do not have this issue anymore.
You can deactivate the workaround by editing the UnityCallFactory.cs and replace the line
WebRtcCSharp.IosHelper.IosKeepAudioActive(true);
with
WebRtcCSharp.IosHelper.IosKeepAudioActive(false);
All future versions of the asset will contain this as well.
V0.9845
V0.9845 is now available in the asset store containing several bugfixes.
Changelog:
- Unity 2018.4.22f1
- WebGL: fix for Chrome 81 issues. Chrome 81 returns an invalid device ID if the user didn’t allow camera access yet. This could result in an overconstrained error
- WebGL: fixed issue that could cause some users not to disconnect correctly for conference calls
- Native: fixed an issue that can cause a connection to fail randomly even on a stable network
- Android: fixed an issue that could cause a crash randomly if the call is shutting down while the local camera was active
- Android: fixed an issue that could cause a delay in remote video playback
- iOS: Improved build pipeline to better support several Unity versions & better error messages
- Mac: signed & notarised + updated Info.plist for app store releases
- Cleanup log output
- Example apps are updated to use EnsureInit to allow them to run in WebGL without changes
- CallApp: the app will now keep the chat panel open if the call ends
- CallApp: fixed an issue that could make it difficult to shut down the app if the rejoin option is active & the system is offline
Patch for V0.9844 ready / new V0.9845
This fixes the following issues:
- Issues with camera access in Chrome 81. Chrome won’t return a list of video devices anymore until the user allows Camera access first. The list of video devices will now be available after the first call to ICall.Configure or IMediaNetwork.Configure and after the user pressed “Allow”
- Fix for some connections failing even with a stable network
- Android video delay issues on some devices
Download here Link removed. Please use the latest release from the asset store
Note that this is a nightly build and the mac version isn’t signed / notarised yet. The complete V0.9845 update will be released in the next few days.
WebRTC Video Chat V0.9844 for MacOS Catalina
The asset store version has been updated to include a signed and notarised version of the MacOS plugin. The asset should now load without warning in the newest Mac OS versions no matter how GateKeeper is configured.
win x86 hotfix V0.9843
The asset version has been updated to V0.9843. This version contains a rebuilt WebRTC binary for the windows 32 bit version . An apparent compiler bug could cause crashes during encoding of video frames in VP8 if the CPU supported AVX. Win 64 bit and other platforms were not effected.
As there were no other changes the returned version by the asset remains at V0.9841.
iOS13 hotfix
V0.9842 has been released with a hotfix for iOS13.
In iOS 13 the local video can fail to show up / being sent. The new iOS version changed the video format by adding a padding at the end of each row of pixels causing a 1280×720 image to be 1280×768 in memory. The new hotfix will remove this padding and make sure the C# side remains compatible to all earlier versions.
You can already get the new version in the Download Area while the asset store release is waiting for approval from Unity.
Update: The hotfix has now arrived in the asset store. Note that the unity asset version will be “V0.9842” but the log output will still return “V0.9841”
Heroku support added
The signaling server now supports running as heroku cloud app out of the box without any manual configuration. This also includes https/wss support for WebGL apps. The setup only takes a few minutes and works with the free plan!
To give it a try have a look at the signaling server – with heroku tutorial.