Skip to main content

This tool allows bulk conversion of videos using ffmpeg

Project description

Convert Videos

Supported Python Versions PyPI version

Workflow codecov Downloads

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.

Usage

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

Options:
  -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: 24]
  -p, --preset TEXT               FFmpeg preset to use.  [default: medium]
  -w, --width INTEGER             Specify a new width to enable resizing of
                                  the video
  --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: 160]
  --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
  --encoder [software|nvidia|intel]
                                  Optionally use a harwdare encoder to speed
                                  things up.  [default: software]
  --audio-language TEXT           Only include audio streams in this language
  --subtitle-language TEXT        Only include subtitle streams in this
                                  language
  -h, --help                      Show this message and exit.

Autocomplete

To enable auto-completion:

zsh Add the below to ~/.zshrc eval "$(_CONVERT_VIDEOS_COMPLETE=zsh_source convert-videos)"

bash Add the below to ~/.bashrc eval "$(_CONVERT_VIDEOS_COMPLETE=bash_source convert-videos)"

fish Add the following to ~/.config/fish/completions/convert-videos.fish eval (env _CONVERT_VIDEOS_COMPLETE=fish_source convert-videos)

File output

Container

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

Default settings is HEVC/x265 at quality of 23

Codecs

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

Resizing

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 and Intel devices.

Caveats for nVidia:

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

Caveats for Intel:

  • Conversions use global_quality mode as CRF isn't supported on Intel hardware. ICQ and LA-ICQ are apparently better, but only supported on Windows
  • Look-ahead is only supported on x264 (not HEVC)
  • There is a bug (current as of 2023-05) where all videos converted with Intel's QSV with FFMPEG have a single I-frame at the start and no more; so currently this is unsuable

Audio output

Default settings is 160kbps 2 channel AAC.

All audio streams will be included by default unless a language filter is specified with --audio-language.

Subtitles

All subtitles will be copied from the source if they exist unless a language filter is specified with --subtitle-language.

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.8.11.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

convert_videos-2.8.11-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file convert_videos-2.8.11.tar.gz.

File metadata

  • Download URL: convert_videos-2.8.11.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.15 Linux/6.8.0-1014-azure

File hashes

Hashes for convert_videos-2.8.11.tar.gz
Algorithm Hash digest
SHA256 20120a609546356b5b27cc16a3f206b5911d31408823d5a56acc5efb3353cf12
MD5 cbf4e87eefa95f0bb66b6fe61648d52a
BLAKE2b-256 57ad0bc091b92c70bc517f76ac63123b1583fcf7a3be37f28e6c27a64af1d463

See more details on using hashes here.

File details

Details for the file convert_videos-2.8.11-py3-none-any.whl.

File metadata

  • Download URL: convert_videos-2.8.11-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.10.15 Linux/6.8.0-1014-azure

File hashes

Hashes for convert_videos-2.8.11-py3-none-any.whl
Algorithm Hash digest
SHA256 ad99db0e2572350e901f1fb245053e37cf6ed78693c24aac3c08adeb12a4f4c2
MD5 52454bf697ec409c59736b50fd0dead7
BLAKE2b-256 930423f54b3d07bb42e51adadf0d49970e42e36d8a1079444bc40719e5c5de2d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page