使用SurfaceView控件+MediaPlayer类播放视频的主要原理是把MediaPlayer对象的显示控件设置为SurfaceView对象。播放控制都是针对MediaPlayer对象,用法与播放音频相同。主要流程和对应的代码如下图:
播放视频的流程只是比播放音频多了设置显示控件一步。
下面编写一个用SurfaceView+MediaPlayer播放视频的例子。例子使用资源ID方式作为MediaPlayer的视频源,所以需将视频文件demo.mp4复制到项目的res/raw目录下。应用的界面和对应的主要代码如下:
为MediaPlayer设置显示控件时需要注意:不能在onCreate中设置,因为SurfaceView控件还未准备好,需要延迟一段时间再设置。因此,这个例子中在PLAY按钮按下时再设置。
要通过下面的语句设置视频分辨率,不然会根据窗口尺寸拉伸:
surfaceView.getHolder().setFixedSize(1080, 720);
视频显示尺寸(1080, 720)是根据SurfaceView在界面上尺寸和视频实际尺寸(640, 360)计算得出。
播放控制都是针对MediaPlayer对象,用法与播放音频相同。例子中还用SeekBar控件来显示播放