OATS
OATS is Another Transcoding Script
OATS is a commandline tool that makes transcoding easy on Windows, Linux, or Mac. The only prerequisites for OATS are FFmpeg and Python3. It can also make torrents.
A quick intro
OATS has one main script, called oats
. Once installed you can make a quick
config file to get started:
oats mkconfig
This will make a file in the current working directory named oats.conf
. The
options accessible there are the same as in the interface, so you can configure
the defaults for your use. Any options specified at the command line take
priority over the config file. All options not supplied to the command line
will use their values set in the config file.
To see the options for oats
, access the help:
oats -h
Here's a sample command for transcoding two albums to MP3 at constant bitrate of 320
and MP3 of variable bitrate, quality 2, resulting files will be put into a directory
named transcodes
:
oats --output-dir transcodes --formats "MP3 CBR 320,MP3 VBR 2" Album1 Album2
What formats can I use?
The best way to see what audio formats you can use is to enter
oats -F
which will print a list of all available formats on your system. Formats may
allow parsed arguments which will be described per
{name;units:restrictions}
. For instance "MP3 CBR {bitrate;kbps:8-320}"
indicates that MP3 constant bitrate accepts values in kbps between 8 and 320.
Torrent creation options
The following options pertain to torrent creation: --torrent=<bool>
,
--announce-url=<url>
, --torrent-dir=<dir>
, and --source=<str>
. A full
example of these options is given here.
oats --torrent true --torrent-dir torrent_output --announce-url https://blah.com MyAlbum
Tool Extensibility in OATS
OATS is a frontend to a variety of audio codec tools. In its first iteration it
was just a frontend to FFmpeg, but now is able to modularly use different tools
and dynamically detect what is available. For instance, if you install LAME on
your system, and "lame" can be found on the path, OATS will attempt to
encode your MP3s with it instead of FFmpeg (currently, FFmpeg's Xing header is
considered deficient). Similarly, Opus Tools' opusenc
and opusdec
, and
Vorbis Tools' oggenc
and oggdec
will be employed over FFmpeg.
FFmpeg provides a good baseline of support for most formats, and you may never need anything else. I hope to also add Sound eXchange (SoX) in the future as a general tool.
TODO - Things I want to do that are not yet done
- ALAC support
- AAC support
- SoX Codecs
- Channel Ops?
- Possibly provide workaround for Windows Powershell tab-completion bug
- magnet link support