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?
7
A
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
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