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