Skip to content
/ tinier Public

Make your videos, images and audio files tinier

Notifications You must be signed in to change notification settings

qdm12/tinier

Repository files navigation

Tinier

Features

Tinier is a safe, easy to use program to make your media files tinier, with a small quality loss.

  • Video files (using libsvtav1 by default)
  • Image files
  • Audio files (using libopus by default)

Setup and usage

Windows

Compatibility: amd64, 386, arm64

  1. Download the pre-built program for your platform from the Github releases.

  2. Run with

    tinier.exe
    # Show list of flag options
    tinier.exe -help
    
  3. 💁 If your CPU is 386 or arm64, you need to install ffmpeg manually.

Mac OSX

Compatibility: amd64, arm64

  1. Install ffmpeg, usually brew install ffmpeg does it.

  2. Download the pre-built program for your platform from the Github releases.

  3. Run with

    chmod +x tinier
    ./tinier
    # Show list of flag options
    ./tinier.exe -help

Linux

Compatibility: amd64, 386, armv5, armv6, armv7 and arm64

  1. Download the pre-built program for your platform from the Github releases.

  2. Run with

    chmod +x tinier
    ./tinier
    # Show list of flag options
    ./tinier.exe -help

From source

  1. Install go

  2. Install tinier from source:

    go install github.com/qdm12/tinier/cmd/tinier
  3. 💁 Depending on your platform, you might have to install ffmpeg manually.

Docker

Compatibility: x86_64, x86, aarch64, armhf, armv7, ppc64le and s390x

docker run -it --rm -v /your/path:/tmp/tinier qmcgaw/tinier -input /tmp/tinier/input -output /tmp/tinier/output

You can also use the following environment variables if you prefer:

Environment variable Default value
TINIER_INPUT_DIR_PATH /input
TINIER_OUTPUT_DIR_PATH /output
TINIER_FFMPEG_PATH
TINIER_FFMPEG_MIN_VERSION 5.0.1
TINIER_OVERRIDE_OUTPUT off
TINIER_VIDEO_SCALE 1280:-1
TINIER_VIDEO_PRESET 8
TINIER_VIDEO_CODEC libsvtav1
TINIER_VIDEO_OUTPUT_EXTENSION .mp4
TINIER_VIDEO_EXTENSIONS .mp4,.mov,.avi
TINIER_VIDEO_SKIP no
TINIER_VIDEO_CRF 23
TINIER_IMAGE_SCALE 5
TINIER_IMAGE_OUTPUT_EXTENSION .jpg
TINIER_IMAGE_EXTENSIONS .jpg,.jpeg,.png,.avif
TINIER_IMAGE_SKIP no
TINIER_IMAGE_CODEC mjpeg
TINIER_IMAGE_QSCALE 5
TINIER_IMAGE_CRF 35
TINIER_AUDIO_CODEC libopus
TINIER_AUDIO_OUTPUT_EXTENSION .opus
TINIER_AUDIO_EXTENSIONS .mp3,.flac
TINIER_AUDIO_SKIP no
TINIER_AUDIO_QSCALE 5
TINIER_AUDIO_BITRATE 32k

General usage

tinier -help
Usage of tinier:
  -audiobitrate string
        Audio ffmpeg codec bitrate string value. (default "32k")
  -audiocodec string
        Audio ffmpeg codec. (default "libopus")
  -audioextensions string
        CSV list of audio file extensions. (default ".mp3,.flac")
  -audiooutputextension string
        Audio output file extension to use. (default ".opus")
  -audioqscale int
        Audio ffmpeg QScale value. (default 5)
  -audioskip
        Skip audio files.
  -ffmpegminversion string
        FFMPEG binary minimum version requirement. (default "5.0.1")
  -ffmpegpath string
        FFMPEG binary path.
  -imagecodec string
        Image ffmpeg codec. (default "mjpeg")
  -imagecrf int
        Image ffmpeg crf value, only used by the libaom-av1 codec. (default 35)
  -imageextensions string
        CSV list of image file extensions. (default ".jpg,.jpeg,.png,.avif")
  -imageoutputextension string
        Image output file extension to use. (default ".jpg")
  -imageqscale int
        Image ffmpeg qscale:v value, only used by the mjpeg codec. (default 5)
  -imagescale string
        Image ffmpeg scale value. (default "1280:-1")
  -imageskip
        Skip image files.
  -inputdirpath string
        Input directory path. (default "input")
  -outputdirpath string
        Output directory path. (default "output")
  -override
        Override files in the output directory.
  -videocodec string
        Video ffmpeg codec. (default "libsvtav1")
  -videocrf int
        Video ffmpeg CRF value. (default 23)
  -videoextensions string
        CSV list of video file extensions. (default ".mp4,.mov,.avi")
  -videooutputextension string
        Video output file extension to use. (default ".mp4")
  -videopreset string
        Video ffmpeg preset. (default "8")
  -videoscale string
        Video ffmpeg scale value. (default "1280:-1")
  -videoskip
        Skip video files.

Implementation details

Ffmpeg detection

tinier manages its own dependency ffmpeg by:

  1. looking at the user given ffmpeg path
  2. looking at any ffmpeg in the system path
  3. falling back to downloading a static ffmpeg build for your platform

In all cases it skips a certain ffmpeg if it doesn't match the default minimum version 5.0.1, which can be changed with -ffmpegminversion.

Safety

  • tinier can be stopped at anytime and pick up again safely
  • tinier copies over all files from the input directory to the output directory, even if untouched.
  • tinier encodes videos to a temporary directory and only moves them to the output directory when completed.
  • tinier does not delete any file from the input directory

Limitations

  • EXIF data is not preserved
  • file creation time (OS dependent) is not preserved

About

Make your videos, images and audio files tinier

Resources

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published