Skip to content

Releases: OrangeChannel/acsuite

v6.0.0

02 Oct 00:42
Compare
Choose a tag to compare

Version 6

Added new function concat to concatenate multiple audio files with the same extension (and therefore same codec hopefully but that's a layer 8 issue) just by using a list of filenames and a desired output file.

Important changes

  • All path parameters now accept only a string, not a path-like object or anything from the path/os modules
  • Trims must end in a None now when slicing to the end of the clip, 0 has been deprecated since 4.2.0 but it's removed now
  • The eztrim and concat function now return the outfile path as a string

Less important changes:

  • Giving the single trim (None, None) will quit early without running FFmpeg
  • Debugging has completely changed and there are decent tests now
  • Now uses Black coding style

Full changelog: v5.4.1...v6.0.0

Get the release from PyPI:

python3 -m pip install --user --upgrade acsuite-orangechannel==6.0.0
or
pip install --upgrade acsuite-orangechannel

v5.4.1

26 Sep 03:11
Compare
Choose a tag to compare

Bug fix release for .w64 extension introduced in v5.2.0 and added optional dependency on rich for printing pretty progress bars for VFR clips as the process of getting timestamps is monumentally slow.

Some external changes:
_check_ordered no longer raises an error if the trims will cause overlap, as this isn't an issue with the way the script uses FFmpeg to cut + concatenate files.

Get the release from PyPI:

python3 -m pip install --user --upgrade acsuite-orangechannel==5.4.1
or
pip install --upgrade acsuite-orangechannel

v5.3.1

25 Aug 20:00
Compare
Choose a tag to compare

Not really an important update, changes how some package metadata is stored, and I moved + updated the docs. External changes are now that f2ts and clip_to_timecodes will be imported with a wildcard (*) import, and that f2ts now accepts negative frame numbers.

v5.2.0

10 Aug 06:17
Compare
Choose a tag to compare

Timecodes file and WAV bug fix

Until VapourSynth's audio support branch is merged in, the method of determining timestamps per frame for variable-frame-rate clips is very slow. This release allows you to specify a keyword only argument, timecodes_file= to a v2 timecodes file generated by ffms2, vspipe, etc. If given, will use this file (assuming the file is in the format shown later) to find the timestamps for VFR clips, instead of the much slower approach. If not given, will fallback to the old .frames() method.

This release also fixes a bug with FFmpeg's WAV muxer. Previously, .wav files larger than 4GB would be read incorrectly by FFmpeg, resulting in the wrong duration. Now, the script supports .w64 files which is a workaround format for the WAV/RIFF 4GB limit spec. Additionally, uses an FFmpeg option to avoid writing the limiting RIFF header for waveform output (either via .wav, .w64) and instead writes an RF64 header when needed.

If using a waveform audio file >4GB, change to the .w64 format before running through acsuite.eztrim.

The expected v2 timecodes file is a plaintext file that looks like the following:

# timecode format v2
0.00
42.00
83.00
...

where each line after the first is a millisecond float representing the timestamp for the corresponding frame number.

v5.1.0

03 Aug 12:34
Compare
Choose a tag to compare

VFR support is here!

Now supports variable-framerate clips (i.e. VideoNodes with a fps of 0 because of changing framerates).
The current implementation does not require you to do anything differently, but might be pretty slow depending on the source filter used and how long the clip is. Once/if vapoursynth/vapoursynth#613 gets merged, this might become much faster but not really certain.

Has no effect on CFR clips, and old behavior of acsuite.eztrim should be identical without a speed impact.

May change in the future to allow the user to specify a timecodes v2 file (that can be generated with ffms2 for example) as this would really have no speed impact (besides the need to generate the index for the source file if using something like ffms2), but v5.y.z will always allow VFR clips to be given as acsuite.eztrim's clip param without needing a timecodes file.

This release also fixes a bug where non-recognized audio file extensions (ones that aren't supported by any current FFmpeg audio encoders) would break because of an uninitialized list codec_args, the behavior is as intended now, with FFmpeg re-encoding anything it doesn't recognize into a .wav file (using lossless pcm_s16le codec).

v5.0.1

29 Jul 20:17
Compare
Choose a tag to compare

Bug fix release for mimetypes

Python's mimetypes module is incomplete and doesn't include enough extensions, so I hardcoded the valid FFmpeg audio encoder extensions to check against this time when loading an audio_file.

Should fix cases where .aac and others were recognized as an invalid file extension, or raised a KeyError when searching for these extensions in the mimetypes.types_map dict.

Minor changes:

If the file extension is not recognized as being supported by one of FFmpeg's encoders, it will automatically change the outfile extension to WAV and re-encode losslessly to waveform (using pcm_s16le codec).

v5.0.0

27 Jul 02:37
Compare
Choose a tag to compare

Version 5, the FFmpeg version

Completely changes dependency on mkvmerge, or MKVToolNix, to FFmpeg.

Important changes:

  • mkvmerge_path is no longer a parameter to eztrim.
  • audio_file must now actually be an audio file, and not a container.
  • Always respects input filename extension when encoding with FFmpeg.
    • If audio_file='/path/to/afile.opus', the output will automatically become /path/to/afile_cut.opus.
    • If outfile='/path/to/different.wav', the output file extension will be overwritten with the audio_file extension, so this would output a cut/trimmed audio file a /path/to/different.opus.

v4.2.0

22 Jul 02:10
Compare
Choose a tag to compare

Now allows for None to be specified instead of 0 for empty slicing.

v4.1.3

29 Jun 18:37
Compare
Choose a tag to compare

Updated with dependency on VapourSynth, some typing issues fixed, and cleaned up docs.

v4.1.1

13 Jun 17:16
Compare
Choose a tag to compare

New file structure and now installable through pip. Documentation has also been updated.

API changes:

  • Added quiet keyword-only parameter to silence most of FFmpeg's and MKVToolNix's output during the subprocess commands.
  • Changed ffmpeg_path behavior to allow for users with ffmpeg in their PATH to specify an empty string '' to prevent FFmpeg from being used (which results in just a .mka output and not a WAV file).

The portable version (just a basic Python script) is available below if you want to manually update. Before updating through pip, uninstall/delete your current acsuite.py file.