Skip to content

Utility to scan an MP4 files and check their streaming capabilities.

Notifications You must be signed in to change notification settings

fingerartur/mp4-scan-ts

Repository files navigation

@finga/mp4-scan-ts

Utility to scan an mp4 file and check whether it supports progressive download and playback or not.

It downloads the first 1kB of the MP4 file using a Range request and looks for MP4 moov box header atom in there. If moov atom is present, the MP4 can be played back progressively.

Intended for web environment. Not tested in node.js environment.

Install

npm i @finga/mp4-scan-ts

Use

supportsProgressiveDownload

Check whether MP4 file supports progressive download.

import { supportsProgressiveDownload } from '@finga/mp4-scan-ts'

const result = await supportsProgressiveDownload('https://cdn.myweb.com/myvideo.mp4')

// result === true or false

This method downloads the first 1kB of the MP4 file and uses that to decide if it supports progressive playback.


parseMp4Boxes

Parse MP4 format boxes from MP4 represented in hex. The MP4 file is made up of boxes, each box has type and content size.

import { parseMp4Boxes } from '@finga/mp4-scan-ts'

  /**
   * MP4 binary data represented as a hexadecimal string (2 letters represent 1 byte of data)
   */
  const MP4_HEX_STRING = 'F99EB891E813A6...'

  const result = parseMp4Boxes(MP4_HEX_STRING)

  // result:

  // [
  //   {
  //     size: 32,
  //     type: 'ftyp',
  //     typeHex: '66747970',
  //   },
  //   {
  //     size: 8,
  //     type: 'free',
  //     typeHex: '66726565',
  //   },
  //   {
  //     size: 6513482,
  //     type: 'mdat',
  //     typeHex: '6D646174',
  //   },
  // ]

  // The file begins with an "ftyp" box of size 32B, followed by a "free" box of size 8B and ends with "mdat"
  // box of size 6513482B.

Known issues:

  • extended box size is not supported (this should be present only in videos larger than 4GB)

Sources of inspiration:

Changelog

  • v1.0.1
    • Improved NPM keywords
  • v1.0.0
    • Added functions supportsProgressiveDownload and parseMp4Boxes

About

Utility to scan an MP4 files and check their streaming capabilities.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published