2012-06-28 12 views
7

Con libvlc, come faccio a ottenere libvlc_media_player_get_time() per restituire un risultato più accurato? Con il video a 60 fps, il valore restituito viene aggiornato solo poche volte al secondo. C'è un modo per ottenere tempi precisi di frame?Come ottengo libvlc_media_player_get_time() per restituire un risultato più accurato?

+0

Sto avendo un problema con questo ora perché il giocatore che sto costruendo è fatto per la riproduzione di video brevi (<1 min di lunghezza) e gli aggiornamenti in tempo lento fai in modo che l'indicatore di posizione appaia lento e mosso. È deprimente che non ci sia una vera soluzione per questo. – arjabbar

risposta

7

Questo issue dice che non c'è modo di ottenere risultati più accurati da libvlc.

Ma si può interpolare esso:

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

fantastico, questa è una soluzione eccezionale – user25

Problemi correlati