Shaka Packager Library

Documentation for the top level Shaka packager library. See Internal API for documentation on internal APIs.

class shaka::Packager

Public Functions

Status Initialize(const PackagingParams &packaging_params, const std::vector<StreamDescriptor> &stream_descriptors)

Initialize packaging pipeline.

Parameters
  • packaging_params – contains the packaging parameters.

  • stream_descriptors – a list of stream descriptors.

Returns

OK on success, an appropriate error code on failure.

Status Run()

Run the pipeline to completion (or failed / been cancelled). Note that it blocks until completion.

Returns

OK on success, an appropriate error code on failure.

void Cancel()

Cancel packaging. Note that it has to be called from another thread.

Public Static Functions

static std::string GetLibraryVersion()
Returns

The version of the library.

static std::string DefaultStreamLabelFunction(int max_sd_pixels, int max_hd_pixels, int max_uhd1_pixels, const EncryptionParams::EncryptedStreamAttributes &stream_attributes)

Default stream label function implementation.

Parameters
  • max_sd_pixels – The threshold to determine whether a video track should be considered as SD. If the max pixels per frame is no higher than max_sd_pixels, i.e. [0, max_sd_pixels], it is SD.

  • max_hd_pixels – The threshold to determine whether a video track should be considered as HD. If the max pixels per frame is higher than max_sd_pixels, but no higher than max_hd_pixels, i.e. (max_sd_pixels, max_hd_pixels], it is HD.

  • max_uhd1_pixels – The threshold to determine whether a video track should be considered as UHD1. If the max pixels per frame is higher than max_hd_pixels, but no higher than max_uhd1_pixels, i.e. (max_hd_pixels, max_uhd1_pixels], it is UHD1. Otherwise it is UHD2.

  • stream_info – Encrypted stream info.

Returns

the stream label associated with stream_info. Can be “AUDIO”, “SD”, “HD”, “UHD1” or “UHD2”.

struct PackagerInternal

Sample code:

shaka::Packager packager;

// Setup packaging parameters.
shaka::PackagingParams packaging_params;
// Use default parameters here.

// Setup stream descriptors.
std::vector<shaka::StreamDescriptor> stream_descriptors;
shaka::StreamDescriptor stream_descriptor;
stream_descriptor.input = "input.mp4";
stream_descriptor.stream_selector = "video";
stream_descriptor.output = "output_video.mp4";
stream_descriptors.push_back(stream_descriptor);
shaka::StreamDescriptor stream_descriptor;
stream_descriptor.input = "input.mp4";
stream_descriptor.stream_selector = "audio";
stream_descriptor.output = "output_audio.mp4";
stream_descriptors.push_back(stream_descriptor);

shaka::Status status = packager.Initialize(packaging_params,
                                           stream_descriptors);
if (!status.ok()) { ... }
status = packager.Run();
if (!status.ok()) { ... }