zoukankan      html  css  js  c++  java
  • The surface has been released 异常

    http://dingran.iteye.com/blog/1442502

    =====================================

    在使用surfaceView和MediaPlayer播放视频的时候出现了一个异常,纠结了很久,经过同事帮助,终于发现了问题的根源。

     

    异常如下:

     

    E/AndroidRuntime( 1765): Caused by: java.lang.IllegalArgumentException: The surface has been released
    E/AndroidRuntime( 1765):     at android.media.MediaPlayer._setVideoSurface(Native Method)
    E/AndroidRuntime( 1765):     at android.media.MediaPlayer.setDisplay(MediaPlayer.java:633)

     

     

    原因是在surfaceHolder还没准备好的时候,我就调用了MediaPlayer的start()方法。

     

    正确的播放流程应该是:

     

            surfaceView = (SurfaceView) findViewById(R.id.PlaySurfaceView);
            surfaceHolder = surfaceView.getHolder();
            surfaceHolder.addCallback(this);

     

          mediaPlayer.setDisplay(surfaceHolder);

     

    try {
                
                mediaPlayer.setDataSource(this, Uri.parse("/sdcard/bianxing.ts"));
                
            } catch (IllegalArgumentException e1) {
                e1.printStackTrace();
            } catch (SecurityException e1) {
                e1.printStackTrace();
            } catch (IllegalStateException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            try {
                mediaPlayer.prepare();
            } catch (IllegalStateException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
                
                @Override
                public void onPrepared(MediaPlayer mp) {
                    
                    mediaPlayer.start();
                    
                }
            });

     

    这样就可以正常播放了,唉,不容易啊,感谢同事的帮助。

     

    其实对Medialayer的封装来说,VideoView已经做的很好了,自己再写这些确实费力,期望以后扩展会好点


    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    STM32f469I discovery烧写demo例程
    dsp5509的中断系统
    DSP5509之采样定理
    DSP5509开发之FPGA接口
    mongodb学习之:安全和认证
    mongodb学习之:GridFS
    tornado之异步web服务一
    mongodb学习之:数据库命令以及固定集合
    docker: Dockerfile命令介绍
    mongodb学习之:聚合
  • 原文地址:https://www.cnblogs.com/iplus/p/4467404.html
Copyright © 2011-2022 走看看