首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mp3编解码器也有I/p帧?

mp3编解码器也有I/p帧?
EN

Stack Overflow用户
提问于 2017-12-19 13:25:45
回答 1查看 63关注 0票数 1

我正在用Android媒体播放器播放mp3文件。但当我用seekTo(毫秒)函数来寻找一些随机时间时,每个安卓设备上的每个播放器都显示出细微的差异。时间上的差异大约是1秒。

我很好奇的是Mp3 MPEG1音频编解码器也有I帧/P帧的东西吗?我知道它是视频编解码器的属性,但是我想知道音频编解码器是否也有类似的属性,所以它需要跳到某个位置才能得到I帧来解码音频。如果是这样的话,这样的属性可以造成搜索时间的差异是合理的,因为每个玩家在不完全相同的时间开始。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-20 00:45:07

你可能会遇到三个不同的问题。

第一个是MP3帧大小。(这不同于视频的“帧”...只需将这种情况下的帧看作是编码到MP3中的样本块。)该帧大小通常为1,152个样本。你可以在该级别以下寻找,但它需要先在该级别下解码,并不是所有的玩家都会这样做。

第二个问题是钻头储液器。帧并不总是需要整个空间,编码器可以返回并用其他帧的数据填充它们,在需要的时候有效地使用更多的带宽,同时保持在恒定的比特率内。天真的播放器通常会寻找下一个MP3同步字(11111111 111xxxxx),并从那里向编解码器发送数据。编解码器不会总是有它需要在那个时刻解码的信息,因为缺少比特储存器信息。它可以播放一点毛刺的声音,也可以保持沉默,直到它有足够的信息。这两种行为都存在于野外。

最后,第三个问题是普通的MP3文件/流中没有时间戳数据。在没有解码到所需搜索点的情况下搜索到文件中,这只是猜测。为了提高效率,玩家通常会通过猜测他们应该从哪里开始,而不是“落针”到流中。如果播放器知道您有一个320 kbit/s的CBR流,并且它知道文件大小,它可以猜测文件在时间上有多长,并简单地平均分配以获得所需查找时间的字节偏移量。正如您可以想象的,即使使用CBR,这也是不精确的。对于VBR,一些玩家将使用他们到目前为止看到的比特率的平均值。其他人则根本不允许寻找。其他人将查看第一帧,假设CBR,并将整个文件视为与第一帧相同的比特率。(有时播放VBR文件,并观察该文件的前几秒结束时间戳的变化。这是因为玩家正在猜测长度是多少。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47880483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档