License Key

After registration on our website, you can get an evaluation key by clicking the following button:




The website will ask you to login before you can get a key. If you do not have a login, please go to registration first.

Note

The following sections outline what is available in the default evaluation license key. For an overview of what Unified Streaming supports in terms of codecs, formats, DRM or ingest - please see the Factsheet.

Unified Origin

The following lists available features (y indicates they're part of the evaluation):

VOD/Live

Origin CMAF/HLS/MPEG-DASH/HDS/HSS Encoder Ingest Metadata (SCTE 35) Progressive/MP4
VOD y      
Live y y    

DRM

DRM is not part of the evaluation. Please see Unified Origin - DRM for an overview of possibilities.

License key location

Please note that each of the webservers has their own unique location for its configuration.

Apache License Key

For Apache, the UspLicenseKey server directive must be used which may be placed in the vhost conf file before the actual virtual host:

UspLicenseKey /path/to/usp-license.key

<VirtualHost *:80>

  # Rest of config

</VirtualHost>

Note

A single license allows for ten (10) live channels per origin, there is no limit on the number of bitrates in the license key.

Unified Capture

You need to pass the key on the command line with the --license-key option.

#!/bin/bash

unified_capture --license-key=/path/to/usp-license.key \
  -o oceans.ismv \
  http://example.com/channel01/channel01.isml/Manifest

Capture is not part of the evaluation. Possible outputs are:

Capture VOD Live
MPEG-DASH y y
HSS y y
HLS y n
HDS y n
Decrypt y y

When capturing Live both HSS and MPEG-DASH can be used as output format, please see Capturing LIVE for the details.

The packager can be used to create other formats, for instance if MP4 or CMAF are required.

Unified Packager

The following features are available with the evaluation. Please note that all features can be licensed.

Packaging MP4 HSS HDS HLS DASH CMAF
Video            
Audio            
Subtitles            
Server Manifest creation   y        
Client Manifest creation   y        

License key

By default mp4split will look for an environment variable called UspLicenseKey and use this as an argument to its license key option.

If this variable is present & you are required to pass the key on the command line with the --license-key option.

#!/bin/bash

mp4split --license-key=/path/to/usp-license.key \
  -o oceans.ism \
  oceans.mp4

License key wrapper

For convenience we recommend exporting the license key string as an environment variable called UspLicenseKey which mp4split will use as default when --license-key is not used.

Its recommended to set this variable and any subsequent alias' in your .bashrc.

As an alias:

export UspLicenseKey="YmFzZTY0IGVuY29kZWQgbGljZW5zZSBrZXkgc3RyaW5nCg=="

alias mp4split="/path/to/mp4split $@"

Or a function:

export UspLicenseKey="YmFzZTY0IGVuY29kZWQgbGljZW5zZSBrZXkgc3RyaW5nCg=="

function mp4split() {
  command mp4split $@
}

Once the UspLicenseKey environment variable has been exported, its possible to use to run one of our public container images (using Docker).

# Using our publically available container image
# run latest public mp4split release
mp4split() {
  BASE_IMAGE=docker.io/unifiedstreaming/mp4split
  case $1 in
    1.[0-9]*.[0-9]* ) IMAGE=${BASE_IMAGE}:$1; shift ;;
    * ) IMAGE=${BASE_IMAGE}:latest; docker pull $IMAGE ;;
  esac
  docker run -it -e UspLicenseKey -v ${PWD}:/data --workdir /data $IMAGE "$@"
}

It's also possible to set an environment variable as the path to your key which can then be passed to the command line using the --license-key option.

As an alias:

# Alternative option
USP_LICENSE_KEY="/path-to/usp-license.key"

function mp4split() {
  command mp4split --license-key=${USP_LICENSE_KEY} $@
}

Or a function:

# Alternative option
USP_LICENSE_KEY="/path-to/usp-license.key"

alias mp4split="/path/to/mp4split --license-key=${USP_LICENSE_KEY} $@"

Unified Remix

Licensing for Remix is available on request. Available options:

Remix Comment
nPVR Scalable, performant and reliable catch up or nPVR
VOD Bumpers, Virtual Subclips, Pre-,Mid-,Post-roll
AVOD Metddata (SCTE 35) creation, Media conditioning (I-Frame insertion)
VOD2Live Event, niche, premium, brand/product, info or ad Live channels form VOD content

Installation Check

After (re)starting Apache you should see the following in the Apache error.log (/var/log/apache2/error.log on Ubuntu):

License key found: /path/to/usp-license.key
Apache/2.4.7 (Ubuntu) IISMS/4.0 configured -- resuming normal operations

To check your license using mp4split, use the --license-key option together with the --show-license option described in the section below.

Features and Expiry

