这似乎更多是数学问题。
音频文件的长度为L
秒。我们希望将其拆分为长度为c
秒的相等块。每个下一个块应该与上一个块有ø
秒的重叠。
我们可以将这个文件分成多少块(N
)?剩下的最后一块r
还有多长时间(如果整个文件没有剩余部分就无法分割)?
示例1:
L
= 12s,c
= 4s,ø
= 1s。
结果:长度c
的块数为N
= 3,剩余的最后一块长度r
= 3s
Simple image to illustrate this example
在不重叠的情况下,找到块的数量和其余部分与N = L / s
和r = L % s
一样容易。但是对于重叠的问题,我不太想出公式或一段代码。任何帮助,将不胜感激。谢谢。
答案 0 :(得分:0)
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