2012-06-28 2 views
7

libvlcでは、より正確な結果を返すためにlibvlc_media_player_get_time()を取得するにはどうすればよいですか? 60fpsビデオでは、それが返す値はたかだか1秒間に数回しか更新されません。フレームの正確なタイミングを得る方法はありますか?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

関連する問題