android播放网络或者本地视频(截取某帧做封面)VideoView原生控件

来源:互联网 发布:java tar.gz 编辑:程序博客网 时间:2024/05/17 01:01

使用android原生控件VideoView播放本地或者网络视频, 实现如下:
XML文件中:

        <VideoView            android:id="@+id/videoView"            android:layout_width="match_parent"            android:layout_height="match_parent"            />

Jave代码中:

        videoView = (VideoView)this.findViewById(R.id.videoView );        //本地的视频  需要在手机SD卡根目录添加一个 fl1234.mp4 视频        String videoUrl1 = Environment.getExternalStorageDirectory().getPath()+"/fl1234.mp4" ;        //网络视频        String videoUrl2 = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" ;        Uri uri = Uri.parse( videoUrl2 );        //设置视频控制器        videoView.setMediaController(new MediaController(this));        //播放完成回调        videoView.setOnCompletionListener( new MyPlayerOnCompletionListener());        //设置视频路径        videoView.setVideoURI(uri);        //开始播放视频        videoView.start();class MyPlayerOnCompletionListener implements MediaPlayer.OnCompletionListener {        @Override        public void onCompletion(MediaPlayer mp) {            Toast.makeText( MainActivity.this, "播放完成了", Toast.LENGTH_SHORT).show();        }    }

好了,运行吧
PS:不要忘了加权限
有的时候需要显示网络视频的某一帧做封面,接下来上实现代码:

public Bitmap getNetVideoBitmap(String videoUrl) {        Bitmap bitmap = null;        MediaMetadataRetriever retriever = new MediaMetadataRetriever();        try {            //根据url获取缩略图            retriever.setDataSource(videoUrl, new HashMap());            //获得第一帧图片            bitmap = retriever.getFrameAtTime();            imageView.setImageBitmap(bitmap);        } catch (IllegalArgumentException e) {            e.printStackTrace();        } finally {            retriever.release();        }        return bitmap;    }

这样就能获取到视频中的某一帧做封面了!!! 但是这段代码非常的耗时,我能想到的暂时的办法是开个线程放进去, 没有什么好的办法, 有能解决的麻烦告知一下,谢谢了!

原创粉丝点击