Convert Videos
This tool allows bulk conversion of videos using ffmpeg, including with hardware acceleration.
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 [auto-detect|software|nvidia|intel]
Optionally use a hardware encoder to speed
things up. [default: auto-detect]
--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 being worked around by enforcing a maximum time between I-frames which creates usable videos.
- 10-bit HEVC videos often cause issues with the Intel decoder.
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.
Metadata
Release files for convert_videos 2.10.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| convert_videos-2.10.1.tar.gz | 31.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| convert_videos-2.10.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.3 kB
Release files / convert_videos-2.10.1.tar.gz
| Download URL | convert_videos-2.10.1.tar.gz |
|---|---|
| Size | 31.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
88da5964502185a40138abefbafb830ca506cd9509662bc94b102ad55c865a35
|
|
BLAKE2b-256 checksum How to use checksums |
f1f47239ef5ec8e3863ea91e19fa62dbddf37474d34282dba67fe9a3a7d941a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / convert_videos-2.10.1-py3-none-any.whl
| Download URL | convert_videos-2.10.1-py3-none-any.whl |
|---|---|
| Size | 13.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
566e8dc3bdfcda35a1cf9a2773a85e28bb1dbf06e8f3e30742dec4b89328331a
|
|
BLAKE2b-256 checksum How to use checksums |
c1cdc7863ff183d8f2beaebe723f526e08cec2f3ff629fdb1f2d694ddd9bfa61
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|