2014-06-05 2 views
0

문제가 있습니다. 내가 비디오를 녹음 할 때 비디오의 길이를 얻고 싶습니다. 이 마무리 코드녹화 중 비디오 재생 시간을 얻는 방법 - Android

MediaPlayer mp = MediaPlayer.create(mContext, Uri.parse(video)); 
if(mp == null) 
    return -1; 
int duration = mp.getDuration(); 
mp.release(); 

에 의해입니다하지만 난 비디오 녹화가 진행 막대에 업데이트 할 때 기간마다 얻을 할 때 나는 비디오의 지속 시간을 얻을 수 있습니다. 답장을 보내주세요.

답변

0
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()에서 시작하십시오.

+0

답장을 보내주십시오. 하지만 당신의 해결책을 이해하지 못합니다. 때문에. 나는 새로운 MediaRecorder()를 녹음하고있다. 나는이 기록을 세우고 시작했다. 녹음하는 동안 어떻게이 파일에 대한 mediaplayer를 만들 수 없습니다. 항상 null을 반환합니다. 파일 레코드가 완료되면 미디어 파일이 생성됩니다! 그래서 나는 레코드가 runing 때 기간을 얻을 수 없습니다! –

관련 문제