Genvid SDK 1.19.0

Welcome to Genvid SDK 1.19.0. This release is ready and stable for integration and can be used for local development and limited cloud deployment. We are still missing some features for a complete production deployment which can be provided through other software. Please contact us at if you’re planning a production deployment.

We are still committed to a regular pace for our releases until we get all the features done for a comfortable production deployment. We always work to ensure a smooth upgrade between releases and provide as much backward compatibility support as possible. A complete list of our Known Issues and Workarounds is available to you in our Forum. Please contact us if you have any issues.

Current functionalities

Here is a summary of our current functionalities. See below for the list of new features in this release.

  • Windows C++ API with a C# wrapper.
  • D3D11 or raw frame video capture.
  • WASAPI audio capture.
  • Video encoding (H264 + AAC).
  • Video streaming to YouTube.
  • Video streaming to Twitch.
  • Multiple audiovisual and data streams coming from multiple instances.
  • Streaming additional arbitrary game events and notifications.
  • Scalable event messaging system.
  • JavaScript SDK for embedded webpage.
  • Automatic synchronisation between video and game data streams.
  • Multiple distributed source of A/V and Data (still beta).
  • Live video editing and basic composition effects (still in beta).
  • RTMP Ingest server (still in beta).
  • Unity3D integration (Game and Management).
  • Unreal Engine integration (Game and Management).
  • REST API to control the services (still in beta).
  • Tools and scripts for managing your local and remote clusters, with example scripts for AWS.
  • Metrics feed (still in beta).
  • Load testing library.
  • Extensive documentation.
  • Multiple integration samples.

More to come

Additionally, we are working on a full new feature pipeline to be released as soon as each is ready:

  • Remote management services for sharing your clusters with others.
  • SSL support for external APIs.
  • ACL support on Management APIs.
  • Hardware encoding.
  • Instant replay.
  • Better cluster-configuration management.
  • Many more improvements and features exposed in our UI (including the plugins).
  • Offline data-stream recording and playback.
  • Offline broadcast-session editing.
  • SDK Manager to help handling multiple SDK installations.

Major changes in this version

Improved internal engine

The Genvid SDK now uses an improved version of our internal engine. Although it’s generally backward-compatible with the previous verion, it is less forgiving in some areas. We recommend you read through the Improved Engine section in the upgrade notes in order to avoid some potential pitfalls when upgrading your project.

Minor changes and other fixes

  • [cluster-api] The cluster-api service is now responsible for the initialization of Vault and Nomad
  • [bastion-api][cluster-api] Fixed a bug where the process wasn’t able to listen anymore due to same port binding.
  • [consul] Fixed a race condition when writing Consul keys such as Genvid or Terraform settings. This could have lead to some settings being lost or some applications could see some empty values during a short amount of time.
  • [toolbox] A new genvid-sdk list-nodes command was added to list all currently registered nodes to a cluster.
  • [toolbox] A new environment variable GENVID_TOOLBOX_LOGFORMAT allows you to set the Python scripts log format. It can also be set on the command line by using the option --logformat.
  • [toolbox] Removed dependency on obsolete ipgetter package and added GENVID_CHECKIP_URL environment variable for improved support in future use cases.
  • [toolbox] Fixed an exception when DockerTool.build_docker raises an error. This was hiding the actual error raised.
  • [toolbox] genvid-toolbox now conflicts with hvac>=0.7.
  • [terraform] All AWS servers now use UserData to provision instead of an external provisioner. This should allow the usage of AutoScalingGroup in the future.
  • [terraform] consul_nodes is a new output for the cluster module, returning the list of Consul node names created by the script.
  • [terraform] The toolbox variable, which was pointing to a local file, has been replaced with a toolbox_url instead, which can be a s3:// url or any other path supported by pip install.
  • [composed] Improved robustness of gvencode when the compose service restarts.
  • [gvencode] Improved RTMSP communication reliability between the compose service and gvencode.
  • [gvencode] Improved frame encoding/decoding by using parametrizable thread scalability.
  • [gvencode] Improved composition synchronization. We avoid audio and video freeze as well as audio noise.
  • [gvencode] Improved robustness when sent invalid regions (e.g. picture-in-picture).
  • [standalone player] The standalone player now returns an HTTP reply that accepts all origins for an HTTP request to a missing stream.
  • [ue4-plugin] Fixed a crash when trying to send gamedata, annotation or notification without using a structure defined in C++ or Blueprint.
  • [studio] Now displaying error messages in the browser console instead of an alert window.
  • [studio] Improved reconnection when flow was interrupted.
  • [studio] Sliders in UI are more accurate.
  • [studio] We now only enable the primary audio source when the automatic auto follow mode is activated.
  • [tutorial sample] Fixed a problem when trying to stream a video that was greater than the desktop resolution.
  • [tutorial sample] Added some variables to parameterize the Genvid SDK framerate, the game framerate, and the vertical synchronization.
  • [loadtester] Fixed the Docker build ( build-cloud) to correctly load the new modules.
  • [sdk] Genvid_SubmitVideoData will return an invalid parameter status if the size of the data does not match the video format. The data will not be submitted in this case.
  • [monitor] Fixed the freeze of monitor when the user drags the main window of its game.

