Android VideoView - 检测视频中的时间点

Posted

技术标签:

【中文标题】Android VideoView - 检测视频中的时间点【英文标题】:Android VideoView - Detect point of time in video 【发布时间】:2010-05-10 04:31:23 【问题描述】:

我正在使用 VideoView 来显示视频。我正在使用 setOnPreparedListener 和 setOnCompletionListener 在视频开始和结束之前和之后做一些事情。

我想知道如何才能检测视频中的某个时间点。例如,假设我想在视频播放 10 秒后将日志写入文件。如何检测 10s 标记?

谢谢 克里斯

【问题讨论】:

【参考方案1】:

第 1 步:使用postDelayed() 或其他东西来控制每一秒左右。

第 2 步:检查 getCurrentPosition() 并查看它是否在您想要的标记点附近。如果是这样,请进行处理。

第 3 步:起泡、冲洗、重复。

android 没有机制在视频中出现特定时间点时专门调用您,因此您必须使用轮询机制。

【讨论】:

根据我的经验,这在一定程度上有效,但不是很准确。也许 +/- 500 毫秒 使用 postDelayed 与使用计时器简单地检查当前位置相比是否有优势。我想知道在 Android 中使用处理程序与使用计时器是否有任何优势。 @sleeping.ninja:定时器需要线程; postDelayed() 没有。 @CommonsWare - 我是一个 Android 菜鸟,如果我错了,请纠正我。线程发生在幕后,对吗?因此,如果您设置一个计时器以每隔几毫秒检查一次视频位置(检查发生在单独的线程上),效率会不会更高。到达所需位置后,我可以强制在 UI 线程上发生一些事情。那有意义吗?你会称之为更好的方法吗?不要认为性能差异甚至值得辩论,但我只是想知道使用计时器是否是个好主意 @sleeping.ninja:“主线程”不是“播放视频内容”。视频内容始终由MediaPlayer 提供的线程播放。

以上是关于Android VideoView - 检测视频中的时间点的主要内容,如果未能解决你的问题,请参考以下文章

无法在android的videoview中播放来自url的视频如何在videoview中播放来自URL的视频?

使用VideoView播放视频

Android 使用VideoView实现简单视频播放

Android开发之使用VideoView播放视频

视频超出了 Android 中 VideoView 的边界

VideoView 不在 android Q 中播放视频,但在较低的 android 版本中工作正常