Skip to content

OrangeChannel/acsuite

Repository files navigation

acsuite

Documentation Status Code style: black

audiocutter(.py) replacement for VapourSynth.

Allows for easy frame-based cutting/trimming/splicing of audio files using VapourSynth clip information.

Includes some extra tools for working with audio files or timestamps.

Functions:

eztrim(clip, trims, audio_file[, outfile, ffmpeg_path=, quiet=, timecodes_file=])

import vapoursynth as vs
core = vs.core
from acsuite import eztrim

file  = r'/BDMV/STREAM/00003.m2ts'
afile = r'/BDMV/STREAM/00003.wav'  # pre-extracted with TSMuxer or similar

src = core.lsmas.LWLibavSource(file)

# for the example, we will assume the src clip is 100 frames long (0-99)
trimmed_clip = src[3:22]+src[23:40]+src[48]+src[50:-20]+src[-10:-5]+src[97:]

# `clip` arg should be the uncut/untrimmed source that you are trimming from
eztrim(src, [(3,22),(23,40),(48,49),(50,-20),(-10,-5),(97,None)], afile)
Output:

Uses the file extension of the input audio_file to output a cut/trimmed audio file with the same extension. If no outfile is given, defaults to audio_file_cut.ext.

concat(audio_files, outfile[, ffmpeg_path=, quiet=])

concat(['file.aac', 'file2.aac'], 'outfile.aac')

Will concatenate a list of audio files (paths given as strings) into one file using FFmpeg.


Utility Functions:

f2ts(f, src_clip=[, precision=, timecodes_file=])

Useful for finding the timestamp for a frame number.

from functools import partial
import vapoursynth as vs
core = vs.core

clip = core.std.BlankClip()
ts = partial(f2ts, src_clip=clip)

ts(5), ts(9), ts(clip.num_frames), ts(-1)
# ('00:00:00.208', '00:00:00.375', '00:00:10.000', '00:00:09.958')

clip_to_timecodes(src_clip)

Returns a list of timecodes for VFR clips. Used as a fallback when timecodes_file is not given to f2ts or eztrim.

Getting Started

Dependencies

Installing

Arch Linux

Install the AUR package vapoursynth-tools-acsuite-git with your favorite AUR helper:

$ yay -S vapoursynth-tools-acsuite-git

Gentoo Linux

Install via the VapourSynth portage tree.

Windows / Other

Use the Python Package Index (PyPI / pip):

python3 -m pip install --user --upgrade acsuite-orangechannel

or simply

pip install acsuite-orangechannel

if you are able to use a pip executable directly.

Help!

Check out the documentation or use Python's builtin help():

help('acsuite')