shaka-packager/packager/tools/pssh
Joey Parrish 32723f81bc
build: Fix pssh-box.py targets, installation, and docs (#1279)
pssh-box.py needs Python protos, which we were not building. It also
needs to have those protos installed properly.

This fixes generation of Python proto interfaces and fixes the install
targets to put those protos where they are needed. This also updates the
documentation to match.
2023-10-17 12:52:40 -07:00
..
CMakeLists.txt build: Fix pssh-box.py targets, installation, and docs (#1279) 2023-10-17 12:52:40 -07: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