Genvid Forum

Genvid Technologies

Genvid SDK 1.21.0

Welcome to Genvid Technologies SDK 1.21.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.
  • Multiple audiovisual and data streams coming from multiple
  • 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 sources 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

Twitch Extension Sample

The Genvid SDK now supports the Twitch Extension Developer Rig. See the Twitch
Extension Development Sample documentation for full information on how to set
up your development environment to use the rig.

Terraform Providers

The Genvid SDK now supports customization of Terraform providers
( Providers are responsible for
understanding API interactions and exposing resources to Terraform. With this
new feature, you can now configure provider settings and set specific versions
for providers you want to use. Read the Cloud Environment Guide and the
Terraform Providers section of Using Clusters in the Genvid SDK documentation
for details on using this feature.

Minor changes and other fixes

  • [bastion-ui] Error no longer displays when clicking the browser
    back-button while in Terraform settings.
  • [cluster-ui] Users can now see a list in Cluster-UI of all the S3
    images that a cluster is using.
  • [cluster-ui] Added a spinner to indicate loading while waiting for
    a stream to start.
  • [nats] Upgraded NATS Server to version 2.0.4.
  • [nats] NATS is now started as a standalone service that isn’t
    shown in the Cluster-UI Jobs page.
  • [nats] The Genvid SDK is more resilient to eventual NATS failures.
  • [studio] Transitions now queue instead of being discarded when
  • [studio] Fixed error message from audio-mixer when moving in and
    out of editing dashboard.
  • [terraform] Users can now initialize a plan using the ‘INIT’
    button on the Terraform command page without having to re-import
    the module.
  • [terraform] Fixed support for Boolean in Terraform settings.
  • [toolbox] Reordered health check by severity.
  • [toolbox] Added filtering to genvid-clusters command.
  • [toolbox] Added BastionAPI.terraform_regenerate_instance which
    allows regenerating the Terraform working directory for a specific
  • [toolbox] The SDK now generates a UUID with every new cluster used
    in the backend configuration to create unique path. This helps
    avoid name clashes when creating new clusters with the same name
    as previous clusters using backends like S3.
  • [toolbox] Fixed a bug where genvid-sdk upload-images required a
    cluster to be running to work.
  • [toolbox] upload_images* methods in now default to not
    updating the configuration in all cases for a more consistent
  • [toolbox] Added a update_images_config method in to update
    the images configuration of a cluster.
  • [toolbox] Introduced a new GENVID_VERBOSE_EXCEPTIONS environment
    variable which makes the toolbox print the full stack trace when
    an exception is raised.
  • [toolbox] Added a genvid-sdk package command to ZIP files and
  • [toolbox] Added a genvid-sdk docker-package command to package the
    Docker image.
  • [toolbox] Improved stability of the toolbox genvid-bastion install
    command to prevent failover race-conditions.
  • [toolbox] Fixed Terraform init function when loading for the first
    time on a cloned cluster.
  • [ue4] Saving the settings multiple times in a row no longer opens
    multiple success messages.
  • [vault] Fixed Vault initialization when there is more than one
    Vault instance.

Known Bugs

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).

As a workaround, you can create VPN connections to the Bastion machine so 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

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

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

Standalone player with Firefox not working.

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

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.

Only one application not running with Nomad is supported for the Genvid SDK

If an application using the Genvid SDK is launched without Nomad, a default
session name is assigned to it. This is useful when testing your application
in the Unity engine, Unreal engine or simply booting your application
manually. Currently, the Genvid SDK is unable to support multiple applications
launched this way unless you change the environment variable
GENVID_SESSION_NAME with a unique name. Otherwise, we recommend to use Nomad
to launch your applications to avoid this issue until a fix is integrated into
the Genvid SDK.

A blocked transition can’t be reapplied in Studio.

When a transition is requested in Studio while another transition is already
in progress, GVEncode blocks the newly requested transition to prevent
undefined behaviour. However, Studio is not aware of blocked transitions and
modifies its state as if the transition happened. Trying to reapply that same
transition will then not work, since Studio thinks it is already in that

If you encounter this issue, we recommend cutting to another transition, then
cutting again to the previously blocked transition.