little-media-box

> Convenient atomicized classes for representing digital multimedia assets > in distributed Node.js DSP pipelines.

Usage no npm install needed!

<script type="module">
  import littleMediaBox from 'https://cdn.skypack.dev/little-media-box';
</script>

README

little-media-box

Convenient atomicized classes for representing digital multimedia assets in distributed Node.js DSP pipelines.

Installation

$ npm install little-media-box

Status

Development/Testing/Documentation

Actions Status

Usage

const { Delivery, Source } = require('little-media-box')

const uri = 'http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4'

const delivery = new Delivery()

delivery.ready(() => {
  delivery.source(uri)
  delivery.probe(console.log)
  //delivery.demux(console.log).on('progress', console.log)
  // {
  //   'http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4': // {
  //     streams: [ [Object], [Object], [Object] ],
  //     format: {
  //       filename: 'bbb_sunflower_1080p_60fps_normal.mp4',
  //       nb_streams: 3,
  //       nb_programs: 0,
  //       format_name: 'mov,mp4,m4a,3gp,3g2,mj2',
  //       format_long_name: 'QuickTime / MOV',
  //       start_time: 0,
  //       duration: 634.533333,
  //       size: 'N/A',
  //       bit_rate: 'N/A',
  //       probe_score: 100,
  //       tags: [Object]
  //     },
  //     chapters: []
  //   }
  // }
})

See examples for additional use-cases.

API

const lmb = require('little-media-box')

Import little-media-box.

demuxStream = lmb.createDemuxStream(source, [opts])

Extracts the media track from the given source and returns it as a stream.Readable.

delivery = new lmb.Delivery([opts])

An object, which provides one or more Source objects. Extends nanoresource-pool.

lmb.demux(source, [opts], callback)

Extracts one or more media tracks from the given source, and saves each to its own individual Matroska container.

lmb.mux(sources, [opts], callback)

The callback receives error and output arguments.

{ bin } = lmb.settings

A settings object containing a bin object with the following properties:

{
  x264: X264_BIN_PATH,
  ffmpeg: FFMPEG_BIN_PATH,
  ffprobe: FFPROBE_BIN_PATH,
  mkvmerge: MKVMERGE_BIN_PATH,
}

settings = new lmb.configure([opts])

lmb.constants

Contains many constants used in various operations.

{1: iso6391, 2: iso6392, 2: iso6393} = lmb.iso639

lmb.extensions

An extended Array that contains a set of lexicographically-sorted unique file extension names. Provides various methods like checking the file type for an extension.

asset = new lmb.Asset(uri, [opts])

Extends nanoresource.

source = new lmb.Source(uri, [opts])

Extends nanoresource.

track = new lmb.Track(source, [opts])

Extends nanoresource.

subtitleTrack = new lmb.SubtitleTrack(source, [opts]

Extends Track.

videoTrack = new lmb.VideoTrack(source, [opts])

Extends Track.

audioTrack = new lmb.AudioTrack(source, [opts])

Extends Track.

lmb.TrackError

Track errors. Contains the following custom properties:

{
  track,
  code: 'TRACK_ERROR'
}

lmb.TrackPropertiesError

code: TRACK_PROPERTIES_ERROR.

lmb.TrackPropertiesMissingFormatError

code: TRACK_FORMAT_NOT_FOUND.

lmb.TrackPropertiesMissingStreamError

code: TRACK_STREAM_NOT_FOUND.

lmb.TrackValidationError

code: TRACK_STREAM_NOT_FOUND.

lmb.ffmpeg = require('fluent-ffmpeg')

Forward require of fluent-ffmpeg.

lmb.FFPROBE_BIN_PATH

Path to ffprobe bin.

lmb.FFMPEG_BIN_PATH

Path to ffmpeg bin.

lmb.MKVMERGE_BIN_PATH

Path to static binary for mkvmerge.

lmb.X264_BIN_PATH

Path to static binary x264.

License

MIT