多媒体之播放视频——VideoView和MediaPlayer(MediaPlayer和SurfaceView结合)

来源:互联网 发布:福建网络干部培训学院 编辑:程序博客网 时间:2024/05/30 05:41

VideoView

一、简介:

这里写图片描述
后面讲解SurfaceView。
VideoView将视频的显示和控制集于一身,它的用法和MediaPlayer很相似,因为VideoView只是做好了一个封装而已,它的背后仍然是MediaPlayer来对视频文件进行的控制。而且VideoView并不是万能的视频播放工具,只支持3gp和MP4格式的视频格式的播放,但如果只是用于播放一些游戏的片头动画,或者某个应用的视频宣传,使用VideoView还是绰绰有余的,但编写强大的视频播放器就不太现实了呢。

二、使用:

VideoView的使用非常简单,布局只需要添加VideoView组件,设置宽高即可,代码中,主要用到下面划红线的方法
这里写图片描述
注:不要忘了加权限,这里播放手机中存储的视频,需要读权限:

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  • 常用的其他方法:
    resume():将视频重头开始播放。
    seekTo()
    setVideoPath()
    start()
    isPlaying()
    getDuration()

  • 释放资源:
    在onDestroy中需要调研过年suspend()方法,将资源释放掉。

不过一般我们不使用VideoView来播放视频,会用到第三方的播放器

三、范例:

功能:播放SD卡下名称为my.3gp的视频

MediaView:
这里写图片描述
读SD卡的权限:
这里写图片描述

MediaPlayer和SurfaceView结合


这里介绍一下SurfaceView和View的区别:

  • View:
    View必须由UI主线程去绘制。

  • SurfaceView:
    SurfaceView是自带绘制线程,独立于UI主线程之外;一些游戏界面,例如五子棋、飞机大战、贪吃蛇等可以用 SurfaceView来做,视频的播放也可以用 SurfaceView(此时它是独立的线程来绘制的视频界面。)

    这里我们仅展示一下SurfaceView中视频播放这样一个小功能,和MediaPlayer相结合。

用法:

  • 读权限:
  • 用法:
    1)布局中添加SurfaceView控件
    2)其他是MediaPlayer的用法,设置资源地址,类型,唯一不同的是需要设置setdisplay,在SurfaceView上进行播放视频。

范例:

总代码:

public class MainActivity extends Activity {    private Button mButtonsurface;    private SurfaceView surface;    private MediaPlayer mediaPlayer;//全局变量,避免每次点击都创建新对象    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mButtonsurface = (Button) findViewById(R.id.buttonsurface);        surface = (SurfaceView) findViewById(R.id.surfaceView);        mButtonsurface.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (mediaPlayer == null) {                    mediaPlayer = new MediaPlayer();                }                mediaPlayer.reset();                try {                    //设置视频地址                    mediaPlayer.setDataSource(Environment.getExternalStorageDirectory() + "/my.3gp");                    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置播放声音类型                    mediaPlayer.setDisplay(surface.getHolder());//设置在surfaceView上播放                    mediaPlayer.prepare();                    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {                        @Override                        public void onPrepared(MediaPlayer mp) {                            mediaPlayer.start();//准备需要一段时间,所以用监听                        }                    });                } catch (IOException e) {                    e.printStackTrace();                }            }        });    }}


功能:点击按钮时,相应的视频在SurfaceView上进行播放。

0 0
原创粉丝点击