Android 视频深入解析

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 {  
                    //开始播放  
                        mediaPlayer.reset();  
                        mediaPlayer  
                        .setAudioStreamType(AudioManager.STREAM_MUSIC);  
                        //设置需要播放的视频  
                        mediaPlayer.setDataSource("/mnt/sdcard/movie.3gp");  
                        //把视频画面输出到SurfaceView  
                        mediaPlayer.setDisplay(surfaceView.getHolder());  
                        mediaPlayer.prepare();  
                        //播放  
                        mediaPlayer.start();          
                } 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/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值