如何解决由MediaPlayer和MediaMetadataRetriever检索的不同帧
我正在使用 androidx.media2.player.MediaPlayer 在我的GlSurfaceView上显示视频。通常的流程是将表面纹理附加到mediaPlayer,调用mediaPlayer.seekTo(seekPos,MediaPlayer.SEEK_CLOSEST),等待onFrameAvailable()回调,然后通过surfaceTexture.updateTexImage()获取框架并将其呈现在View上。一切正常。
此外,我使用 android.media.MediaMetadataRetriever ,因为有时我需要一些帧作为位图。我只是调用retricer.getFrameAtTime(seekPos * 1000L,OPTION_CLOSEST)来获取帧并进行处理。尽管有点慢,它也可以正常工作。
但是有时由MediaPlayer和MediaMetadataReceiver检索到的帧不匹配。看起来它们获得了两个连续的帧,并且您可以清楚地看到它们之间的“运动”,尤其是在视频显示运动对象的情况下。即使我分别使用标志SEEK_CLOSEST和OPTION_CLOSEST,mediaPlayer.seekTo()和retricer.getFrameAt()是否有可能获得不同的帧吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。