(mp3)如何计算Java中的字节位置



如果要在某个时间内以某个位置启动.mp3文件的inputStream,则如何计算使用InputStream.skip()方法跳过的字节数量?p>我可以访问以下数据:您想从几秒钟内开始的观点

  • MP3的样本率
  • mp3的样本尺寸
  • mp3的帧
  • mp3的框架

我尝试搜索一种描述如何计算但找不到的公式/算法。你们中有人知道该怎么做吗?

-edit

我尝试做框架 * framerate *位置(秒),但这是一个因子10。当它跳过到50秒时,将其除以10,在跳过更大的块时,它甚至更多。

我在C 中进行相同的计算。如果Googer到达此页面,这就是我的工作方式。到目前为止,它可以正常工作。我假设用户想跳到时间skipToTime(以秒为单位):

int numberOfFrames = (skipToTime * sampleRate)/1152;
int skipPositionInBytes = (numberOfFrames * frameSize);

一个点是框架并不总是相同的。特别是,第一帧和第二帧的尺寸可能与其他尺寸不同。因此,最好分别测量它们。

我假设前两个帧具有不同的尺寸,并且您对它们进行了计算,那么整个计算将看起来像这样:

int numberOfFrames = (skipToTime * sampleRate)/1152;
numberOfFrames -= 2; // Or whatever it took to reach a stable frame size
int skipPositionInBytes = (numberOfFrames * frameSize) + OFFSET;

偏移是达到稳定帧大小所需的字节总数。如果花了2帧,则:

OFFSET = frameSize1 + frameSize2;

最新更新