android - Android 中的平滑擦洗视频

标签 android android-videoview android-mediacodec

我正在尝试使用 Android VideoView 实现流畅的视频清理。 MediaPlayerseekTo 方法不完全符合我的要求。它并没有精确地寻找我传递给它的毫秒数,它实际上是从最近的位置播放/跳转到最近的位置,而不是我想要的确切位置。框架也显示出很大的差距。不是毫秒的精确帧。

我四处搜索,发现 SEEK_CLOSEST_SYNC 只能寻找到最近的同步帧,而不是 EXACT。这取决于视频的生成方式。 我怎样才能实现平滑的擦洗并寻找准确的位置即使视频已暂停或播放。是否可以通过 Android VideoViewMediaPlayer 类实现,还是我应该改变方法?

最佳答案

这不是一个可以直接回答的问题。我自己花了一个月的时间研究并实现了它。

实现此目的的唯一方法是使用 MediaCodec .

可以看看this使用 MediaCodec 进行精确清理的项目。我在该项目中遇到的唯一问题是加载缓冲区并将其显示在表面上需要时间,大约需要 0.5 秒。

你也可以看看Grafica ,尤其是 MoviePlayer 类。另一个来源是 BigFlake网站。

我最终做的是使用 MediaCodec 创建我自己的实现,因为它们都没有提供我正在寻找的东西,因为我正在构建一个高尔夫分析器,我需要(实时)视频的精确(逐帧)擦洗。

您还可以查看 question我问这与此类似,我在其中添加了很多有关如何实现此目标的信息。虽然这个问题更多的是关于逐帧播放视频,但我认为其中包含有值(value)的信息。

关于android - Android 中的平滑擦洗视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53096333/

相关文章:

Android E/ExtMediaPlayer-JNI : env->IsInstanceOf fails E/MediaPlayer-JNI: JNIMediaPlayerFactory: bIsQCMediaPlayerPresent 0

Android 在媒体编解码器示例上应用补丁

android MediaCodec编码h.264只能编码一帧

java - 每次单击菜单时都会切换线性布局( ImageView )

android - TextView多行

android - 屏幕旋转问题。屏幕无法回到原来的 View

android - 在 4.0.4 中删除包含 videoView 的 fragment 时出错

android - 在ImageView中设置图片宽高

android - 在翻转时获取 ViewFlipper 的当前 View

android - MediaExtractor 的问题