您的位置:首页 > 移动开发 > Android开发

Android多媒体---SurfaceView(播放视频)+Mediaplayer(音频)

2015-09-15 21:51 585 查看
前几天做了一个基于Mediaplayer的音频播放app过程还没整理好就没上传,这两天抽空整理下上传。

这一篇是Mediaplayer和Surfaceview的简单配合使用,Mediaplayer只能播放音频没有提供图像输出界面,需要用到Surfaceview显示Mediaplayer播放的图像输出,这个组件自带一个线程,需要Read权限。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>


步骤:

1)创建Mediaplayer对象并加载指定视频文件。

2)布局文件中定义Surfaceview或者在程序中创建,并为SurfaceHolder添加CallBack监听(以后再讲)

3)调用Mediaplayer的对象的setDisplay(SurfaceHolder sh)将锁播放的视频图像输出到指定的surfaceView组件

4)调用Mediaplayer的start()/stop()、pause()控制播放

Surfaceview布局:

<SurfaceView
android:id="@+id/surfaceview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>


在按钮操作中调用如下代码,实现音频视频同步播放

mBtn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (player==null){//防止太多对象吃内存
player=new MediaPlayer();
        }
player.reset();
try {
player.setDataSource(Environment.getExternalStorageDirectory()+"/123.mp4");
player.setAudioStreamType(AudioManager.STREAM_MUSIC);//播放类型(外放还是听筒)
player.setDisplay(surfaceView.getHolder());//设置视频播播放位置
player.prepare();
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
                    mp.start();
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: