Форум сайта python.su
Делаю скрипт для автоматической разбивки аудио файлов , вот есть одна функция:
def get_period_sec(part=2, sec=0): temp_period = [] d = sec / part a = 0 b = 0 for _ in range(part): if range(part)[-1] == _: a = sec temp_period.append([b, a]) b = d + b else: a = d + a temp_period.append([b, a]) b = d + b print temp_period
Офлайн
def split_int(i, parts=2): result = [] chunk = i / parts for p in range(parts): start = p * chunk result.append([start, start + chunk]) return result
Офлайн
Например если хотим 394 секунды разбить на 40 частей этот алгоритм в последнем чанке конечное число будет 360 а у нас 394 секунды, выходит полностью и правильно аудио файл мы не разобьем всегда будет нехватать несколько секунд ))
Так что тут как бы ты не много не дописал FishHook.
Офлайн
Jeck290
он выдает равные отрезки времени в списке
>>> get_period_sec(part=2, sec=11) [[0, 5], [5, 11]] >>>
Отредактировано py.user.next (Май 15, 2015 13:49:47)
Офлайн
def get_period_sec(part, sec): avg = sec / float(part) out = [] last = 0.0 while last < sec: out.append([int(last),int(last + avg)]) last += avg return out
Отредактировано giveback (Май 15, 2015 13:42:09)
Офлайн
py.user.next
py.user.nextДа знаю, там заглушка стоит , если видим что идет последний цикл итерации то выставляем максимальное число секунд что бы переконвертировать все аудио, просто я не додумался как обойти эту фичу (((
0 - 5 – 6 секунд
5 - 11 – 7 секунд
Офлайн
>>> def f(sec, parts): ... r = range(0, sec, sec/parts)[:-1] + [sec] ... return zip(r[:-1], r[1:]) ... >>> f(394, 3) [(0, 131), (131, 262), (262, 394)]
Отредактировано bismigalis (Май 15, 2015 21:38:41)
Офлайн
Jeck290тут надо определится, как делить
выходит полностью и правильно аудио файл мы не разобьем всегда будет нехватать несколько секунд ))
012 345 6789
0123 4567 89
Офлайн
bismigalisА для 11 секунд и 3 частей
тут надо определится, как делить
012 345 6789(10)
0123 4567 89(10)
01234 56789 (10)
Офлайн
на больших значениях таких вариантов может быть много, думаю задача звучит так
разбить на равные части, остаток должен быть меньше равной части, и остаток должен быть максимальным из всех возможных вариантов, т.е. по размеру максимально приближаться к равной части
т.е. второй вариант самый подходящий
Офлайн