Skip to main content
Coco Logo

CLI Video Compressor

Pack is a simple yet powerful CLI video compressor.

It reduces file sizes by up to 60% while maintaining high quality, using FFmpeg under the hood. Compress individual videos or entire folders with ease.

GitHub repo size GitHub stars GitHub forks License: MIT

Discord Server

English | Español


demo

Installation | Upgrade

You might be sure that you have installed Python 3.10+ and FFmpeg. The CLI app uses FFmpeg under the hood, so make sure you have it installed and added to your PATH.

pip install -U vidpack
Prerequisites
```console
# MacOS
brew install ffmpeg

# Ubuntu
sudo apt install ffmpeg

# ArchLinux
sudo pacman -S ffmpeg

# Fedora
sudo dnf install ffmpeg
```

Basic Usage

To compress a video or multiple videos, you will use the pack command, followed by the required input argument (a file or a directory).

pack INPUT [OPTIONS]

[!NOTE] INPUT: This is the file or directory you want to process. If you provide a directory, all videos within it will be compressed.

[!TIP] For additional help or to see all available options, you can use the command:

pack --help

Options

Pack offers several options to customize the compression process:

  • --output, -o: Specifies the output file to save the compressed video.
  • --quality, -q: Defines the video quality level (0-100). Default value: 75.
  • --overwrite, -w: Overwrites the output file if it already exists.
  • --delete-original, -d: Deletes the original video after successful compression.
  • --codec, -c: Specifies the video codec to use for compression(h264, libx265). Default is h264.

[!IMPORTANT] The H265 (libx265) codec offers superior compression quality and produces smaller file sizes compared to H264. However, encoding with H265 is more time-consuming and requires significantly more processing power. If you have a modern GPU and enough time for encoding, H265 is an excellent choice for reducing file sizes without sacrificing quality.

Usage Examples

To compress a video named video.mp4, simply run:

pack video.mp4

This command will compress video.mp4 with default settings(quality: 75) and save the result as video_compressed.mp4 in the same directory.

Show more examples

Specify an output file

If you want to specify the name or location of the compressed file:

pack video.mp4 --output compressed/small_video.mp4

This command will compress video.mp4 and save the result as small_video.mp4 in the compressed directory.

Adjust compression quality

To compress a video with a specific quality (e.g., 60):

pack video.mp4 -q 60

This will compress the video with lower quality, resulting in a smaller file size.

Compress all videos in a directory

To compress all videos in a directory:

pack /path/to/my/videos

This command will compress all videos in the specified directory and save the results in the same directory.

Overwrite existing files

If you want to overwrite existing compressed files:

pack video.mp4 --output output.mp4 --overwrite

This will overwrite the file output.mp4 if it already exists.

Delete the original file after compression

To delete the original video file after successful compression:

pack video.mp4 --delete-original

The original video.mp4 will be deleted after compression.

Specify a video codec

To compress a video with a specific video codec (e.g., libx265):

pack video.mp4 --codec libx265

This will compress the video with the libx265 codec, resulting in a smaller file size. Currently, only h264 and libx265 codecs are supported.

Use multiple options

You can combine multiple options in a single command:

pack video.mp4 -o compressed.mp4 -q 80 -w -d

This command will compress video.mp4 with a quality of 80, save the result as compressed.mp4, overwrite if the file exists, delete the original, and display detailed information during the process.

Additional Notes

  • The quality option (-q) affects both visual quality and file size. A lower value will result in a smaller file but lower visual quality, while a higher value will maintain better quality but with a larger file size.
  • It's always recommended to backup your original videos before using the delete option (-d).

[!TIP] If you are a Windows user, you can install ffmpeg and python manually or using package managers like Scoop. Once you have installed a package manager, you can just run something like scoop install python ffmpeg.

[!TIP] Windows user can watch a tutorial video on YouTube about the installation process [Here].

Contributors

See my other projects

Bookmark Style Card Bookmark Style Card Bookmark Style Card

Metadata

Release files for vidpack 0.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vidpack 0.3.3
File Size Uploaded
vidpack-0.3.3.tar.gz 8.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vidpack 0.3.3
File Interpreter ABI Platform
vidpack-0.3.3-py3-none-any.whl Python 3 none any Details

Total release size: 18.7 kB

Release files / vidpack-0.3.3.tar.gz

Download URL vidpack-0.3.3.tar.gz
Size 8.3 kB
Tags Source
SHA-256 checksum
How to use checksums
bf77287e5815a64b69b798104230957c6b2f0c7505d55df490c0e248e48cbda0
BLAKE2b-256 checksum
How to use checksums
41706eb2de0a2e5e7888d81ee0d7a5e3af6b790457891694ece6d7bbe1a1812d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 20, 2025.

Transparency log

Release files / vidpack-0.3.3-py3-none-any.whl

Download URL vidpack-0.3.3-py3-none-any.whl
Size 10.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3bcfa7ecdc1e884eec539ec8e2a572ddda04b507526c86296bf90b412c18993e
BLAKE2b-256 checksum
How to use checksums
3e99cbf39f80bd78efcd4b289631ec1605af2d5c5ebe5807a727930976156203
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 20, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.3 This release

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page