Genvid SDK 1.0.0¶
Welcome to first public release of the Genvid SDK. 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 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.
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
More to come¶
Additionally, we are working on a full new feature pipeline to be released after the initial launch:
- User authentication and validation
- More secure handling of secret parameters
- Support for load balancing
- Hardware encoding
- More video format support
- 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
- Unity engine integration with the Genvid SDK
Major changes in this version¶
Use of a proper installer¶
We’ve switched from a Zip archive to a proper installer.
Unification of the local script¶
In prevision of the cloud support, ut4.py
and tutorial.py
were
replaced with a single script, local.py
that handle both. See the
Quick Tour Guide
section to learn more about it.
New options for logs¶
With the upgrade to Nomad 0.5.1, we now have new options for following logs and getting only their tails. The nomad-ui (now called Hashi UI) interface is now able to properly check the files in the job.
Annotations and notifications support¶
This is the first version of the Genvid SDK providing support for annotations (punctual game events) and notifications (immediate message passing).
Commands channel¶
This is the first version of the Genvid SDK providing support for commands. A command can be sent from an application to the game through this channel. A new admin page is available in the tutorial sample to demonstrate this feature.
Audio support¶
This is the first release with audio capture and streaming.
While it is off by default, it can be activated by setting
genvid.encode.input.silent = false
in your config file.
Keep in mind that UE4 silences audio when the application
is in background.
Deprecated Genvid_Connect()/Genvid_Disconnect()¶
Due to internal design changes, we have removed the Genvid_Connect()
and Genvid_Disconnect()
calls from the Native SDK. Connection to the
Genvid Services is now done in Genvid_Initialize()
.
Changes to the Genvid_setParameter*()/Genvid_getParameter*() routines¶
The setParameteri()
was renamed to setParameterInt()
, the
setParameterf()
to setParameterFloat()
, and setParameterp()
to setParameterPointer()
. The same changes were made to the
getParameter*()
counterparts. A new getParameterUTF8()
routine
was created to retrieve values as string. The various
getParameter*()
routines can now retrieve system values from the
Consul key:value
store by specifying "genvid.kv"
as the stream id.
Cloud deployment support in beta¶
This version contains a beta version of our support for deployment on
AWS. Note that support for this is available as a complement package
Genvid SDK Cloud Solution
, at the same location as this current SDK.
Bugs fixed in this version¶
Nomad-ui is now able to display logs and other files.¶
Thanks to the upgrade to Nomad 0.5.1, nomad-ui
(now Hashi UI
)
can now correctly display the content of the allocation directory.
Spaces are now allowed in the binary paths¶
Due to a strict validation rule in Nomad, we couldn’t support spaces when specifying the path of the executables used in jobs. They fixed it, so thanks a lot to the wonderful team behind it! Now, don’t forget to put the arguments at the right place!
Fixed huge memory consumption in Native SDK¶
When the Native SDK would lose connection with services, it would queue up video frames and fill up virtual memory space very quickly, leading to an unresponsive system. The new behavior limits the total RAM usage, but might lead to dropped frames.
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.