Genvid SDK 0.6.1 - Alpha Release

Welcome to the alpha release of Genvid SDK. The goal of this release is to provide a first preview on our API as well as the capacity to start developing a full Genvid Streaming Experience with your own game.

This release is for local use only, but provides a very close experience of what the actual production releases will include. It is also alpha software, so some API, configuration formats and variables and functionalities are likely to change based on the feedback we receive, but we will provide a clear and easy path to upgrade to future releases.

This release also lacks some functionalities that we have deemed too unstable for release, as well as some known bugs that we will fix before the full release, but which shouldn’t impede your development.

Missing functionalities

This release intentionally doesn’t provide the capacity to deploy the services on the server. This will be provided in our SDK 1.0 release. Other missing functionalities that will be released at a later date (but before 1.0) are:

  • Audio capture and streaming support
  • User authentication and validation
  • More secure handling of secret parameters
  • Hardware encoding

More to come

Additionally, we are preparing the work for a lot of new features after the initial launch:

  • Multi datacenter support
  • Multiple broadcast sessions management
  • Multiple audiovisual and data streams coming from the same or multiple instances
  • External audio/video streams, coming from external sources
  • Instant replay
  • Live video edition and basic composition effects
  • Offline recording and playback of data streams
  • Offline broadcast session editing

Known bugs

We weren’t able to fix some bugs in time for this release, but we intend to fix them shortly.

Logs aren’t displayed in nomad-ui

Nomad-ui fixed this issue, but unfortunately requires a more recent version of Nomad, which itself has issues under Windows. In the meantime, you can still access the logs for the tasks by calling tutorial.py log, or tutorial.py stderr and tutorial.py stdout for more precision.

Jobs don’t always start the first time

When launching the tutorial using either tutorial.py setup or tutorial.py start, some tasks can fail to start with a message complaining about not being able to connect to some HTTP URL. This is usually a race issue with the actual startup of either the Consul or the Nomad server. Repeating the command works around this issue.

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 production environment. The best workaround you could have for that is to not allow Windows to go to sleep when you are running the service, or simply to restart the service with a tutorial.py reinstall (unfortunately, tutorial.py restart is not sufficient).

Spaces in binaries path

Due to a strict validation rule in Nomad, we couldn’t support spaces when specifying the path of the executables used in jobs. Under Windows, we try to shorten the path to 8.3 format, but that could fail depending on filesystem support. Also, spaces in the executable name itself are strictly not supported, since the 8.3 format will change the process image name used by Nomad for monitoring.

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

If the services are stopped and restarted shortly after, the YouTube streaming service will consider it as part of the same streaming session. Although a desirable effect most of the time, this could lead to showing up the previous session due to the long latency between the services and the actual view. A future version will provide a proper way to request a new stream, but until then, you can either reset your stream key from the YouTube dashboard or simply wait a little longer (about a minute should be enough) before restarting the service.

When the game disconnects from the service, the last frame is repeated

We don’t properly detect a disconnection from the game and keep streaming the last video frame. Future versions will detect it and properly pause the stream.

FFmpeg fails to start at first, leading to an additional 15 seconds before retrial

There is a race condition where a port is not bound fast enough, leading to a failure when starting the encoding process. This incurs an additional delay of about 15 seconds before a retry happens (which then typically succeeds). This will be resolved in a future version.

Unreal Tournament website sometimes shows too many players

The website code doesn’t always properly clean up the list of current players, and can sometimes display players left over from a previous game. This only happens when a new game starts by itself, and restarting a game by hand should avoid this issue.