Skip to main content

This tool allows bulk conversion of videos using ffmpeg

Project description

Convert Videos

Test Status codecov

This tool allows bulk conversion of videos using ffmpeg.

By default it will append the codec name to the file, e.g. Best Movie Ever.avi -> Best Movie Ever - x265.mkv. This can be optionally overridden using the --in-place flag.

Videos are only converted if they do not already match the desired codec, allowing you to process a folder of mixed format files and only convert the ones you desire. This can optionally be overridden.

File output


The default output container is mkv format. This can be changed with the --container flag to anything that is supported by FFMPEG and the chosen video and audio codecs

Video output


Currently only HEVC (x265) and AVC (h264) are supported for video codecs.


Videos can be resized automatically by providing a width. Height is automatically calculated to ensure that the aspect ratio is maintained.

Hardware Acceleration

Hardware acceleration is supported on nVidia devices. Caveats:

  • Conversions use constqp mode for the quality setting instead of CRF, this is because nvenc does not support CRF
  • b-frames are not currently supported; nvenc itself supports them on 20xx+ series graphics cards.

Default settings: Audio: 160kbps 2 channel AAC Video: HEVC/x265 at quality of 23


All subtitles will be copied from the source if they exist


Usage: convert-videos [OPTIONS] DIRECTORIES...

  -i, --in-place            Replace the original files instead of appending
                            the new codec name

  -f, --force               Force conversion even if the format of the file
                            already matches the desired format

  --video-codec TEXT        A target video codec. Supported codecs: HEVC, AVC
                            [default: HEVC]

  -q, --quality INTEGER     The quantizer quality level to use  [default: 23]
  -p, --preset TEXT         FFmpeg preset to use.  [default: medium]
  -w, --width INTEGER       Specify a new width to enable resizing of the

  --extra-input-args TEXT   Specify any extra arguments you would like to pass
                            to FFMpeg input here

  --extra-output-args TEXT  Specify any extra arguments you would like to pass
                            to FFMpeg output here

  --audio-codec TEXT        A target audio codec  [default: AAC]
  --audio-channels INTEGER  The number of channels to mux sound in to
                            [default: 2]

  --audio-bitrate INTEGER   The bitrate to use for the audio codec  [default:

  --temp-dir TEXT           Specify a temporary directory to use during
                            conversions instead of the system default

  -v, --verbose             Enable verbose log output
  --container TEXT          Specify a video container to convert the videos in
                            to  [default: mkv]

  --dry-run                 Do not make actual changes
  --nvidia-hw-accel         Use Nvidia HW acceleration instead of software

  -h, --help                Show this message and exit.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

convert_videos-2.7.4.tar.gz (9.3 kB view hashes)

Uploaded source

Built Distribution

convert_videos-2.7.4-py3-none-any.whl (10.5 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page