Open Source Newsletter #001

Eyevinn Technology
3 min readOct 8, 2021

In the monthly Eyevinn Open Source Newsletter we present the latest updates and additions to our libraries, tools and components that we have made available as open source. This is the very first newsletter in this series.

Channel Engine to support live sources

A new major version of our VOD2Live channel engine is now released. This release includes the functionality to mix in a true live HLS stream in a VOD2Live channel. This allows you to break into a live stream at any specified time on top of the usual VOD2Live content.

Demo of our open source VOD2Live Engine

To enable live-mixing, create a class which implements the following interface.

class MyStreamSwitchManager {
getSchedule(channelId) -> [ { eventId, assetId, title, type, start_time, end_time, uri, duration } ]
}

Then create an instance of this class and provide a reference to it when creating a channel engine instance.

const MyStreamSwitchManager = new MyStreamSwitchManager();

const engineOptions = {
heartbeat: '/',
channelManager: myChannelManager,
streamSwitchManager: myStreamSwitchManager,
};

const engine = new ChannelEngine(myAssetManager, engineOptions);
engine.start();
engine.listen(process.env.port || 8000);

This feature is currently in beta which means that it is close to production-ready but has not been run in production yet. We appreciate all efforts to try this out and provide feedback.

Ingest Application Framework plugins

The following new plugins are now available that can be used in your ingest application based on our ingest application framework.

  • IAF plugin AWS MediaConvert: uploads a file to an S3 bucket and initiate an AWS MediaConvert transcoding job that place the resulting HLS on another S3 bucket.
  • IAF plugin AWS MediaPackage: register an HLS on an S3 bucket in AWS MediaPackage to for example allow just-in-time packaging to both HLS and MPEG-DASH.
  • IAF plugin SVT Encore: initiate a transcoding job using the transcoder Encore. A transcoder developed by Swedish Television and that is available as open source.

Find this gist as an example on how to build a simple upload application based on this framework.

Scripts to automate a VMAF-based process to determine optimal ABR ladder

Optimizing ABR-ladders with the method developed by Netflix involves encoding your source material in a variety of different bitrates for each resolution. Each variant also needs to be analyzed using VMAF as video quality metric. This can be a quite manual and tedious process and to make this easier we set out to automate it as much as possible. All scripts and tools used in this blog post can be found in this GitHub-repository.

Using AWS ECS and MediaConvert to run this process in the cloud

In this developer blog post we describe this process more in detail.

SRT bindings for Swift

Bindings for Secure Reliable Transport library in Swift. SwiftSRT can be used with Swift Package Manager, Cocoapods, or by simply dragging the framework Frameworks/SwiftSRT.xcframework to the "Frameworks, Libraries, and Embedded Content"-list in Xcode.

Add SwiftSRT by adding the following to the desired target in your Podfile:

pod 'SwiftSRT', '~> 0.1'

Test AdServer

Our adserver that can be used for testing server side ad insertion and impression tracking now have multi-tenant support and the functionality to have tenant-specific ad creatives. The ad creatives are provided as an mRSS feed.

If the enviroment variable MRSS_ORIGIN has been set, then the test-aderver shall return VAST responses populated with Ads selected from the collection of Ads found in the mRSS feed that can be reached through this origin endpoint. The url for the feed should follow this structure ${MRSS_ORIGIN}${ADSERVER_HOST}.mrss. Where ADSERVER_HOST is the same as the host data that can be found in the request headers sent to the test-adserver.

For example: Let’s say we set MRSS_ORIGIN=https://mrss.adtest.eyevinn.technology/ and are hosting the test-adserver on your.chosen.host.

Knowing the adserver host and MRSS_ORIGIN, the test-adserver will then fetch the feed.mrss file from:https://mrss.adtest.eyevinn.technology/your.chosen.host.mrss. So make sure that an mRSS feed is available on such an URL. If the url becomes unreachable, then the test-adserver will go back to the default ads.

Eyevinn Technology is leading specialists in video technology and media distribution, and proud organizer of the yearly nordic conference Streaming Tech Sweden.

--

--

Eyevinn Technology

We are consultants sharing the passion for the technology for a media consumer of the future.