首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mediaplayer seekTo()偏移量(字节)

mediaplayer seekTo()偏移量(字节)
EN

Stack Overflow用户
提问于 2013-03-23 19:50:51
回答 1查看 1.6K关注 0票数 1

我希望获得MediaPlayer类的MediaPlayer方法所使用的以字节为单位的偏移量。

我想知道是否有任何方法可以直接检索这些信息,如果没有,是否可以自己计算,例如:如果媒体文件的元数据中有一个已注册的比特率,并且我想在10秒内查找,我可以使用以下计算:

代码语言:javascript
复制
10(secs)*(bit rate per second)/8

我是否可以假设MediaPlayer使用MediaMetadataRetriever类检索比特率信息?

我读过以下文章:Accuracy of MediaPlayer.seekTo(int msecs)和我都知道可变比特率的问题,但我并不是在寻找seekto()方法的准确性,而是想要如何获得/计算它用于偏移量检索新数据的值。

EN

回答 1

Stack Overflow用户

发布于 2013-03-24 00:52:27

您基于偏移量实现seekTo()的目标是新颖的,但同时也存在多个挑战。在进入seekTo()实现之前,先对MediaPlayerMediaMetadataRetriever做一些澄清。这两个类都在内部使用一个MediaExtractor对象来检索metadata信息。因此,MediaPlayer不包括MediaMetadataRetriever类。

首先,让我们考虑提取比特率。MediaPlayer是一个应该支持多种文件格式的通用实现。因此,在您的设计中,您需要确保系统支持的所有文件格式都提取bitrate参数,比如MP4MPEG-2 TSAVIMatroska等音频格式,或者只有WAVMP3等音频格式。在最新的android实现中,我发现只有MP3Extractor通过kKeyBitrate键公开了比特率。

接下来,进入您的算法,我发现下面的挑战附加到一个基于大小的搜索。

  1. audiovideo曲目是以交错的方式存储的。因此,由于输入数据的交错性质,time * bitrate (in bytes)将不会有直接帮助。
  2. 需要考虑起始偏移量。在文件中,有一些metadataboxes存储在文件的开头,这是特定于文件格式的。您将不得不考虑这种偏移,这将是不同的格式不同。
  3. 如果您的输入有更多的歌曲,如audiovideotext,或者更确切地说是电影中的多首audio曲目,那么问题就会变得更加复杂。
  4. 视频帧的大小通常不规则。即使采用恒定比特率模型,视频帧的大小也会因帧类型的不同而有很大的差异。通常,与I-frame / IDR-Frame in H.264B-frame相比,P-frame可以消耗大量的位。这将给基于尺寸的seekTo()实现带来实际困难。人们可以很容易地观察到I和P帧的1:5比率。
  5. 您已经认识到,可变比特率模型有一定的影响。因此,我跳过了这一点。

有了上述几点,在不让您气馁的情况下,我觉得基于size的实现似乎很困难。

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

https://stackoverflow.com/questions/15591350

复制
相关文章

相似问题

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