如何在录制Android时获取视频的持续时间

如何在录制Android时获取视频的持续时间,android,video,record,duration,Android,Video,Record,Duration,我面临一个问题。我想在录制视频时获得视频的持续时间。 我可以得到视频的持续时间,当它的代码完成 MediaPlayer mp = MediaPlayer.create(mContext, Uri.parse(video)); if(mp == null) return -1; int duration = mp.getDuration(); mp.release(); 但我希望每次录制视频更新到progressbar时都能获得持续时间。 希望你的答复 private class

我面临一个问题。我想在录制视频时获得视频的持续时间。 我可以得到视频的持续时间,当它的代码完成

MediaPlayer mp = MediaPlayer.create(mContext, Uri.parse(video));
if(mp == null)
    return -1;
int duration = mp.getDuration();
mp.release();
但我希望每次录制视频更新到progressbar时都能获得持续时间。 希望你的答复

   private class PlaybackObserver extends Thread {

        public void run() {
            currentPosition = 0;
            try {
                while (!killObserverThread) {
                    Thread.sleep(1000);

                    currentPosition = (int) mediaPlayer.getCurrentPosition();

                    runOnUiThread(new Runnable() {
                        public void run() {

                                yourProgressBar.setProgress(currentPosition);


                        }
                    });
                }
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

   @Override
    protected void onDestroy() {

        super.onDestroy();

        killObserverThread = false;
    }
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();



        if (task == null || !task.isAlive()) {
            task = new PlaybackObserver();
            task.start();
        }

        startPlaying();

    }

为UiThread添加私有类以更新seekbar/progressbar。然后从onResume()开始操作。

谢谢您的回答。但我不明白你的解决办法。因为。我正在录制新的MediaRecorder()。我建立并开始这张唱片。在录制过程中,我无法为此文件创建mediaplayer。它总是返回空值。当文件记录完成时,将创建媒体文件!所以当记录运行时,我无法获取持续时间!