Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在mp3文件中查找_Java_Audio_Audio Player - Fatal编程技术网

Java 在mp3文件中查找

Java 在mp3文件中查找,java,audio,audio-player,Java,Audio,Audio Player,我正在使用java开发mp3播放器,通过读取文件、解码帧和播放音频。但是,我希望通过seeking支持我的应用程序。对于CBR,这很容易,因为我可以大致计算应该跳过多少字节。例如:以128 kbps搜索50秒,大约是(50/0.026)*417。但这不适用于VBR,因为比特率不是恒定的 有没有什么方法可以计算在不解码所有帧的情况下,我应该在VBR中跳过多少字节?您可以将mp3文件解码到缓冲区,然后从缓冲区进行播放(边播放边计算帧)。我通过计算VBR文件的平均比特率解决了我的问题。 这可以通过将文

我正在使用java开发mp3播放器,通过读取文件、解码帧和播放音频。但是,我希望通过seeking支持我的应用程序。对于CBR,这很容易,因为我可以大致计算应该跳过多少字节。例如:以128 kbps搜索50秒,大约是
(50/0.026)*417
。但这不适用于VBR,因为比特率不是恒定的


有没有什么方法可以计算在不解码所有帧的情况下,我应该在VBR中跳过多少字节?

您可以将mp3文件解码到缓冲区,然后从缓冲区进行播放(边播放边计算帧)。

我通过计算VBR文件的平均比特率解决了我的问题。 这可以通过将文件长度除以歌曲持续时间的位来实现。
avg=size*8/duration
然后作为CBR进行搜索,但使用平均比特率而不是恒定比特率计算帧大小。

前提是缓冲区有足够的可用内存。现代电脑上的单曲也是如此,而低端智能手机上的播客就不多了。问题是如何在这些音乐流中准确查找时间戳。