Android --- 多媒体应用(使用VideoView、TextureView播放视频)

本文介绍了在Android中如何利用VideoView和TextureView组件播放视频。VideoView通过setVideoPath()或setVideoURI()设置视频源,并调用start()方法播放。同时,MediaController用于提供图形化控制界面。为了使用TextureView播放,需要监听Surface创建完成。文章还提到了如何创建自定义的TextureViewPlayVideoActivity。
摘要由CSDN通过智能技术生成

在Android中提供了一个VideoView播放视频,用于播放视频文件,要想使用VideoView组件播放视频,首先需要在布局文件中创建该组件,然后在Activity中获取该组件,并用 setVideoPath() 方法或 setVideoURI() 方法加载要播放的视频,最后调用VideoView组件的 start() 方法来播放视频。


在android中,还提供了一个可以与VideoView组件结合使用的MediaContraller组件。

MediaContraller组件用于通过图形控制界面来控制视频的播放.

/**
 * //初始化
 * playVideo=(VideoView)findViewById(R.id.video_view);
 * MediaController mc=new MediaController(this);// 媒体控制器
 * // MediaController与VideoView关联
 * mc.setAnchorView(playVideo);
 * // VideoView与MediaController关联
 * playVideo.setMediaController(mc);
 * //调用播放
 * String path=new File(Environment.getExternalStorageDirectory(),
 *      "bhhd.mp4").getAbsolutePath();
 * System.out.println("path:"+path);
 * playVideo.setVideoPath(path);
 * playVideo.start();
 */

public class VideoViewActivity extends AppCompatActivity implements View.OnClickListener {
    VideoView videoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_view);
        videoView = (VideoView) findViewById(R.id.video_view);
        //设置视频播放路径
        videoView.setVideoPath("/mnt/sdcard/Movies/an_xiang.mp4");
        //设置播放控制器
        videoView.setMediaController(new MediaController(this));
        findViewById(R.id.btn_play).setOnClickListener(this);
        findViewById(R.id.btn_pause).setOnClickListener(this);
        findViewById(R.id.btn_stop).setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_play:
                videoView.start();
                break;
            case R.id.btn_pause:
                videoView.pause();
                break;
            case R.id.btn_stop:
                videoView.stopPlayback();
                break;
        }
    }
}


结合 TextureView 定义视频播放器

需要监听 Surface 创建完毕时才可以播放

private void init() {
        setSurfaceTextureListener(new SurfaceTextureListener() {
            @Override
            public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
                mSurface = new Surface(surface);
               start();
            }

            @Override
            public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {

            }

            @Override
            public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
                stop();
                return true;
            }

            @Override
            public void onSurfaceTextureUpdated(SurfaceTexture surface) {

            }
        });
    }

MediaPlayer 需要使用 setSurface(Surface) 方法来设置画面显示的位置 , 如果时 SurfaceView 需要用 setDisplay(SurfaceHolder)

private void initPlayer() {
        if (null == mPlayer) {
            mPlayer = new MediaPlayer();
            //设置准备监听
            mPlayer.setOnPreparedListener(onPreparedListener);
   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值