Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ffprobe-client

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ffprobe-client

A zero-dependency, promise-based Node.js API for ffprobe

  • 1.1.6
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
2.2K
increased by22.09%
Maintainers
1
Weekly downloads
 
Created
Source

ffprobe-client

npm version Build Status Coverage Status install size

A zero-dependency, promise-based Node.js API for ffprobe.

Below is a comparison between ffprobe-client and other popular ffprobe libraries, as of August 23rd, 2018:

ffprobe-clientffprobenode-ffprobe
promise API
custom ffprobe path
-show_format
electron support1
dependenciesnone!JSONStream, bl, deferentialnone!
last publish2018-08-232016-01-022013-04-20

Usage

// optional: specify a binary path, see config
process.env.FFPROBE_PATH = '/usr/bin/ffprobe'
const ffprobe = require('ffprobe-client')

const file = './path/to/file'
const url = 'http://www.example.com/foo.webm'

// promise
ffprobe('./myfile.webm')
  .then(data => console.log(data.format.duration))
  .catch(err => console.error(err))

// async/await
async function run () {
  try {
    const data = await ffprobe('http://www.example.com/foo.webm')

    console.log(data)
  } catch (err) {
    console.error(err)
  }
}

run()

API

ffprobe(target, [config])

Returns a Promise which resolves to a JSON outputted by ffprobe.

target

Type: String

The file path or URL of the stream for ffprobe to analyze. Older versions of ffprobe seem to segfault when passed in a URL; please try to keep your ffprobe binary up to date.

config

Type: Object

A configuration object, see details below.

config.path

Type: String

The path of the ffprobe binary. If omitted, the path will be set to the FFPROBE_PATH environment variable. If the environment variable is not set, ffprobe will be invoked directly (ie. ffprobe [...]).

Payload

Below is an example payload. Note that keys will be omitted if ffprobe fails to generate the data.

{
  "streams": [
    {
      "index": 0,
      "codec_name": "vp8",
      "codec_long_name": "On2 VP8",
      "profile": "0",
      "codec_type": "video",
      "codec_time_base": "1/25",
      "codec_tag_string": "[0][0][0][0]",
      "codec_tag": "0x0000",
      "width": 320,
      "height": 176,
      "coded_width": 320,
      "coded_height": 176,
      "has_b_frames": 0,
      "sample_aspect_ratio": "1:1",
      "display_aspect_ratio": "20:11",
      "pix_fmt": "yuv420p",
      "level": -99,
      "field_order": "progressive",
      "refs": 1,
      "r_frame_rate": "25/1",
      "avg_frame_rate": "25/1",
      "time_base": "1/1000",
      "start_pts": 0,
      "start_time": "0.000000",
      "disposition": {
        "default": 1,
        "dub": 0,
        "original": 0,
        "comment": 0,
        "lyrics": 0,
        "karaoke": 0,
        "forced": 0,
        "hearing_impaired": 0,
        "visual_impaired": 0,
        "clean_effects": 0,
        "attached_pic": 0,
        "timed_thumbnails": 0
      }
    },
    {
      "index": 1,
      "codec_name": "vorbis",
      "codec_long_name": "Vorbis",
      "codec_type": "audio",
      "codec_time_base": "1/48000",
      "codec_tag_string": "[0][0][0][0]",
      "codec_tag": "0x0000",
      "sample_fmt": "fltp",
      "sample_rate": "48000",
      "channels": 2,
      "channel_layout": "stereo",
      "bits_per_sample": 0,
      "r_frame_rate": "0/0",
      "avg_frame_rate": "0/0",
      "time_base": "1/1000",
      "start_pts": 0,
      "start_time": "0.000000",
      "disposition": {
        "default": 1,
        "dub": 0,
        "original": 0,
        "comment": 0,
        "lyrics": 0,
        "karaoke": 0,
        "forced": 0,
        "hearing_impaired": 0,
        "visual_impaired": 0,
        "clean_effects": 0,
        "attached_pic": 0,
        "timed_thumbnails": 0
      }
    }
  ],
  "format": {
    "filename": "./test/data/input.webm",
    "nb_streams": 2,
    "nb_programs": 0,
    "format_name": "matroska,webm",
    "format_long_name": "Matroska / WebM",
    "start_time": "0.000000",
    "duration": "10.027000",
    "size": "482282",
    "bit_rate": "384786",
    "probe_score": 100,
    "tags": {
      "encoder": "Lavf52.68.0"
    }
  }
}

Testing Locally

Run ./scripts/gen-output.sh before running the tests; this command will generate the expected JSON snapshot.

Keywords

FAQs

Package last updated on 31 Dec 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc