0

我想獲得視頻持續時間,因爲我正在創建我的自定義媒體控制器。當我使用默認mediacontroller似乎沒有問題,因爲它顯示所有details.I要創建我自己的mediacontroller只在我的應用程序中添加一些圖形。 我無法使用以下任何代碼獲取在線視頻的總時長。 有些高手請幫忙。安卓視頻顯示總持續時間沒有使用媒體控制器

mVideoView.setOnPreparedListener(new OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 

      long duration1 = mp.getDuration(); 

      Log.d("DURATION of media player", duration1+""); 

      Log.d("Videoview duration", mVideoView.getDuration()+""); 

      int msec = MediaPlayer.create(getApplicationContext(),video).getDuration(); 

      Log.d("Duration of msec", msec+""); 

      try{ 
       //this block not working ... why??? 
       MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 
//video = uri.parse(String myurl) 
       retriever.setDataSource(getApplicationContext(),video); 

       String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 
       long timeInmillisec = Long.parseLong(time); 

       long duration = timeInmillisec/1000; 
       long hours = duration/3600; 
       long minutes = (duration - hours * 3600)/60; 
       long seconds = duration - (hours * 3600 + minutes * 60); 
       finalTime = timeInmillisec; 
       Log.d("HH:MM:SS", hours+":"+minutes+":"+seconds+""); 

      }catch(IllegalArgumentException e){ 
       Log.d(TAG, "media meta retriever error"); 
       e.printStackTrace(); 
       Log.d(TAG, e.getMessage()+""); 

      } 

我最後一次嘗試總是返回非法參數異常雖然URL是正確播放,甚至使用VLC媒體播放器 我試圖爲它提供如

retriever.setDataSource (String path) 
retriever.setDataSource (Context context, Uri uri) 

回答

0

我終於得到了我的解決方案以下custom-android-media-controller 因爲我必須改變整個UI,我ne我不需要獲得我需要在自定義媒體控制器中顯示的總持續時間。

+0

你能指點我來學習android studio 2.2項目嗎?我想創建一個自定義媒體控制器以及。謝謝 – user1788736 2017-11-27 01:07:21

+0

檢查鏈接,你會發現那裏的示例項目 https://github.com/brightec/ExampleMediaController – 2018-02-23 07:44:57

0

不同的方式嘗試FFmpegMediaMetadataRetriever

FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever(); 
mmr.setDataSource("some URL"); 
mmr.release();