Skip to content
/ vdx Public
forked from yuanqing/vdx

🎞️ An intuitive CLI for processing video, powered by FFmpeg

License

Notifications You must be signed in to change notification settings

letompouce/vdx

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

143 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vdx npm Version build

An intuitive CLI for processing video, powered by FFmpeg

  • Crop, trim, resize, reverse, rotate, strip audio, change the speed, change the frame rate, change the volume, convert to a different file format
  • Run multiple operations on multiple files concurrently

Quick start

Requires FFmpeg and Node.js.

$ npm install --global vdx

A variety of common video processing operations are supported:

$ vdx '*.mov' --crop=360,640    # Crop to width 360, height 640
$ vdx '*.mov' --format=gif      # Convert to GIF
$ vdx '*.mov' --fps=12          # Change the frame rate to 12
$ vdx '*.mov' --no-audio        # Strip audio
$ vdx '*.mov' --resize=360,-1   # Resize to width 360, maintaining aspect ratio
$ vdx '*.mov' --reverse         # Reverse
$ vdx '*.mov' --rotate=90       # Rotate 90 degrees clockwise
$ vdx '*.mov' --speed=2         # Double the speed
$ vdx '*.mov' --trim=0:05,0:10  # Trim from time 0:05 to 0:10
$ vdx '*.mov' --volume=0.5      # Halve the volume

We can also run multiple operations all at once:

$ vdx '*.mov' --format=gif --fps=12 --resize=360,640 --speed=2 --trim=0:05,0:10

By default, the processed files will be written to a directory called ./build. To change this, use the --output flag:

$ vdx '*.mov' --format=gif --output='./gifs'

By default, up to 3 input files will be processed concurrently. To change this, use the --parallel flag:

$ vdx '*.mov' --format=gif --output='./gifs' --parallel=5

Usage

Usage: vdx <pattern> [options]

<pattern>

One or more globs of input files to process.

[options]

Use the -d or --debug flag to print the underlying FFmpeg commands that are being run.

-c, --crop [<x>,<y>,]<width>,<height>

<x> and <y> both default to 0.

# Crop to width 360, height 640
$ vdx '*.mov' --crop=360,640

# Crop to width 360, height 640, starting from coordinates (10, 20)
$ vdx '*.mov' --crop=10,20,360,640

-f, --format <format>

# Convert to GIF
$ vdx '*.mov' --format gif

-fp, --fps <fps>

# Change the frame rate to 12
$ vdx '*.mov' --fps=12

-na, --no-audio

# Strip audio
$ vdx '*.mov' --no-audio

-o, --output <directory>

<directory> defaults to './build'.

# Output files to './gifs'
$ vdx '*.mov' --format=gif --output='./gifs'

-p, --parallel <concurrency>

<concurrency> defaults to 3.

# Process up to 5 files concurrently
$ vdx '*.mov' --format=gif --parallel=5

-r, --resize <width>,<height>

Set either <width> or <height> to -1 to maintain the aspect ratio.

# Resize to width 360, height 640
$ vdx '*.mov' --resize=360,640

# Resize to width 360, maintaining the aspect ratio
$ vdx '*.mov' --resize=360,-1

# Resize to height 640, maintaining the aspect ratio
$ vdx '*.mov' --resize=-1,640

-rv, --reverse

# Reverse
$ vdx '*.mov' --reverse

-ro, --rotate <angle>

<angle> must be one of -90, 90, or 180.

# Rotate 90 degrees clockwise
$ vdx '*.mov' --rotate=90

# Rotate 90 degrees counter-clockwise
$ vdx '*.mov' --rotate=-90

# Rotate 180 degrees
$ vdx '*.mov' --rotate=180

-s, --speed <speed>

# Halve the speed
$ vdx '*.mov' --speed=0.5

# Double the speed
$ vdx '*.mov' --speed=2

-t, --trim <start>[,<end>]

Omit <end> to trim from <start> to the end of the input file.

# Trim from time 0:05 to the end of the input file
$ vdx '*.mov' --trim=0:05

# Trim from time 0:05 to 0:10
$ vdx '*.mov' --trim=0:05,0:10

-vo, --volume <volume>

# Halve the volume
$ vdx '*.mov' --volume=0.5

# Double the volume
$ vdx '*.mov' --volume=2

Installation

$ npm install --global vdx

Prior art

See also

License

MIT

About

🎞️ An intuitive CLI for processing video, powered by FFmpeg

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 83.4%
  • JavaScript 16.6%