Packaging Content with Shaka Packager Using Axinom Key Service
Overview​
This document serves as a quick start guide to use Shaka Packager with Axinom
Key Service. The usage is demonstrated by a PowerShell script that has been
provided together with this guide. The demo script, Use-ShakaPackagerWithAxinomKeyService.ps1
,
demonstrates how to use Shaka Packager with Axinom Key Service to encrypt and
package DASH or HLS content. Encrypted DASH is played back using Widevine or
PlayReady. Encrypted HLS is played back using Widevine or FairPlay.
The demo script contains comments with extra information. The script itself should only be used as an example and not as a production solution. For any questions about the steps of the demo script, it’s possible to open the script with a text editor and refer to the inline comments.
There are also references to documents at the end of this guide that may provide useful information about Axinom Key Service, Shaka Packager, or any other resources involved.
Pre-Requisites​
Shaka Packager​
The latest Shaka Packager can be acquired from the Google Shaka Packager’s page: https://github.com/google/shaka-packager/releases
For Windows, use packager-win.exe
.
For Linux, use packager-linux
(Ensure it has execute permissions).
PowerShell​
PowerShell or PowerShell Core is required to run the demo script.
Windows​
Windows comes with PowerShell already pre-installed.
Linux​
PowerShell must be installed on Linux. Instructions can be found at: https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux
Video File​
Any video in the mp4 format can be used as an input file.
Axinom Quick Start PowerShell Script​
Download ScriptRunning the Packaging Script​
To run the demo script, open PowerShell. Linux PowerShell can be opened by typing
pwsh
to the Terminal. Change the directory to the folder which consists the demo script.
For OSX users - replace the './packager-win.exe' line in the script with the name of the Mac Shaka Packager binary you have downloaded.
./Use-ShakaPackagerWithAxinomKeyService.ps1 -InputVideo input_video.mp4 -SigningKeyAsHex 0000000000000000000000000000000000000000000000000000000000000000 -SigningIvAsHex 00000000000000000000000000000000 -Signer 00000000-0000-0000-0000-000000000000
Values for Widevine Signing Key (SigningKeyAsHex), Widevine Signing IV (SigningIvAsHex) and Widevine Provider Name (Signer) can be found on the Portal under User’s Key Service config (DRM section of My Mosaic).
The video file should be in the same folder as the Shaka Packager executable
By default, the demo script generates a random key ID. A specific key ID can be
provided using the -KeyID
parameter. For example: -KeyID 00000000-0000-0000-00000000000000000
.
Usage of Shaka Packager​
The demo script also shows the exact parameters passed to Shaka Packager in the output. This can be used as an example of how to invoke the packager directly.
in=input.mp4,stream=audio,output=output/cenc/audio.mp4
in=input.mp4,stream=video,output=output/cenc/video.mp4
--enable_raw_key_encryption
--keys=key_id=78c5e406cdf343a8a0e86c210002984a:key=5ce85e92271fff56fabba555f77381d7
--pssh=0000006d7073736800000000edef8ba979d64acea3c827dcd51d21ed0000004d121078c5e406cdf343a8a0e86c210002984a1a0d7769646576696e655f74657374222437386335653430362d636466332d343361382d613065382d36633231303030323938346148e3dc959b06000001e470737368000000009a04f07998404286ab92e65be0885f95000001c4c401000001000100ba013c00570052004d00480045004100440045005200200078006d006c006e0073003d00220068007400740070003a002f002f0073006300680065006d00610073002e006d006900630072006f0073006f00660074002e0063006f006d002f00440052004d002f0032003000300037002f00300033002f0050006c00610079005200650061006400790048006500610064006500720022002000760065007200730069006f006e003d00220034002e0030002e0030002e00300022003e003c0044004100540041003e003c00500052004f00540045004300540049004e0046004f003e003c004b00450059004c0045004e003e00310036003c002f004b00450059004c0045004e003e003c0041004c004700490044003e004100450053004300540052003c002f0041004c004700490044003e003c002f00500052004f00540045004300540049004e0046004f003e003c004b00490044003e0042007500540046006500500050004e00710045004f0067003600470077006800410041004b005900530067003d003d003c002f004b00490044003e003c002f0044004100540041003e003c002f00570052004d004800450041004400450052003e00
--protection_scheme=cenc
--mpd_output=output/cenc/manifest.mpd
--hls_master_playlist_output=output/cenc/manifest.m3u8
--clear_lead=0
Verifying Packager Results​
To test and verify if the packaged media works, it’s possible to use the players on the Axinom VTB website.
- Upload your content to a web server. In most cases, HTTPS is required for a successful playback.
- Open Axinom’s VTB player located at https://vtb.axinom.com and select the latest Shaka Player from the list on the left.
- Insert the URL to the output file (for example:
https://example.com/manifest.mpd
) to theStream URL
field. - Create and add the token specific to your Axinom account and the video. You can refer to how to create a token for further reference and you can get your token created using our tool.
- Click
Load Stream
. If the video starts playing, then the packaging was successful.
See also​
For more information, please refer to the documentation and examples listed below.
- Axinom Key Service - Widevine Common Encryption API
- Shaka Packager documentation & tutorials: https://shaka-project.github.io/shaka-packager/html/
- Getting started with Apple FairPlay Streaming using Axinom DRM - refer to the "Preparing FPS content for Axinom DRM" section for how to set the URI parameter value in the HLS playlist for FairPlay, which is controlled by the
hls_key_uri
packager argument.