shaka-packager/packager/tools/pssh
Joey Parrish 01e7f3bd19
ci: Refactor release workflows (#1309)
This adopts release-please to manage releases and changelogs, similar to
other shaka-project repos.

All release workflows can be run by forks by configuring repo secrets.
See docs in .github/workflows/ for details.

 - Use release-please for releases, changelogs
 - Convert publication jobs (docs, docker, npm) into reusable workflows
 - Update workflow documentation
 - Modernize docker commands
 - Fix doc permissions for publication
 - Update artifact handling in build workflow
 - Fix paths in Dockerfile
 - Fix paths and arm64 support in NPM package
 - Fix install paths for PSSH tools
 - Fix warnings in NPM & Docker actions
 - Delete custom changelog tooling
2023-11-30 13:17:01 -08:00
..
CMakeLists.txt ci: Refactor release workflows (#1309) 2023-11-30 13:17:01 -08:00
README.md build: Fix pssh-box.py targets, installation, and docs (#1279) 2023-10-17 12:52:40 -07:00
pssh-box.py build: Fix pssh-box.py targets, installation, and docs (#1279) 2023-10-17 12:52:40 -07:00

README.md

pssh-box - Utility to parse and generate PSSH boxes

Prerequisite

  • Python 3.

Build the utility using Shaka Packager build setup

The utility needs to be built before being used, i.e. do not use the script in packager/tools/pssh/pssh_box.py directly.

If you have not set up the build environment for Shaka Packager, see https://github.com/shaka-project/shaka-packager/blob/master/docs/source/build_instructions.md.

With the build environment set up, use ninja to build the utility:

$ ninja -C build/ pssh-box.py

Then you can use the built utility in build/pssh-box.py.

Usage

All examples below assume that that pssh-box.py is in the PATH variable of the executing shell.

PSSH box generation

The utility can be used to generate one or more PSSH boxes.

An example to generate a Widevine PSSH with content-id 1234:

$ pssh-box.py --widevine-system-id --content-id 1234

It can be also be used to generate PSSH box from PSSH data (base64), e.g.

$ pssh-box.py --widevine-system-id --pssh-data AAAABCICEjQ=

The output can be in base64 form (--base64), in hex form (--hex) or in human readable form (--human). Human readable form is the default.

An example to generate a Widevine PSSH with content-id 1234 in hex:

$ pssh-box.py --widevine-system-id --content-id 1234 --hex

Multiple boxes can be generated by separating boxes with --.

An example to generate concatenated PSSHs with a Widevine PSSH with content-id 1234 and a common PSSH with key-id 31323334353637383930313233343536 (hex form).

$ pssh-box.py \
  --widevine-system-id --content-id 1234 -- \
  --common-system-id --key-id 31323334353637383930313233343536

PSSH box parsing

The utility can be used to parse a single PSSH box or multiple concatenated PSSH boxes. The input can be in hex or in base64.

$ pssh-box.py --from-hex \
  000000247073736800000000EDEF8BA979D64ACEA3C827DCD51D21ED0000000422021234
$ pssh-box.py --from-base64 AAAAJHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAAQiAhI0

More options

Run the utility with no arguments to see the full list of options.

$ pssh-box.py