Wrapper around ffmpeg to encode quick size restricted webms
Project description
PureWebM
Originally written for PureMPV, with this utility it is possible to encode webms from a given input, according to a restricted file size or a default CRF (Constant Rate Factor). If the utility is called whilst encoding, additional webm parameters will be put in a queue using Unix sockets.
Usage
To encode a quick webm with the defaults:
$ purewebm -ss 00:00:02.268 -to 00:00:10.310 -i "/tmp/Videos/nijinosaki.mkv"
Encoding 1 of 1: 100%
Only the video stream will be mapped (no audio) with a size limit of 3MB, and saved under $HOME/Videos/PureWebM
.
To encode a webm with size limit of 6MB, burned subtitles, and opus audio:
$ purewebm -i "/tmp/Videos/nijinosaki.mkv" --size_limit 6 -subs --extra_params '-map 0:a -c:a libopus -b:a 128k'
Encoding 1 of 1: 100%
It is possible to request usage instructions through the --help
or -h
option flags:
$ purewebm --help
usage: purewebm [-h] [--version] (--status | --kill | --input INPUT) [--name_type {unix,md5}]
[--subtitles] [--encoder ENCODER] [--start_time START_TIME] [--stop_time STOP_TIME]
[--lavfi LAVFI] [--size_limit SIZE_LIMIT] [--crf CRF] [--cpu-used {0,1,2,3,4,5}]
[--deadline {good,best}] [--extra_params EXTRA_PARAMS]
[output]
Utility to encode quick webms with ffmpeg
positional arguments:
output the output file, if not set, the filename will be generated according to
--name_type and saved in $HOME/Videos/PureWebM
options:
-h, --help show this help message and exit
--version, -v show program's version number and exit
--status queries the main process and prints the current status
--kill sends the kill command to the main process; this will terminate all
encodings immediately, with no cleanups
--input INPUT, -i INPUT
the input file to encode (NOTE: several files can be selected adding more
-i flags just like with ffmpeg, these will be only for a single output
file; to encode different files run this program multiple times, the files
will be queued in the main process using Unix sockets)
--name_type {unix,md5}, -nt {unix,md5}
the filename type to be generated if the output file is not set: unix uses
the current time in microseconds since Epoch, md5 uses the filename of the
input file with a short MD5 hash attached (default is unix)
--subtitles, -subs burn the subtitles onto the output file; this flag will automatically use
the subtitles found in the first input file, to use a different file use
the -lavfi flag with the subtitles filter directly
--encoder ENCODER, -c:v ENCODER
the encoder to use (default is libvpx-vp9)
--start_time START_TIME, -ss START_TIME
the start time offset (same as ffmpeg's -ss)
--stop_time STOP_TIME, -to STOP_TIME
the stop time (same as ffmpeg's -to)
--lavfi LAVFI, -lavfi LAVFI
the set of filters to pass to ffmpeg
--size_limit SIZE_LIMIT, -sl SIZE_LIMIT
the size limit of the output file in megabytes, use 0 for no limit (default
is 3)
--crf CRF, -crf CRF the crf to use (default is 24)
--cpu-used {0,1,2,3,4,5}, -cpu-used {0,1,2,3,4,5}
the cpu-used for libvpx-vp9; a number between 0 and 5 inclusive, the higher
the number the faster the encoding will be with a quality trade-off
(default is 0)
--deadline {good,best}, -deadline {good,best}
the deadline for libvpx-vp9; good is the recommended one, best has the best
compression efficiency but takes the most time (default is good)
--extra_params EXTRA_PARAMS, -ep EXTRA_PARAMS
the extra parameters to pass to ffmpeg, these will be appended making it
possible to override some defaults
Logs are saved under $HOME/.config/PureWebM/PureWebM.log
Configuration file
Some of the default options can be changed using a configuration file named PureWebM.conf
in the configuration folder. Changeable options are size_limit
, crf
, and deadline
. The following is an example of a configuration file:
# ~/.config/PureWebM/PureWebM.conf
size_limit=4
crf=28
deadline=good
Installation
It can be installed using pip:
$ pip install purewebm
or
$ git clone https://github.com/4ndrs/PureWebM.git
$ cd PureWebM
$ pip install .
Alternatively, pipx can be used if PEP 668 is enforced:
$ pipx install purewebm
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file purewebm-1.2.1.tar.gz
.
File metadata
- Download URL: purewebm-1.2.1.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5c83304b72e96a753de35e33ab11336cae4f9894686f3b4b6b42de0634a6baa3 |
|
MD5 | ceef9683eb2827d759645a1015b0757a |
|
BLAKE2b-256 | e0710a6eeb99d602c3b88a2b3fce14cd5befee8be0f24ed133ce5ddd85c48364 |
File details
Details for the file purewebm-1.2.1-py3-none-any.whl
.
File metadata
- Download URL: purewebm-1.2.1-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84b0520116778f84d38e3c468792424653651d86508e6f27e1b6c93287f859d9 |
|
MD5 | 9d79bf81fab1153addd7d15dce11cc71 |
|
BLAKE2b-256 | 3c0748218f841f8d26a2370457ffe57be35eacb6f643c82ff90134ffd2ec886d |