Skip to main content

Python 3 scripts which use ffmpeg to convert videos to webm format (vp9+opus) or to convert audio to opus or vorbis.

Project description

Introduction

The towebm package includes a set of Python 3 scripts for transcoding audio or video files using FFmpeg. Arguments are available for basic edit operations – crop, scale, cut, deinterlace – and more. Arbitrary ffmpeg video and audio filters can also be specified. Most outputs also support multiple audio tracks, e.g., surround sound and stereo. The included scripts are as follows:

towebm

Transcodes video files to VP9 video and Opus audio in a WebM or Matroska container.

toav1

Transcodes video files to AV1 video and Opus audio in a Matroska or MP4 container.

toopus

Transcodes audio or video files to Opus audio in an Ogg container.

tovorbis

Transcodes audio or video files to Vorbis audio in an Ogg container.

toflac

Transcodes audio or video files to FLAC audio in the native or Ogg container.

tomp3

Transcodes audio or video files to VBR MP3 audio in the native container.

ffcat

Concatenates multiple files of the same resolution and codec to a single file. Most usefeul when towebm or toav1 have produced multiple output files as edits of a single source file.

Usage

Transcode a source MP2 video with no edits and default quality settings:

towebm Great*.mpg

Transcode a source 1920x1080 MP4 video, which is cropped to 4:3 ratio (1440x1080), then scaled to 720 vertical resolution (960x720), and converted to grayscale. Video quality is set to 25:

towebm -q 25 -s crop43 -s scale23 -s gray Three*.mp4

Transcode a source MP4 video with a 140 and 144 crop from the top and bottom, respectively:

towebm -y 140 144 Music*.mp4

Transcode a source MKV video with a crop to all sides and an aspect-correct scale to 706 horizontal resolution:

towebm -x 260 260 -y 16 4 -vf "scale=h=706:w=-1" Calif*.mkv

Transcode two minutes of a video, starting ten seconds from the start, using three different available options:

towebm --start 10 --duration 2:00 Calif*.mkv
towebm --start 0:10 --duration 2:10 Calif*.mkv
towebm --segment 0:10 2:10 Calif*.mkv

Transcode multiple segments of a video, with one output per segment:

towebm input.mp4 \
    --segment 00:00:30.300 00:07:04.900 \
    --segment 00:09:44.366 00:14:30.133 \
    --segment 20:42:49.300 29:20:01.400

Same as the previous example, but using multiple executions (especially useful if different filters need to be applied to the different segments):

towebm input.mp4 -# --segment 00:00:30.300 00:07:04.900 --fade-in 0.5
towebm input.mp4 -# --segment 00:09:44.366 00:14:30.133
towebm input.mp4 -# --segment 20:42:49.300 29:20:01.400 --fade-out 0.5

Join the output of the previous example into a single file:

ffcat input_*.webm final.webm

Transcode a source MKV video with three audio tracks, the first of which is a 5.1(side) surround-sound track:

towebm input.mkv --fix-channel-layout 5.1:0:0 -b 256:128:128

Same as the previous example, but excluding the first audio track from the output:

towebm input.mkv b 0:128:128

Transcode a segment of a video to Opus audio, with a one second fade-in and a half-second fade-out:

toopus input.mp4 --start 1:00 --end 2:00 --fade-in 1 --fade-out 0.5

Transcode a portion of a FLAC audio file to vorbis, quality 4:

tovorbis -q 4 --start 1:00 --end 2:00 input.flac

Transcode the second audio track of a source video file to FLAC, compression level 6:

toflac input.avi -c 0:6

Transcode a video file, scaled to 960x720 and aspect ratio forced to 4:3. Useful if the input video has an incorrect aspect ratio. See the FFmpeg filters documentation for more information:

towebm input.mkv -vf "scale=w=960:h=720,setdar=4/3"

Installation

FFmpeg

FFmpeg must be installed separately from towebm and located in the system search path for the scripts to work properly. For operating systems with system-level package management, look for FFmpeg in the repository. On Windows, one can try Chocolatey, WinGet, or Cygwin.

Warning

Linux and BSD distributions typically manage system-level Python packages through their own repository and distribution system – apt, zypper, yum, ports, portage, etc. While the scripts included here have no dependencies beyond the standard libraries and this time, and are thus unlikely to cause system conflicts, it is still advisable to install them as a user package or in a Python virtual environment. pipx, if available for your system, is the recommended installation method. On Windows, pip is easily available with Python and generally safe.

Installing with pipx

Instructions for installing pipx on popular operating systems are available on the pipx website, otherwise consult your operating system documentation. By default, pipx will install the scripts into a virtual environment. You may need to add a path to your search path to run the scripts without specifying a path. Use the following to install the package from PyPI:

$ pipx install towebm

Installing with pip

By default, pip will install towebm as a system package, which may require administrative priveleges. Use the following to install the package from PyPI:

# pip install towebm

If you do not have access to install system packages, or do not wish to install in the system location, it can be installed in a user folder:

$ pip install --user towebm

Installing from source

Either download a release tarball from the Downloads page, and unpack:

$ tar zxvf towebm-1.1.0.tar.gz

Or get the latest source from the git repository:

$ git clone https://github.com/dgasaway/towebm.git

Use one of the following in the project directory, after reading about pip and pipx above:

$ pipx install .
$ pip install --user .
$ pip install .

A script can be run directly from source without installation, though this is not convenient. For example, while in the src directory:

$ PYTHONPATH=towebm python -m tovorbis

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

towebm-2.0.0.tar.gz (23.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

towebm-2.0.0-py3-none-any.whl (31.7 kB view details)

Uploaded Python 3

File details

Details for the file towebm-2.0.0.tar.gz.

File metadata

  • Download URL: towebm-2.0.0.tar.gz
  • Upload date:
  • Size: 23.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for towebm-2.0.0.tar.gz
Algorithm Hash digest
SHA256 33e26bfcf5ae3f738d6c7076534c6e7f10b3c35f3be637c283e0b76132726776
MD5 31926290d89282c84f3622bf1cb572b1
BLAKE2b-256 0a8d75933d1b951676f274019350ea6a59d97ba1501f3bb6489315ec66556f44

See more details on using hashes here.

File details

Details for the file towebm-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: towebm-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 31.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.28.1

File hashes

Hashes for towebm-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b07b2b334a8b8a8d3de9fb9d272e05277dacad5d12d64e4acffac5d79d6f5fad
MD5 698a28e69b96606e2e1eee0b6bcf3649
BLAKE2b-256 a4a921abd82f2e3b34b8ab09ee5a8e0c7b7b74def38595efb9d2d62c18cafe37

See more details on using hashes here.

Supported by

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