2012-06-28 2 views
7

С libvlc, как мне получить libvlc_media_player_get_time(), чтобы вернуть более точный результат? С видео 60fps значение, которое он возвращает, обновляется только несколько раз в секунду максимум. Есть ли способ получить точное время кадра?Как мне получить libvlc_media_player_get_time(), чтобы вернуть более точный результат?

+0

У меня проблема с этим сейчас, потому что игрок я строю сделан для воспроизведения коротких видео (<1 мин в длину) и медленные обновления времени чтобы индикатор положения выглядел вялым и прерывистым. Удручает, что для этого нет реального решения. – arjabbar

ответ

7

Этот issue говорит, что нет никакого способа получить более точный результат из libvlc.

Но вы можете интерполировать его:

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

отлично, это потрясающее решение – user25

Смежные вопросы