view split-aac.py @ 136:da4f7200665f default tip

buncha shit
author Paper <paper@tflc.us>
date Sat, 07 Mar 2026 18:04:10 -0500
parents
children
line wrap: on
line source

# We want to split the files, preserving their original compression with as few possible clicks.
# This means we have to align all of our track offsets as frames.

import sys


def get_closest_aligned_time(target_time: float, sample_rate: float) -> int:
	# Convert target time into an exact amount of samples first.
	# We obviously can't have a fraction of a sample.
	samples = int(round(target_time * sample_rate))

	# Round to the nearest frame multiple. Note that AAC frames are
	# *usually* (but not always) 1024 samples in size.
	frames = samples - samples % 1024

	return frames / sample_rate


# sample rate is first argument
sample_rate = float(sys.argv[1])

# rest of the arguments are the times to align.
# Hopefully giving these values as microseconds will help
# ffmpeg realize it should cut along frame boundaries.
for i in sys.argv[2:]:
	x = get_closest_aligned_time(float(i), sample_rate)
	print("%f\n" % x, end="")
	print("%f," % x, end="")