Skip to content
TypeScript SDK for HLS processing

Ship HLS processing without rebuilding the pipeline yourself.

Convert source video into adaptive HLS streams, generate master and variant playlists with segment files, and deliver them to Cloudinary or Amazon S3.
$ npm install mediapipeline-sdk
HLS PIPELINE ready
  1. 01
    Source input.mp4 · mov · mkv
  2. 02
    Transcode adaptive bitrate
  3. 03
    Package master.m3u8 + variants + segments
  4. 04
    Deliver Cloudinary · Amazon S3
output/
master.m3u8 1080p.m3u8 720p.m3u8
480p.m3u8 segments/
→ Cloudinary → S3
$ npm i mediapipeline-sdk

Media Pipeline SDK is a TypeScript package for converting source video into an HLS package — producing a master playlist, variant playlists, and segment files — and optionally pushing that package to Cloudinary under a predictable folder layout or to Amazon S3 with signed playback links.

Built for the media pipeline

Local HLS generation

Convert .mp4, .mov, and .mkv inputs into a master.m3u8 playlist with variant outputs stored under your configured local directory.

Local Processing →
Cloudinary delivery

Upload generated HLS playlists and segments to Cloudinary under mediapipeline/{videoId}/ and return the master playlist URL.

Cloudinary Uploads →
S3 delivery with signed playback

Upload generated HLS outputs to S3, generate signed playlists and signed segment links, and return a time-limited playback URL.

S3 Uploads →
Built-in presets

Use exported HLS bitrate profiles and resolution mappings instead of maintaining ffmpeg settings manually.

View Presets →

From video to playback

01
installnpm install mediapipeline-sdk
02
configurelocal · cloudinary · s3
03
processsdk.processLocal() → HLS
04
deliverCloudinary URL · S3 signed URL

Get started

What the SDK handles

In scope
  • Local storage output
  • Cloudinary upload workflow
  • S3 upload workflow
  • Exported config helpers and preset maps
Output shape
{ type: "video", variants: [...] }→ Cloudinary URL→ S3 signed URL
See the full API output shapes

Local processing returns a structured result:

{
type: "video",
variants: [
{
name: "hls",
path: "output/<uuid>/master.m3u8",
},
],
}

Cloudinary processing returns a single string:

"https://res.cloudinary.com/<cloud-name>/raw/upload/.../mediapipeline/<uuid>/master.m3u8";

S3 processing also returns a single string:

"https://<bucket>.s3.<region>.amazonaws.com/<folder>/<uuid>/signed/master.m3u8?...";