我正在尝试使用Android VideoView
实现流畅的视频清理。 seekTo
的{{1}}方法无法完全满足我的要求。它并没有精确地找到我经过的毫秒数,它实际上是从/跳到最近的位置,而不是我想要的精确位置。框架也显示有很大的间隙。不是毫秒的确切帧。
我继续四处搜索,发现MediaPlayer
只能搜索到最近的同步帧,而不能搜索到精确的同步帧。这取决于视频的生成方式。
我如何才能实现平滑的擦洗并寻求精确的位置,即使视频已暂停或正在播放。是否可以通过Android SEEK_CLOSEST_SYNC
或VideoView
类进行操作,还是应该更改方法?
答案 0 :(得分:2)
这不是一个直接回答的问题。我花了一个月的时间自己研究和实施。
唯一可以实现的方法是使用MediaCodec。
您可以查看使用MediaCodec
进行精确清理的this项目。我对该项目的唯一问题是加载缓冲区并将其显示在表面上需要花费大约0.5秒的时间。
您还可以查看Grafica,尤其是MoviePlayer
类。另一个来源是BigFlake网站。
我最终要做的是使用MediaCodec
创建自己的实现,因为在构建高尔夫球分析仪时,没有一个能够提供我想要的东西,我需要(实时)精确(框架) -每帧)清理视频。
您还可以查看一个question,它与此类似,在其中我添加了很多有关如何实现此目标的信息。尽管这个问题更多地是关于逐帧播放视频,但我认为其中包含有价值的信息。