2011-10-10 82 views
5

我目前正在開發一款適用於android的視頻播放器。我創建了一個顯示當前字幕的簡單文本視圖。Android原生視頻播放器,帶字幕

問題是: MediaPlayer getCurrentPosition()方法只給我時間以秒爲單位。我需要毫秒數值才能正確同步字幕和電影。

getCurrentPosition應該給我以毫秒爲單位的時間,但它給出了以秒爲單位的時間* 1000(每個數字以「000」結尾)。

  1. 你知道更好的方法嗎?
  2. 如何獲得毫秒級的時間?
  3. 準確地在秒(000ms)時間內生成事件也可以。

有什麼建議嗎?

+0

從其中u已經學會在video.Can添加字幕你分享我的鏈接? – 2014-11-22 16:25:57

回答

3

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

我開發了字幕模塊。爲了得到準確的毫秒數,我爲系統和玩家定時器做了一個同步器。

視頻播放的每20秒我做這個程序:

  1. 索取當前秒的媒體播放器(得到的s秒)
  2. 索取當前秒的媒體播放器,直到結果爲s + 1(S0)
  3. 獲取系統時間(毫秒)時間(M0)

現在,如果我想在當前電影毫秒:

  1. 獲取當前系統時間(millisecons)(M1)
  2. 電影實時爲:S0 +(M1-M0)

容易,並且產生了同步字幕)

+2

是否有可能共享代碼。我正在研究類似的要求。任何幫助,將不勝感激 – maxwells

+0

不幸的是,該代碼是受版權保護的。我不擁有它:/ – inversus

+0

但是你可以分享它的一部分...... – user1767754

0

1)解析字幕文件
2)使用CounterTimer類將其設置爲player.getDuration(),然後在tick方法中設置一個您選擇的時間間隔(在每個時間間隔的tick上調用)獲取玩家的當前位置使用player.getCurrentPosition(); (記住這會以毫秒爲單位返回你的時間)。還請記住存儲並保持毫秒左右。
3)將其轉換爲您所需的格式,並將其與您拍攝的時間散列圖或陣列進行匹配。
4)用合適的文本更新你的TextView,它覆蓋在播放器上。
5)取消定時器持續時間然後(你可以實現一個新的定時器持續時間)。
6)onFinish時間計時器完成後(),您可以開始將舊定時器millisecondLeft時間你在步驟2,保存

完蛋了;)

+0

Tnks的答覆。我的player.getCurrentPosition()以秒爲單位返回值:53000ms,54000ms。用它來獲得真實的ms是不可能的。 – inversus