获取mp3文件指定时间范围内的字节范围位置

问题描述 投票:4回答:1

我希望能够确定NSData压缩的mp3文件的一段在哪个字节位置开始和结束。

例如,如果我正在使用AVPlayer(或任何播放器)播放1分钟长1000000字节的mp3文件,我想大概知道30秒标记在文件中有多少字节,然后40秒标记发生了多少字节。

请注意,由于压缩了mp3文件,我不能将字节分成两半来确定30秒标记。

如果无法使用Swift / Objective-C完成此操作,您是否知道可以使用任何编程语言来完成此确定?谢谢!

ios mp3 avplayer
1个回答
2
投票

事实证明,我要解决另一个问题。我正试图在几秒钟的准确度内估算特定时间的字节位置,例如32:45长播客情节的4:29点。]

我沿着这些行使用了一个函数来计算大概的字节位置:

startTimeBytesPosition = (startTimeInSeconds / episodeDuration) * episodeFileSize

该功能在某些情节中起着魔咒的作用,但对于另一些情节,其开始时间将减少约30-40秒。

事实是,由于某些mp3在一开始就包含元数据,并且存储在元数据中的图像文件可能为+ 500KB,所以发生这种不准确的情况,因此我根据带有图像文件的任何情节的字节位置来计算时间的方法是大约500KB(在这种情况下,大约需要30-40秒)。

要解决此问题,我首先确定mp3文件中元数据的字节大小,然后使用它来抵消近似函数:

startTimeBytesPosition = metadataBytesOffset + (startTimeInSeconds / episodeDuration) * episodeFileSize

到目前为止,这段代码似乎在几秒钟内准确地根据字节位置估算了时间。

[我应该注意,这是假定图像的元数据将始终出现在mp3文件的开头,并且我不知道是否总是这样。

© www.soinside.com 2019 - 2024. All rights reserved.