Known bugs

Twitch Extension Developer Rig not working

The Twitch Extension Developer Rig doesn’t provide any real player or video stream to synchronize the data. For this reason, our web client isn’t able to playback any data.

Compose window isn’t available if behind a proxy

Future versions of Bastion will have a remote server to allow access from different machines. The current version has limited support for this and is likely to encounter some problems if the Bastion host lives behind a cluster firewall (like on a Amazon EC2 machine). The workaround is creating VPN connections to the Bastion machine so that the local IP of the machine is accessible from the client machine.

The application doesn’t work properly after Windows comes back from sleep

Nomad has some difficulties with sleeping jobs, including itself. This is unlikely to get fixed in Nomad, but shouldn’t happen in a production environment. The best workaround at present is to not allow Windows to go to sleep when you are running the service, or simply to restart the service with a genvid-bastion reinstall. (Unfortunately, genvid-bastion restart is not sufficient).

The YouTube stream isn’t properly reset after a gvencode restart

If you stop and quickly restart the services, the YouTube streaming service considers it part of the same streaming session. Although this may be desirable most of the time, this could lead to showing up as the previous session due to the long latency between the services and the actual view which can create some delay in the stream. A future version will provide a proper way to request a new stream. Until then, you can either reset your stream key from the YouTube dashboard or simply wait a little longer (about 5 minutes should be enough) before restarting the service.

Audio captures microphone or infinitely loops

When using the WASAPI audio auto-capture mode, every sound going through the machine’s default audio-device gets captured. This includes system alerts and microphone input, as well as your web browser. When test-viewing your game stream using the same local machine running the game, the game will also capture its own audio stream with ~10s of latency. This yields some echo with progressively worse sound quality since it is compressed every time it is streamed.

You can disable audio in 2 ways:

  • Set settings.encode.input.silent to true in your configuration. (The default setting.)
  • Use our raw audio-capture, which is now the default setting in Unity.

Standalone player with Firefox

The readable streams must be enabled in Firefox for the standalone player to work properly. You must set dom.streams.enabled and javascript.options.streams preferences to true from the about:config URL.

Auto-cut checkbox state is stored locally only

In Studio, the state of the auto-cut checkbox in Scene Widget is only stored in local storage: Clearing the browser cache will also clear user input. Also, if auto-cut is turned “on” before the Studio session ends, it will be set back to “off” by default when you start the Studio session again.

Studio can not take inputs of the same control from multiple windows

If Studio is opened in more than one browser window and inputs are received from different sources to one control, the final value will then bounce between the different inputs instead of updating it to the latest one. For example, in Audio Mixer Widget, if a user changes the slider of Master Gain to 20 db and another user then changes it to 0 db, the slider handle will bounce between 20 db and 0 db instead of being set to 0 db. Inputs from different windows to one control is not recommended until we resolve the issue.

Unity 2018 Tutorial - Might Have Wrong Resolution

When using Unity 2018, you might have resolution problems upon launch. The window of the stream might not have the desired resolution thus resulting in an offset between the video stream and the UI. We currently have no workaround for this but are investigating the issue. Please note that this issue does not occur in Unity versions prior to 2018.