To show which features are supported for a certain license key or to check when the license will expire, use the --license-key option together with the --show-license option, and no other command line arguments:

#!/bin/bash

mp4split --license-key=/path/to/usp-license.key --show-license

If the license is valid, and not expired, this will print feature information in a format similar to:

mp4split version=1.10.11 (18541)    Copyright 2007-2019 CodeShop B.V.

Product name: Unified Streaming Platform
License type: production
License email: license@unified-streaming.com
Starting at: 2021-01-30 00:00:00 UTC
Expiring at: 2022-02-01 00:00:00 UTC
Supported features:
  Packaging: DASH, HDS, HLS, ISS, MP4, CMAF
  Capturing: DASH, HDS, HLS, ISS, Decryption
  Verifying: Media, URLs, Sitemap
  Streaming: VOD, Live, MPEG-TS
  Remixing: VOD
  Encoding: AAC, AVC, HEVC
  Decoding: AAC, AVC, HEVC
  Metadata: Timed Metadata
  DRM: AES, DXDRM, FAXS, Marlin, PlayReady, Sample_AES, Verimatrix_HLS, Irdeto_SKE, Conax_PR_HLS, Widevine, PlayReady_Envelope, PHDS

Monitoring

Next to the the email address used for the license email (see example above) receiving license expiry warnings 90, 60 and 30 days in advance, it is a good idea to also monitor the license key where it is used.

Options to do so are for instance the following:

  • run mp4split --show-license and post result to internal monitoring
  • restart apache periodically and check license printed in the error.log
  • parse license key upon arrival and track time to flag internally when expiry is near
  • have the webserver load the license key from another location, where expiry is checked periodically

Note

A benefit of the last is that all servers load from the same location, so license key renewal is 'replace and reload' in a specific maintenance windwow.

The first solution could look like the following:

  • the cronjob:
MAILTO="ops@example.com"
PATH="/usr/bin:/sbin:/bin"
HOME="/root"
SHELL=/bin/bash
@daily /root/key-check-daily 2>&1 | /usr/bin/logger -t key-check-daily
  • the key-check-daily script:
#!/bin/bash

/usr/bin/mp4split --license-key /etc/usp-license.key --show-license > /tmp/key-options
/usr/bin/curl curl -X POST -d @/tmp/key-options http://monitoring-server/key-check

The 'monitoring-server' mentioned above in turn can parse out the 'Starting at: ' and 'Expiring at: ' UTC timestamps present in 'key-options' string sent. Standard monitoring tools like ELK could be a good fit.

Location

New in version 1.10.33.

An alternative to placing the license key on the instance where it is used (typically as /path/to/usp-license.key) is to use a URL.

For instance with mp4split:

mp4split --license-key https://key-store/my.key --show-license

or for Apache:

UspLicenseKey "https://key-store/my.key"

The 'key-store' mentioned can be any kind of HTTPS accessible location capable of responding to the HTTPS GET request with a key.

Warning

Please make sure such a 'key-store' is only accessible to allowed license key requests.

Setting up the license key like this seperates license from instance and as such for instance allows for simultaneous update of all instances that use the same license key, or update in batches (when the same license key is used but different URL). In short, it provides greater freedom how to manage keys.

Attention

The URL must resolve to a license key. If it does not both mp4split and Apache will not work correctly and print an error (to the console or to the error log, see Error Messages below).

Error Messages

Errors related to the license key are described below.

'no policy for'

If a call to mp4split (or the webserver) results in for instance the following it means the required permission is not part of the license:

Status: 403 FMP4_403
X-USP-Error: drm: no policy for Widevine encryption

This message will be printed in the Apache error log or in the shell (stdout). Please contact license@unified-streaming.com.

'verify license signature not valid'

The key is meant for a different version (for instance trying a 1.6 key with a 1.7 version)

'license expired'

The license expired, please contact license@unified-streaming.com.

'base64_decode: unexpected end of file'

If you get the following error in your Apache error.log:

terminate called after throwing an instance of 'fmp4::exception'
what(): 415 FMP4_415 (base64_decode: unexpected end of file?)

please check you copied the license key correctly.

You can for instance test with

#!/bin/bash

mp4split --license-key=/path/to/usp-license.key --show-license

where YOUR_LICENSE_KEY is the key you received.

'keyfile not found'

This means the license key cannot be found. Please refer to the License Key page on how to install it:

'could not connect to host'

Evaluation versions require internet access to the following:

  • Google's DNS servers (8.8.8.8:53/8.8.4.4:53)
  • keys.unified-streaming.com (46.23.86.208:80)

Please make sure your firewall settings allow this.

If this is not set up the resulting error will look like the following:

apache mod_smooth_streaming (version=1.7.10) failed to initialize! (error
message: could not connect to host), please contact license@unified-streaming.com