String path = "rtsp://192.168.60.195/cho/s.mp4-muxed.mp4";
Uri uriparse = Uri.parse(path);
mediaplayer.setDataSource(getApplicationContext(), uriparse); 와 같이 path를 지정하고 setDataSource()를 통해
가져오려는데 logcat에
05-06 15:32:02.511: I/MediaPlayer(29996): path is null
05-06 15:32:02.511: D/MediaPlayer(29996): Couldn't open file on client side, trying server side
05-06 15:32:02.511: E/MediaPlayer(29996): Unable to to create media player
05-06 15:32:02.511: V/CUSTOM_VIDEO_PLAYER(29996): IOExceptionsetDataSource failed.: status=0x80000000
와 같이 뜨며 실행되지 않고 죽어버립니다. path가 null이라길래 경로가 잘못되었나싶어 다 확인해봤는데
와우자, vlc, 그리고 테스트하려는 갤럭시텝 내부플레이어에선 모두 잘 동작합니다. 문제가 뭔지 모르겠네요.
아래는 소스코드입니다.
package com.example.video;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
import android.media.MediaPlayer.OnInfoListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.media.MediaPlayer.OnSeekCompleteListener;
import android.media.MediaPlayer.OnVideoSizeChangedListener;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.MediaController;
import android.widget.MediaController.MediaPlayerControl;
import android.widget.TextView;
public class MainActivity extends Activity {
Display currentDisplay;
SurfaceView surfaceview;
SurfaceHolder surfaceholder;
View mainView;
TextView statusview;
MediaPlayer mediaplayer;
MediaController controller;
int videowidth =0;
int videoheight = 0;
boolean readyToPlay;
public final static String LOGTAG = "CUSTOM_VIDEO_PLAYER";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceview = (SurfaceView)findViewById(R.id.surfaceView1);
surfaceholder=surfaceview.getHolder();
surfaceholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mainView = this.findViewById(R.id.MainView);
statusview = (TextView)findViewById(R.id.statusview);
mediaplayer = new MediaPlayer();
Uri uriparse = Uri.parse("rtsp://192.168.60.195/cho/s.mp4-muxed.mp4");
try
{
mediaplayer.setDataSource(getApplicationContext(), uriparse);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
Log.v(LOGTAG, "IllegalArgumentException" + e.getMessage());
finish();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
Log.v(LOGTAG, "IllegalStateException" + e.getMessage());
finish();
} catch (IOException e) {
// TODO Auto-generated catch block
Log.v(LOGTAG, "IOException" + e.getMessage());
finish();
}
statusview.setText("MediaPlayer DataSource Set");
currentDisplay = getWindowManager().getDefaultDisplay();
controller = new MediaController(this);
surfaceholder.addCallback(new Callback() {
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
Log.v(LOGTAG, "surfaceDestroyed Called");
}
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
Log.v(LOGTAG, "surfaceCreated Called");
mediaplayer.setDisplay(surfaceholder);
statusview.setText("MediaPlayer Display Surface Set");
try {
mediaplayer.prepareAsync();
} catch (IllegalStateException e) {
// TODO: handle exception
Log.v(LOGTAG, "IllegalStateException" + e.getMessage());
finish();
}
statusview.setText("MediaPlayer Preparing");
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
Log.v(LOGTAG, "surfaceChanged Called");
}
});