Разделение аудиофайла на перекрывающиеся фрагменты - PullRequest
0 голосов
/ 28 февраля 2019

Кажется, это больше математическая проблема.

Длина аудиофайла L секунды.Мы хотим разбить его на равные куски длиной c секунды.Каждый следующий блок должен иметь перекрытие ø секунд с предыдущим блоком.

На сколько кусков (N) мы можем разбить этот файл?И сколько времени занимает оставшийся последний кусок r (если весь файл не может быть разделен таким образом без остатка)?


Пример 1:

L = 12 с, c = 4 с, ø = 1 с.

Результат: количество фрагментов длины c равно N = 3, оставшаяся длина последнего фрагмента r = 3 с

Простое изображение, иллюстрирующее этот пример


Без наложения найти количество кусков и остатка так же просто, как N = L / s и r = L % s.Но я не могу придумать формулу или кусок кода для этой проблемы с перекрытием.Любая помощь будет оценена.Спасибо.

1 Ответ

0 голосов
/ 28 февраля 2019

N чанков дают длину:

Len = N * (C - F) + F

Таким образом, чтобы получить количество неразрезанных чанков, мы должны разделить:

K = (L - F) / (C - F)     

Последняя длина чанка (если не ноль) равна

if ((L - F) % (C - F) > 0)    
        LastLen = L - K * (C - F)        

Примеры:

 L = 12  C = 4  F = 1
 K = (12 - 1) / (4 - 1) = 3
 (12 - 1) % (4 - 1) > 0, so
     LastLen = 12 - 3 * 3 = 3

 L = 8  C = 5  F = 2
 K = (8 - 2) / (5 - 2) = 2
 (8 - 2) % (5 - 2)  =  0, so
     LastLen = 0
...