2012-05-28 70 views
1

下面的代碼是我的打法遠程視頻:錯誤代碼(200,-82),MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK Android中

Uri uri = Uri.parse(URLPath); 

vv.setVideoURI(uri); 
vv.setOnCompletionListener(new OnCompletionListener() { 
@Override 
public void onCompletion(MediaPlayer mp) { 
//play next one 
} 
}); 

vv.setOnErrorListener(new OnErrorListener() { 
@Override 
public boolean onError(MediaPlayer mp, int what, int extra) { 
return false; 
} 
}); 

它爲我的大多數設備。
但它不適用於某些設備(如三星Galaxy S2)。
我收到錯誤代碼Error (200,-82)
我發現它是MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK。 這是什麼意思?
以及如何避免它?

+0

什麼是媒體文件? .mp4,.3gp? – digiphd

回答

2

MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK如醫生說:

視頻流傳輸和其容器不適用於漸進 重放即視頻的索引(例如MOOV原子)不是在 文件的開始。

的MediaPlayer的經常改變錯誤狀態在播放視頻時,然後提示「無法播放此視頻」對話框,讓您通過記憶播放時間與復位MediaPlayer的發動機後重播視頻處理這些錯誤。

您可以在您的代碼OnErrorListener處理這種類型的錯誤爲:

private MediaPlayer.OnErrorListener mOnErrorListener = new MediaPlayer.OnErrorListener() { 

public boolean onError(MediaPlayer mp, int what, int extra) { 

    switch (what) { 

    case MediaPlayer.MEDIA_ERROR_SERVER_DIED: 
     Toast.makeText(PlayerActivity.this, "MEDIA_ERROR_SERVER_DIED", 
                Toast.LENGTH_SHORT).show();       
     return true; 
    case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK: 
     Toast.makeText(PlayerActivity.this, 
              "MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK", 
                Toast.LENGTH_SHORT).show(); 
     break; 
    case MediaPlayer.MEDIA_ERROR_UNKNOWN: 
     Toast.makeText(PlayerActivity.this, "MEDIA_ERROR_UNKNOWN", 
                Toast.LENGTH_SHORT).show(); 
     break; 
     } 

     setProgressContainer(true, getString(R.string.msg_handle_error)); 
     int position=mVideoView.getCurrentPosition(); 
     if(position>0){ 
        mCurPosition=position; 
     } 
     mVideoView.setVideoPath(mCurrentMediaUrl,position); 

     return true; 
     } 

}; 
+0

所以這是一個無法避免的錯誤? – brian

+0

另一個問題,這個錯誤是由不同的設備或不同的Android版本引起的? – brian

+0

這是收到此錯誤時執行操作和日誌的好方法,但是,在出現對話框之前,它不會捕獲錯誤。不知道你是否可以做到這一點。 – digiphd