Genvid SDK 1.1.0¶
Welcome to Genvid Technologies SDK 1.1.0. While this release is not yet ready for production deployment, it is robust enough today to allow developers to start developing a full Genvid Streaming Experience into their existing projects.
We are hard at work, and a version of our SDK ready for production deployable builds are coming soon. We expect future releases will allow for a smooth transition. In the meantime, we recommend you start your integration today using our local development environment.
Current functionalities¶
We currently deliver core functionality which allows you to run your game and stream it to YouTube, along with extra game events and messaging to make it a true Genvid Streaming Experience.
- D3D11 video capture
- WASAPI audio capture
- Video encoding (H264 + AAC)
- Video streaming to YouTube
- Streaming of additional arbitrary game events and notifications
- Scalable event messaging system
- Automatic synchronisation between video and game data streams
- Native and Web SDK for easy integration
- Sample tutorial project
- Sample Unreal Engine 4 project
- Exhaustive documentation
- Local deployment tools and scripts
- Cloud deployment tools and scripts (still in beta)
More to come¶
Additionally, we are working on a full new feature pipeline to be released after the initial launch:
- Unity engine integration with the Genvid SDK
- A bastion host to manage your clusters directly on the cloud
- More secure handling of secret parameters
- User authentication and validation
- More video format support
- Hardware encoding
- Multi datacenter support
- Multiple broadcast sessions management
- Multiple audiovisual and data streams coming from the same or multiple instances
- Support for 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
Major changes in this version¶
Introduction of the project file¶
A new Genvid Project file was added to help creating your own project. This will help you better create your own projects more easily, and allow an easier path to upgrade between different version of the SDK. It’s also a first step toward an easier way to manage your different projects and clusters. Go in our quicktour guide to find out more about it.
Changed in the Windows image binaries¶
We have improved the initial setup experience of the Windows AMI a
little bit. Among the changes, we now install the AWS package from
the official Windows installer instead of the python package. This
will change the path of the AWS tool from C:\\Program
Files\\Python35\\Scripts\\aws.cmd
to C:\\Program
Files\\Amazon\\AWSCLI\\aws.exe
. The update.nomad.tmpl
template
in cloud-services
has been update accordingly. We also removed
the Sysinternal Suite Utilities from it. If you need it, you can
install it from the Windows Sysinternals website:
https://technet.microsoft.com/en-us/sysinternals/default.
Update of the third party binaries¶
We test and update many of our tools to benefits from the latest fixes and features. One notable change is consul-template, which now blocks until a key become available instead of failing immediately. This behaviour is useful to ensure consul and other services had the time to configure themself. However, it could lead to a stall if a key is mispelled. To prevent this, we added a timeout of 30 seconds on the template rendering process.
Deprecation of the install-requirements.py script¶
With the flexibility of the installer, this script were becoming redundant, syo we removed it.
Added extra parameter to command callbacks¶
The command callbacks now take an extra void* userData
parameter, matching
the same design as used for events. The functions
Genvid_SubscribeCommand()
and Genvid_UnsubscribeCommand()
as
well as the GenvidCommandCallback
type have all been adjusted
accordingly. If that extra parameter is not needed, users should just
send a NULL
value.
Known bugs¶
We weren’t able to fix some bugs in time for this release, but we intend to fix them shortly.
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 local.py reinstall
(unfortunately,
local.py restart
is not sufficient).
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.
Audio captures microphone, or loops infinitely¶
Since we capture audio with a loopback device, every sound going through
the machine running the game will get captured. This not only includes
system alerts or microphone input, but it also includes your web
browser. When viewing your game stream using the same machine which is
running the game, the game will also capture its own audio stream with
~10s of latency, yielding some echo with progressively worse sound
quality (since it is compressed every time it is streamed). The
recommended workaround is to disable audio altogether
(genvid.encode.input.silent = true
in your config file), or to use a
separate machine to observe the website. These issues are moot when the
game is deployed in a cloud infrastructure.
Audio is out of sync¶
The audio might be out of sync by a slight margin. We intend to fix this
in an upcoming release. In the meantime, you can add delay to the video
by setting a video delay in your config file; the default value is
genvid.encode.output.videodelay = "1250ms"
(the format is a string
ending with ms
).
AWS Servers are not working properly after a shutdown¶
If you shut down the servers, they lose their public IP addresses and
the system failed to take the new addresses into account. You must
reinstall the servers by doing a cloud.py reinstall
which takes a
very long time. We are currently working on a solution that will be
available on the official release of the cloud support.