Common Media Library
September 8, 2026 ยท View on GitHub
A common library for media playback in JavaScript
Open source players such as hls.js, dash.js, and shaka-player implement many of the same features independently. This duplication is especially common for standards-based features, such as ID3 parsing, 608 parsing, and CMCD. The players share the intent of these features but not the code. A bug fixed in one player can remain in the others. The goal of this library is to create one place where these utilities can be maintained and distributed.
Project structure
This project is a monorepo with three workspaces: libs, docs, and dev. The libs workspace contains the individual libraries, which are published to npm. The docs workspace contains the documentation for all the libraries. The documentation is published as one site on GitHub Pages. The dev workspace is a private development server. The available libraries are:
@svta/cml-cmcd@svta/cml-cmsd@svta/cml-content-steering@svta/cml-cta@svta/cml-c2pa@svta/cml-dash@svta/cml-drm@svta/cml-error-codes@svta/cml-id3@svta/cml-iso-8601@svta/cml-iso-bmff@svta/cml-request@svta/cml-structured-field-values@svta/cml-throughput@svta/cml-utils@svta/cml-webvtt@svta/cml-xml
Install
Install one of the libraries with npm:
npm i @svta/cml-cmcd
Usage
import { appendCmcdQuery, CmcdObjectType } from "@svta/cml-cmcd";
const cmcd = {
sid: "4f2867f2-b0fd-4db7-a3e0-cea7dff44cfb",
cid: "cc002fc3-d9e1-418d-9a5f-3d0eac601882",
d: 324.69,
ot: CmcdObjectType.MANIFEST,
["com.example-hello"]: "world",
};
const cmcdUrl = appendCmcdQuery("https://example.com/playlist.m3u8", cmcd);
console.log(cmcdUrl);
// https://example.com/playlist.m3u8?CMCD=cid%3D%22cc002fc3-d9e1-418d-9a5f-3d0eac601882%22%2Ccom.example-hello%3D%22world%22%2Cd%3D325%2Cot%3Dm%2Csid%3D%224f2867f2-b0fd-4db7-a3e0-cea7dff44cfb%22
Documentation
Read the API documentation.
Community
If you need help with the Common Media Library, or if you want to talk with other members:
Contributing
The Common Media Library is free and open source. We welcome help of any kind: fixing bugs, improving documentation, or suggesting new features. Read the contributing guide for details. The SVTA Players and Playback working group oversees contributions and project decisions.
Code of Conduct
This project has a Contributor Code of Conduct. By participating in this project, you agree to follow its terms.
Thanks
This project builds on the work of the open source community. Special thanks to the maintainers of hls.js, dash.js, shaka-player, and structured-field-values. Thanks also to the Streaming Video Technology Alliance, the DASH Industry Forum, and the CTA WAVE Project.