2012-12-29 7 views
1

스트리밍 모드에서 .mp4 및 .3gp 비디오를 재생하고 싶지만 비디오가 재생되지 않고 가져올 수 없습니다.이 비디오는 mesage로 재생할 수 없습니다. 검색 한 적이 있지만 없습니다. 누군가 해결책이 있다면 나에게 도움이된다. 미리 감사드립니다. 서버에서 비디오를 재생할 수 없습니다 android

getWindow().setFormat(PixelFormat.TRANSLUCENT); 
    String path = "http://commonsware.com/misc/test2.3gp"; 
    mVideoView.setVideoPath(path); 
    holder=mVideoView.getHolder(); 
    mp=new MediaPlayer(); 
    mp.setDataSource(path); 
    mp.setScreenOnWhilePlaying(true); 
    mp.setDisplay(holder); 
    mp.prepare(); 
    mp.start(); 
    mVideoView.setOnCompletionListener(new OnCompletionListener() { 

     public void onCompletion(MediaPlayer mp) { 
      // TODO Auto-generated method stub 
     finish(); 
     } 
    }); 
+0

당신이 다른 비디오와 함께이 문제를 확인 했습니까? –

+0

많은 동영상을 확인했지만 미안하지만이 비디오는 재생할 수 없습니다 .. – kanna

답변

3

활동에 OnPreparedListener 구현, onPrepared 방법으로() mp.start를 넣어하려고 내 코드,

public class VideoPlayerActivity extends Activity implements 
     OnBufferingUpdateListener, OnCompletionListener, 
     OnPreparedListener, OnVideoSizeChangedListener, SurfaceHolder.Callback { 

    private static final String TAG = "MediaPlayerDemo"; 
    private int mVideoWidth; 
    private int mVideoHeight; 
    private MediaPlayer mMediaPlayer; 
    private SurfaceView mPreview; 
    private SurfaceHolder holder; 
    private String path; 
    private static final int STREAM_VIDEO = 5; 
    private boolean mIsVideoSizeKnown = false; 
    private boolean mIsVideoReadyToBePlayed = false; 

    /** 
    * 
    * Called when the activity is first created. 
    */ 
    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 
     mPreview = (SurfaceView) findViewById(R.id.VideoView); 
     holder = mPreview.getHolder(); 
     holder.addCallback(this); 
     holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    } 

    private void playVideo(Integer Media) { 
     doCleanUp(); 
     try {   
      path = "http://commonsware.com/misc/test2.3gp";    
      // Create a new media player and set the listeners 
      mMediaPlayer = new MediaPlayer(); 
      mMediaPlayer.setDataSource(path); 
      mMediaPlayer.setDisplay(holder); 
      mMediaPlayer.prepare(); 
      mMediaPlayer.setOnBufferingUpdateListener(this); 
      mMediaPlayer.setOnCompletionListener(this); 
      mMediaPlayer.setOnPreparedListener(this); 
      mMediaPlayer.setOnVideoSizeChangedListener(this); 

     } catch (Exception e) { 
      Log.e(TAG, "error: " + e.getMessage(), e); 
     } 
    } 

    public void onBufferingUpdate(MediaPlayer arg0, int percent) { 
     Log.d(TAG, "onBufferingUpdate percent:" + percent); 

    } 

    public void onCompletion(MediaPlayer arg0) { 
     Log.d(TAG, "onCompletion called"); 
    } 

    public void onVideoSizeChanged(MediaPlayer mp, int width, int height) { 
     Log.v(TAG, "onVideoSizeChanged called"); 
     if (width == 0 || height == 0) { 
      Log.e(TAG, "invalid video width(" + width + ") or height(" + height + ")"); 
      return; 
     } 
     mIsVideoSizeKnown = true; 
     mVideoWidth = width; 
     mVideoHeight = height; 
     if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) { 
      startVideoPlayback(); 
     } 
    } 

    public void onPrepared(MediaPlayer mediaplayer) { 
     Log.d(TAG, "onPrepared called"); 
     mIsVideoReadyToBePlayed = true; 
     if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) { 
      startVideoPlayback(); 
     } 
    } 

    public void surfaceChanged(SurfaceHolder surfaceholder, int i, int j, int k) { 
     Log.d(TAG, "surfaceChanged called"); 

    } 

    public void surfaceDestroyed(SurfaceHolder surfaceholder) { 
     Log.d(TAG, "surfaceDestroyed called"); 
    } 


    public void surfaceCreated(SurfaceHolder holder) { 
     Log.d(TAG, "surfaceCreated called"); 
     playVideo(STREAM_VIDEO); 


    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     releaseMediaPlayer(); 
     doCleanUp(); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     releaseMediaPlayer(); 
     doCleanUp(); 
    } 

    private void releaseMediaPlayer() { 
     if (mMediaPlayer != null) { 
      mMediaPlayer.release(); 
      mMediaPlayer = null; 
     } 
    } 

    private void doCleanUp() { 
     mVideoWidth = 0; 
     mVideoHeight = 0; 
     mIsVideoReadyToBePlayed = false; 
     mIsVideoSizeKnown = false; 
    } 

    private void startVideoPlayback() { 
     Log.v(TAG, "startVideoPlayback"); 
     holder.setFixedSize(mVideoWidth, mVideoHeight); 
     mMediaPlayer.start(); 
    } 
} 
+0

감사합니다 .. 오류가 발생합니다 java.io.IOException : setDataSource failed : 상태 = 0x80000000이 라인 mMadianPlayer.setDataSource (path); – kanna

+1

매니페스트에 권한을 추가 했습니까? – Talha

+0

알았어 .. 너무 많이 주셔서 .. 우 ​​.. 저를 구해 줬어요 ... – kanna

관련 문제