5

我目前正在为安卓开发视频播放器。我创建了一个显示当前字幕的简单文本视图。

问题是: MediaPlayer getCurrentPosition() 方法只给了我几秒钟的时间。我需要以毫秒为单位的值才能正确地将字幕与电影同步。

getCurrentPosition 应该给我以毫秒为单位的时间,但它以秒*1000 为单位给出时间(每个数字都以“000”结尾)。

  1. 你知道更好的方法吗?
  2. 如何获得以毫秒为单位的时间?
  3. 恰好在秒(000ms)的时间生成一个事件也可以。

有什么建议么?

4

2 回答 2

3

如果有人需要,我做了我的解决方案。

我开发了字幕模块。为了获得准确的毫秒数,我为系统和播放器计时器制作了一个同步器。

每播放 20 秒的视频,我执行以下程序:

  1. 向媒体播放器询问当前秒数(获得 s 秒数)
  2. 向媒体播放器询问当前秒数,直到结果为 s+1 (s0)
  3. 获取该时间(m0)的系统时间(毫秒)

现在,如果我想要当前电影毫秒:

  1. 获取当前系统时间(毫秒)(m1)
  2. 电影实时为:s0+(m1-m0)

容易,并导致同步字幕;)

于 2011-10-25T17:13:23.753 回答
0

1)解析字幕文件
2)利用 CounterTimer 类将其设置为 player.getDuration() 然后在 on tick 方法中设置您选择的间隔(在每个间隔的刻度上调用)获取播放器的当前位置使用 player.getCurrentPosition(); (请记住,这将以毫秒为单位返回您的时间)。还请记住存储并保留毫秒左。
3)将其转换为您想要的格式,并将其与您所采用的时间哈希图或数组相匹配。
4) 使用合适的文本更新覆盖在播放器上的 TextView。
5)然后取消持续时间的计时器(您可以实现具有持续时间的新计时器)。
6) 持续时间计时器在 onFinish() 中完成后,您可以使用您在步骤 2 中保存的毫秒左时间启动旧计时器。

就是这样 ;)

于 2012-08-20T11:12:48.147 回答