V0.982 released

The next version is now available in the Unity Asset Store. Here is the change log:

– Removed obsolete wrapper methods. Recent changes in WebRTC broke most of them
– Update to WebRTC 64 + switching to newer compiler versions (XCode 9, VS 2017, newer NDK)
– Cleanup of log calls
– ICall.SetMute / IsMute added to silence the local microphone on all platforms
– Added mute button in the CallApp
– added bool Send(string, bool, ConnectionId) to ICall and IBasicNetwork to support high throughput data transfer
– Rework of the frame delivery system. RawFrame is obsolete and will be replaced with IFrame (will be completed in V0.983)
– for testing: some platforms can deliver frames in i420p which reduces CPU load (see SimpleCall example)
– Added first changes to support direct access to some WebRTC functionality in the future
– Android supports native video now (camera 1 or camera 2 API depending on the device). The old camera system is deactivated by default.
– added AndroidHelper.IsFrontFacing / IsBackFacing. For all other platforms WebcamTexture.devices can be used for this.
– Android native plugin is bundled into an .aar file now. Unity will automatically include necessary changes for the AndroidManifest.xml
– Android comes with a java plugin now to support platform specific features in the future
– Android IL2CPP support has been added
– iOS plenty of bugfixes and performance improvements
– iOS comes with an Objective C plugin now to support platform specific features in the future
– WebGL version updated to use newer API calls
– WebGL fixed several bugs related to various image resolutions / rotated images received from mobile phones
– Bugfix: using invalid device names could cause crashes on some platforms
– Bugfix: Video shouldn’t stop anymore if the scene is changed on Android
– Bugfix: Fixed problems with the loud speaker mode for iOS device
– Bugfix: multi-threading issues / stalling on shutdown or startup

 

0.981 is ready

Here is the changelog:

  • Documentation updated. Please visit https://www.because-why-not.com/webrtc to find out more
  • Tutorials for signaling server & stun/turn server setup added: https://www.because-why-not.com/webrtc/tutorials-server-side/
  • ICall received new methods to send String & byte[] to one or multiple users using UDP or TCP style channels
  • Android video has been further optimized (full native camera access will come soon)
  • CallApp has a new configuration button allowing users to change resolution and other settings
  • CallApp shows now additional information if the image is clicked once
  • CallApp will now save the last settings (based on the name if its GameObject to still allow multiple instances in one application)
  • extra folder added. These are additional features requested by users and can be used at your own risk.
  • extra VideoInput added. It can be used to stream custom images or from a Unity camera
  • mobile devices won’t switch off screen any more of CallApp is used
  • extra OneToMany added. It is an example how to use the IMediaInterface to stream to multiple recives.
  • extra VideoConference added. An example how to create conference calls using ICall interface.
  • example folder added. It contains several minimal examples to help new users.
    See more here:https://www.because-why-not.com/webrtc/examples/
  • mac native libraries uses proper bundle format now
  • iOS workaround added. If a phone call ends Unity will turn off sound for all AudioSources. IosHelper.UnitySetAudioSessionActive can be called after the call ended to switch
    the Audio back into the correct mode. All AudioSources need to be restarted after it.
  • signaling server contains now a webserver to make testing and use of https://letsencrypt.org/ easier

Note that new features mentioned as “extra” might not work on all platforms and will only receive limited support for now.

The focus of the next few updates will be on updating the code to keep up with recent changes in WebRTC, improving the performance and  general bugfixing, especially for the mobile versions.

If you find any problems please send an email to contact@because-why-not.com with a description of the problem + an example project that can reproduce the problem. Ideally, use the new minimal examples as base to reproduce any errors.

Thanks!

V0.98 about to be released & server changes

Version 0.98 of WebRTC Video Chat is now awaiting Unity’s approval and will be released soon.

Here is the change log:

  • 0.98 – iOS support (arm + arm64). Please check the readme.txt for how to build it.
  • Removed log messages / errors appearing with Unity 2017.2
  • C++ side was rewritten entirely replacing all callbacks with a polling based system
  • Using the debugger in Unity should work better now
  • Video Frames will now be automatically dropped if the Update method isn’t called quickly enough (e.g. during a FPS drop)
  • IMediaNetwork is now supported and can be created using UnityCallFactory.Instance.CreateMediaNetwork
    It works similar to WebRTC Network’s IBasicNetwork interface but adds audio and video to make broadcasting to
    audio / video to multiple users easier
  • UnityCallFactory.SetLoudspeakerStatus / GetLoudspeakerStatus added. Mobile devices treat WebRTC calls like regular phone calls
    requring the speakers to be manually turned on.
  • WebGL version was adapted to recent changes in Chrome. The CallEnded event should now be triggered during disconnects due to network failure
  • CallApp was improved to better support mobile platforms + a new button was added to change SetLoudspeakerStatus
  • Numerous smaller bugfixes and changes based on user reports received in the past few months

There were also a lot of internal changes that make the way free for some new features that will be released within the next few weeks  as part of the 0.98x versions!

Please note that the servers will change with  the update and the old servers will be shutdown within the next few weeks! There might also be some downtime for this website within the next few days!

WebRTC Network / Video Chat Version 0.975 Released

Here is the change log:

  • Works with Unity 5.6 WebGL now
  • Update to WebRTC 56
  • WebGL and native ICall and IMediaInterface supports now new methods: SetVolume, HasVideoTrack, HasAudioTrack
  •  Android x86 is now supported
  • Updated AndroidHelper.cs. It now includes functions to change volume or switch to IN_COMMUNICATION mode
    (to allow the user to change the volume via the volume keys)

Unity 5.6 WebGL Bugfix

Update: Version 0.975 resolves this issue. 

Unity 5.6 introduces a new bug by changing the communication between an Unity App and the surrounding website. This will cause problems while loading the java script code of the plugin.

For now the problem can be avoided by using templates which include the java script code before the unity app is started. Simply import the unitypackage files and select the WebGL templates via the WebGL Player settings. You can find the needed files here: WebRTC Network ,  WebRTC Video Chat template.

You can find more information about Unity WebGL templates here (not yet fully up-to-date).

Version 0.974 Released

Version 0.974 of WebRTC Video Chat and WebRTC Network is now available in the Unity Asset Store.

Major changes:

  • Full Stun / Turn support for all platforms
  • Android version is now an optimized build
  • native VideoChat applications support now echo-cancellation (see ChatApp.cs)
  • Improved logging

Additionally, there have been a lot of small bugfixes and improvements in the documentation / sample applications.

I also have a few new sample applications to test new features. Please send an e-mail if you want to help testing!

Current test applications:

  • Video conferences – changes the ICall interface to automatically create n to n connections between all users that use StartServer with the same address
  • One to Many streaming – using a more low level interface allowing 1 to n connections or the creation of your own custom Video Conference tool. (The ICall interface builds on top of this)
  • Custom Video Streams – allows streaming of raw images
  • Raw Audio – allows receiving of raw PCM Audio from WebRTC (instead of automatically replaying it)

Version 0.972 Released

Version 0.972 is available in the Asset Store now.

Edit: Due to many emails I get: Mac doesn’t support sending video yet. Android doesn’t support receiving / sending video in the current version. I am working on it! Browser + Windows should work fine.