Android 视频播放的几种方式

本例将介绍几种视频的播放方式,

一:调用系统默认播放器播放视频;

二:SurfaceView + MediaPlayer;

三:VideoView + MediaController;

四:HTML5 + WebView;

五:第三方包,Vitamio。


1,调用系统默认的播放器,采用Intent意图的方式调取系统默认的视频播放器:


//调用系统自带的播放器
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(uri, "video/*");
            startActivity(intent);


2,使用SurfaceView + MediaPlayer 绘制视频播放:


首先,初始化SurfaceView,并设置Callback,Callback是SurfaceHolder的回掉函数,可以帮助控制SurfaceHolder



SurfaceView sv = (SurfaceView) findViewById(R.id.surface_view);

        SurfaceHolder holder = sv.getHolder();

        holder.addCallback(new MyCallback());


为了可以播放视频或者使用Camera预览,我们需要指定其Buffer类型 ,设置风格
       

 holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        ViewGroup.LayoutParams lp = (ViewGroup.LayoutParams) sv.getLayoutParams();
        lp.height = 640;
        lp.width =640;
        Log.d("tag","ViewGroup is created succese");
        sv.setLayoutParams(lp);


其次,自定义callback,使其实现SurfaceHolder.Callback,用以监听SurfaceHolder的周期;


class MyCallback implements SurfaceHolder.Callback {
        MediaPlayer player = new MediaPlayer();
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            try {
                player.setDisplay(holder);
                player.setDataSource(Environment.getExternalStorageDirectory().getPath()+"/Download/video_480x360.mp4");
                player.prepare();
                Log.d("tag","Player is prepare");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            player.start();
        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

        }

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            if(player.isPlaying()){
                player.stop();
            }
            player.release();
            Log.d("tag","Player is release");
        }
    }


3,使用VideoView + MediaController 播放

<span style="white-space:pre">	</span>VideoView vv = (VideoView) findViewById(R.id.videoView);
        MediaController mc=new MediaController(this);
        vv.setMediaController(mc);
        vv.setVideoURI(Uri.parse("http://172.17.29.120/localuser/ljy/video/hetang.3gp"));
        vv.start();
        vv.requestFocus();


4,使用HTML5 + WebView 播放


首先使用H5创建一个.html文件,使用video标签,把该.html放入到assets目录下

<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		<video autoplay controls height="780" width="400" src="http://172.17.29.120/localuser/ljy/video/zhoupkding.3gp"> 视频加载失败  </video>
	</body>
</html>


autoplay:自动播放

controls:控制器

src:视频地址


其次,在Android布局中创建一个布局,添加WebView控件:


<WebView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/webView"/>

最后在java代码中


wv.loadUrl("file:///android_asset/index.html");

即可实现播放,可进行JS交互。






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值