带有字幕的Android Native Video播放器

时间:2011-10-10 14:18:25

标签: android media-player android-videoview subtitle

我正在开发一款适用于Android的视频播放器。我创建了一个简单的文本视图,显示当前的副标题。

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

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

  1. 你知道更好的方法吗?
  2. 如何以毫秒为单位获取时间?
  3. 完全在秒(000ms)时生成事件也可以。
  4. 有什么建议吗?

2 个答案:

答案 0 :(得分:3)

如果有人需要,我会解决问题。

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

视频播放每20秒我执行以下步骤:

  1. 向媒体播放器询问当前秒数(秒秒)
  2. 向媒体播放器询问当前秒数,直到结果为s + 1(s0)
  3. 获取该时间的系统时间(毫秒)(m0)
  4. 现在,如果我想要当前的电影毫秒:

    1. 获取当前系统时间(毫秒)(m1)
    2. 电影实时是:s0 +(m1-m0)
    3. 简单,并产生同步字幕;)

答案 1 :(得分:0)

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

多数民众赞成;)