DOCが言うように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;
}
};