【问题标题】:Android Native Video player with subtitles带字幕的 Android 原生视频播放器
【发布时间】:2011-10-10 14:18:25
【问题描述】:

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

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

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

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

有什么建议吗?

【问题讨论】:

  • 你从哪里学会了在视频中添加字幕。你能把链接分享给我吗??

标签: android media-player android-videoview subtitle


【解决方案1】:

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

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

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

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

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

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

简单,并导致同步字幕;)

【讨论】:

  • 是否可以共享代码。我正在处理类似的要求。任何帮助将不胜感激
  • 我面临的唯一问题是当用户寻找视频时,字幕停止更新。
【解决方案2】:

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

就是这样;)

【讨论】:

  • 感谢回复。我的 player.getCurrentPosition() 以秒为单位返回值:53000 毫秒、54000 毫秒。用它来得到真正的女士是不可能的。
猜你喜欢
  • 2013-09-06
  • 2012-11-02
  • 1970-01-01
  • 2016-06-01
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多