Giter VIP home page Giter VIP logo

vdx's Introduction

vdx npm Version build

An intuitive CLI for processing video, powered by FFmpeg

  • Crop, trim, resize, reverse, rotate, remove audio, change the speed, change the frame rate, change the volume, convert to a different file format
  • Run multiple operations on multiple video 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        # Remove audio
$ vdx '*.mov' --resize 360,-1   # Resize to width 360, maintaining the 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 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 option:

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

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

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

Usage

Usage: vdx <files> [options]

<files>

One or more globs of video files to process.

[options]

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

-c, --crop

Crop the video to <width>,<height> or <x>,<y>,<width>,<height>.

# 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

Convert the video to a different file format.

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

-fp, --fps

Change the frame rate of the video.

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

--no-audio

Remove audio from the video.

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

-o, --output

Set the output directory. Defaults to ./build.

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

-p, --parallel

Set the maximum number of video files to process concurrently. Defaults to 3.

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

-r, --resize

Resize the video to <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 the video.

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

-ro, --rotate

Rotate the video by -90, 90, or 180 degrees.

# 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

Change the speed of the video. To slow down, set to a number greater than 0 and less than 1. To speed up, set to a number greater than 1.

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

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

-t, --trim

Trim to <start>,<end> where <start> and <end> are timestamps in the format HH:MM or HH:MM.mmm. Omit <end> to trim from <start> to the end of the video.

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

# Trim from 0:05 to the end of the video
$ vdx '*.mov' --trim 0:05

-vo, --volume

Change the volume of the video. To remove audio from the video, set to 0. To decrease the volume, set to a number greater than 0 and less than 1. To increase the volume, set to a number greater than 1.

# Remove audio from the video
$ vdx '*.mov' --volume 0

# 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

vdx's People

Contributors

nurodev avatar sholtrop avatar styfle avatar yuanqing avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vdx's Issues

Center the crop automatically

vdx starts cropping from x=0 by default. I have a bunch of letterboxed videos that I need to get back to their original ratio by cropping away the two black bars at the sides. Is there a smart way for centering the crop automatically, without having to calculate the x/y coordinates manually? Kind of like the -gravity center flag in imagemagick.

feature request: option to stitch together

hi
very cool project!
i'd love to see an option to stitch all clips together, after some batch conversion to get all to the same format.
do you think this would be useful?

Error `vdx: Invalid option` always thrown

vdx seems to be broken right now (on my machine at least). The program seems to interpret given file names as options.

Tried following commands:

vdx 'video.mov' -t 00:00.43
vdx 'video.mov' --trim 00:00.43
vdx --trim 0:00:43 video.mov
vdx video.mov --format mp4

They all fail with the following message:

vdx: Invalid option: video.mov

Changing Audio Codec

Is there a way to change the audio codec instead of copying the actual stream?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.