2012-06-28 13 views
7

Z libvlc, jak mogę uzyskać libvlc_media_player_get_time(), aby zwrócić dokładniejszy wynik? Przy 60 klatkach na sekundę wideo wartość, którą zwraca, jest aktualizowana najwyżej kilka razy na sekundę. Czy jest jakiś sposób, aby uzyskać dokładny czas ramek?Jak uzyskać libvlc_media_player_get_time() zwrócić bardziej dokładne wyniki?

+0

Mam problem z tym teraz, ponieważ odtwarzacz buduję jest do odtwarzania filmów krótkich (<1 min długości) i powolne aktualizacje czasowych sprawić, aby wskaźnik pozycji wyglądał na spowolniony i wzburzony. To przygnębiające, że nie ma na to realnego rozwiązania. – arjabbar

Odpowiedz

7

Ten issue mówi, że nie ma sposobu, aby uzyskać dokładniejszy wynik z libvlc.

Ale można go interpolacji:

private long lastPlayTime = 0; 
private long lastPlayTimeGlobal = 0; 

/** 
* Get current play time (interpolated) 
* @see https://github.com/caprica/vlcj/issues/74 
* @return 
*/ 
public float getCurrentTime(){ 
    long currentTime = directMediaPlayer.getTime(); 

    if (lastPlayTime == currentTime && lastPlayTime != 0){ 
     currentTime += System.currentTimeMillis() - lastPlayTimeGlobal; 
    } else { 
     lastPlayTime = currentTime; 
     lastPlayTimeGlobal = System.currentTimeMillis(); 
    } 

    return currentTime * 0.001f; //to float 
} 
+0

świetnie, jest to niesamowite rozwiązanie – user25

Powiązane problemy