Android自带的播放视频有几种方法:
第一种方式是使用MediaPlayer 结合SurfaceView 来播放,通过MediaPlayer来控制视频的播放、暂停、进度等;
第二种方式是使用VideoView 来播放,这个类其实也是继承了SurfaceView 类,并且实现了MediaController. MediaPlayerController 这个用于控制媒体播放的接口,另外在VideoView上还有一个用于对媒体播放进行控制的面板,包括快进、快退、播放、暂停按钮以及一个进度条
第三种方式是利用第三方类库,例如:Vitamio 官网
1.VideoView的使用方法
setVideoViewPath(String path); 设置播放视频的路径
setVideoURL(Uri uri); 设置视频的URI
start(); 开始播放;
seekTo(int msec); 定位;
pause(); 暂停播放;
stop(); 停止播放;
setMediaController(MediaController); 设置MediaController 对象;
媒体控制面版常用方法:MediaController:
hide(); 隐藏MediaController;
show(); 显示MediaController
show(int timeout); 设置MediaController显示的时间,以毫秒计算,如果设置为0则一直到调用hide()时隐藏;
实例:
FileCache fileCache = new FileCache(context); VideoView ad = (VideoView) findViewById(R.id.welcome_video); ad.setMediaController(new MediaController(context)); ad.setVideoPath(fileCache.getCacheDir()+File.separator+"pad.mp4"); ad.start();
filecache 是自己工程的缓存引用,setMediaController设置播放控制条,可有可无。
2.SurfaceView 使用方法
SurfaceView它用于显示,SurfaceHolder是用于用来管理这个显示的SurfaceView对象的。
public SurfaceHolder getHolder () 得到SurfaceHolder对象用于管理SurfaceView
public abstract void addCallback (SurfaceHolder.Callback callback) 添加一个Callback对象监听SurfaceView的变化
public abstract void setType (int type) 设置SurfaceView的控制方式
实例:
surfaceView=(SurfaceView) this.findViewById(R.id.surfaceView); //设置SurfaceView自己不管理缓冲区 surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); surfaceView.getHolder().addCallback(new Callback() { @Override public void surfaceDestroyed(SurfaceHolder holder) { } @Override public void surfaceCreated(SurfaceHolder holder) { if (position>0) { try { //开始播放try { mediaPlayer.reset(); mediaPlayer .setAudioStreamType(AudioManager.STREAM_MUSIC); //设置需要播放的视频 mediaPlayer.setDataSource("/mnt/sdcard/movie.mp4"); //把视频画面输出到SurfaceView mediaPlayer.setDisplay(surfaceView.getHolder()); mediaPlayer.prepare(); //播放 mediaPlayer.start(); } catch (Exception e) { // TODO: handle exception }} catch (Exception e) { // TODO: handle exception} } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } });
3.Vitamio使用参照官方文档:https://www.vitamio.org/docs/
原文地址:http://blog.csdn.net/rain_butterfly/article/details/41681157