我正在尝试使用 Android 实现流畅的视频擦除VideoView
. The seekTo
的方法MediaPlayer
没有完全按照我想要的方式做。它并不完全寻求我在其中传递的毫秒,它实际上从/跳转到最近的位置,而不是我想要的确切位置。框架也显示出很大的间隙。不是毫秒的精确帧。
我四处寻找并发现SEEK_CLOSEST_SYNC
只能寻找最近的同步帧,而不是精确的同步帧。这取决于视频的生成方式。
我怎样才能实现平滑的擦洗并寻求准确的位置即使视频暂停或播放。通过安卓可以吗VideoView
or MediaPlayer
类还是我应该改变方法?
这不是一个需要直接回答的问题。我自己花了一个月的时间研究和实现。
实现这一目标的唯一方法是使用媒体编解码器 https://developer.android.com/reference/android/media/MediaCodec.
你可以看看this https://github.com/protyposis/MediaPlayer-Extended使用进行精确擦洗的项目MediaCodec
。我在该项目中遇到的唯一问题是加载缓冲区并将其显示在表面上需要时间,大约需要 0.5 秒。
您还可以看看Grafica https://github.com/google/grafika,尤其是MoviePlayer
班级。另一个来源是BigFlake https://bigflake.com/mediacodec/网站。
我最终做的是使用创建我自己的实现MediaCodec
因为它们都没有为我提供我想要的东西,因为我正在构建高尔夫分析仪,所以我需要(实时)精确(逐帧)视频擦洗。
您还可以查看question https://stackoverflow.com/questions/52036704/mediacodec-handle-video-with-dropped-frames我问的与此类似,我在其中添加了很多有关如何实现这一目标的信息。虽然这个问题更多的是关于逐帧播放视频,但我认为其中有有价值的信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)