Genvid SDK 1.6.0¶
Welcome to Genvid Technologies SDK 1.6.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.
- C++ API with a C# wrapper
- 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
- Sample Unity Tutorial
- Extensive documentation
- Local deployment tools and scripts
- Cloud deployment tools and scripts (still in beta)
- REST API to control the services (still in beta)
More to come¶
Additionally, we are working on a full new feature pipeline to be released after the initial launch:
- 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¶
Unity editor SDK support¶
Once the stack is started, it is possible to simply use play and stop within the Unity editor. During play, the video, audio and data are streamed properly via the SDK and it is possible to see the results on the webpage directly.
C# Binding for the Cluster API¶
We have create a C# binding for the Cluster API and integrate it in Unity. You can now start and stop the services as well as open the Genvid UI interface directly from Unity. Expect more features to come soon!
New Genvid Plugin for Unreal Engine 4¶
We provide a new Unreal Engine 4 plugin, which now exposes the Genvid SDK using Blueprint components, and is less invasive to your code than the previous integration was. Note that, if your upgrading from a previous revision, the old integration is still working with the new Genvid.dll. So, you can either simply update the Genvid DLL or use our new Blueprint interface.
Backgroud handling of connections in the SDK¶
Although not apparent to the user, we have make our services and SDK
far more robust to disconnection and interruption. Particularly, the
SDK handle all the connections to the services in background, including
access to the configuration. That’s mean that you can now run the
game without having the services running, and Genvid_Initialize
will no longer block waiting for a connection. Some API however, like
could now fail with GenvidStatus_Disconnected
error. Although the
stream is interrupted during the disconnection, we are still keeping
the latest data for each data streams. Subscriptions will be kept,
although not receiving anything, but Annotations and Notifications are
dropped. Except for the interruption, this should ensure a smooth
experience to your viewers once the stream is re-established.
Minor changes and other fixes¶
- [ut4] Update Unreal Tournament to May 16th 2017 Release.
- [cloud] Docker images that have a version number matching
DockerTool.RE_DIRTY_VERSION
(by defaultlatest
,dev
, or anything ending with[.+]dirty
), are now forced pull to ensure the latest is actually used, even if the version has not changed. See the nomad template for the web job for an example on how to use it. - Fix a missing comma in Json serialization of the Unity sample.
- Add GENVID_TOOLBOX_LOGLEVEL environment variable to set the logging level of the scripts.
- AWS servers now correctly update their external ip address on restart.
- [tools] Update docker-machine to v0.12.2; Fix creation of AMI on AWS.
Known bugs¶
We weren’t able to fix some bugs in time for this release, but we intend to fix them shortly.
The default WASAPI interface doesn’t set the audio input format properly¶
Right now, the input format isn’t set properly with the WASAPI interface. To circumvent this, we force the audio format on the cloud to be that of our default interface. You must do the same locally to match your machine settings, if you don’t want to hear pops during the playback. Future versions will adapt automatically to the input format instead of being on fixed configuration settings.
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 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 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 thereafter, the YouTube streaming service will consider it as part of the same streaming session. Although this may be a desirable effect 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. 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 5 minutes 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 includes
system alerts, 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, 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.
Small hang can be noticed when losing Unity application focus¶
If you are running your Unity application with the stack and decide to proceed to a different window, you are bound to get a small hang several seconds later. This hang disappears when moving the mouse. This hang doesn’t affect the video, audio or data capture.
Docker jobs in nomad always redirected stderr to stdout log file¶
We got this change of behaviour just before the release and
investigating the cause of it. In the mean time, we have done a quick
fix in cloud.py
to workaround it, but you could be affected too if
one of your job where running inside a docker with nomad and you
expect the log to be in stderr.