MediaPlayer不仅可以播放视频,还可以与SurfaceView的配合,SurfaceView主要用于显示MediaPlayer播放的视频流媒体的画面渲染,两者可以一起协同播放视频。 基础维护 先来看下要实现的界面: 如果你看过上篇文章,就发现其实很简单的就是多了一个进度条,还有一个就是SurfaceView,就是下面那块黑色区域; 布局文件代码: <LinearLay...
3)activity oncreate 进行初始化 MediaPlayer, SurfaceView Holder 1if(mediaPlayer ==null) {2mediaPlayer =newMediaPlayer();3//不维持自身缓冲区,直接显示4//this value only use Hardware decoder before Android 2.35if(Build.VERSION.SDK_INT <Build.VERSION_CODES.HONEYCOMB6&&mHardwareDecoder) {7sv_video...
1.MediaPlayer除了可以播放音乐外,还可以播放视频,但是使用MediaPlayer播放音乐时,没有提供图像输出界面,可以使用SurfaceView组件来显示视频画面,首先,必须在布局文件activity_main.xml文件中定义SurfaceView组件,第二步就是创建MediaPlayer对象,加载要播放的视频,第三步就是将所要播放的视频画面输出到SurfaceView,使用MediaPla...
视频尺寸会自动填充surfaceView,所以想要调整视频尺寸 修改surfaceView就好了。 通过监听mediaplayer的回调函数“onVideoSizeChanged” 在里面修改surfaceView的宽高。 changeVideoSize publicvoidchangeVideoSize() {intvideoWidth =mediaPlayer.getVideoWidth();intvideoHeight =mediaPlayer.getVideoHeight();//根据视频尺寸去...
1. SurfaceView获取 2. SurfaceView实现CallBack MediaPlayer核心代码 1. 创建MediaPlayer实例 2. 实现OnPreparedListener 3. 开始播放视频 4. 暂停播放视频 5. 快进到某一位置 6. 释放MediaPlayer资源,画面退出时调用 常见问题处理 1. 视频播放时,SurfaceView区域黑屏 ...
使用SurfaceView+MediaPlayer,这种方式效果比较好,这里也重点介绍 SurfaceView从android 1.0就有了,十分好用。一般来说,UI对刷新都需要在UI线程中完成,但是,surfaceview可以在非UI线程中完成刷新。这样以来就很方便了,比如在线播放,就不需要自己去写handler来实现两个线程之间的通信了,直接可以在非UI线程中播放视频。
1.videoView+mediaPlayer videoView继承自SurfaceView。surfaceView是在现有View上创建一个新的Window, 内容显示和渲染是在新的Window中,这使得SurfaceView的绘制和刷新可以在单独的线程中进行。 由于SurfaceView的内容是在新建的Window中,这使得SurfaceView不能放在RecyclerView或ScrollView中,一些View中的特性也无法使用。
使用两个surfaceView方式,经过测试不行 使用一个MediaPlayer,在MediaPlayer上面加一层ImageView,每次播放完成后,获取视频的最后一帧的图像给ImageView,视频切换完成,ImageView隐藏,如此往复循环,可行 实践 1.获取视频流图片方式,通过MediaMetadataRetriever,测试发现,部分机器获取的Bitmap可能为空,无法解决,放弃 ...
1、调用player.setDataSource()方法设置要播放的资源,可以是文件、文件路径、或者URL。 2、调用MediaPlayer.setDisplay(holder)设置surfaceHolder,surfaceHolder可以通过surfaceview的getHolder()方法获得。 3、调用MediaPlayer.prepare()来准备。 4、调用MediaPlayer.start()来播放视频。
1.videoView+mediaPlayer videoView继承自SurfaceView。surfaceView是在现有View上创建一个新的Window, 内容显示和渲染是在新的Window中,这使得SurfaceView的绘制和刷新可以在单独的线程中进行。 由于SurfaceView的内容是在新建的Window中,这使得SurfaceView不能放在RecyclerView或ScrollView中,一些View中的特性也无法使用。