2012-06-28 9 views
7

Con libvlc, ¿cómo obtengo libvlc_media_player_get_time() para obtener un resultado más preciso? Con video de 60 fps, el valor que devuelve solo se actualiza unas pocas veces por segundo como máximo. ¿Hay alguna manera de obtener el tiempo preciso de fotogramas?¿Cómo obtengo libvlc_media_player_get_time() para obtener un resultado más preciso?

+0

Estoy teniendo un problema con esto ahora porque el jugador que estoy construyendo está hecho para la reproducción de vídeos cortos (<1 min de duración) y las actualizaciones en tiempo lento hacer que el indicador de posición parezca lento y agitado. Es deprimente que no haya una solución real para esto. – arjabbar

Respuesta

7

Este issue dice que no hay forma de obtener resultados más precisos de libvlc.

Pero se puede interpolar que:

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

genial, esta es una solución increíble – user25

Cuestiones relacionadas