小编Doc*_*Dbx的帖子

Android视频在多次播放错误1,2147483648后停止播放

好吧,这有点令人沮丧,我已经搜索过Stack,但没有一个答案似乎有所帮助.

我有一个Android应用程序,它循环屏幕上的不同内容.有一次,它播放视频,同一视频,从同一个地方加载.

在随机播放数量之后,它决定停止播放视频文件并向上抛出错误(-2147483648),这是一个未找到的通用文件/格式错误.

问题是视频在此错误出现之前多次正确播放.我已经尝试了许多替代方法来解决这个问题:

  • 一个VideoView播放文件(开始)
  • 从文件中读取MediaPlayer + SurfaceView组合
  • MediaPlayer + SurfaceView从文件描述符中读取
  • 强制使用世界可读的权限
  • 将文件复制到临时文件并播放
  • 手动释放VideoView和MediaPlayer选项的媒体播放器
  • 每次播放后运行手动垃圾收集

然而,经过多次播放后,它最终会拒绝播放视频.

可能会或可能不相关的一个变化是,当从文件描述符播放时,它会抛出媒体播放器准备Java I/O异常,我相信这可能与某些锁定发生在文件上有关.

解决此问题的唯一方法是重启设备.重新启动应用程序无法修复它,它会立即拒绝播放该文件.

这是VideoView播放代码:

// from main activity
File afile = new File(btvapp.fileroot,btvapp.getDailyVideo().get("FILENAME"));        
afile.setReadable(true, false);
theVideo = (VideoView) findViewById(R.id.videoViewer);
theVideo.requestFocus();
theVideo.setVideoPath(afile.getPath());
theVideo.setOnPreparedListener(this);
theVideo.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        // TODO Auto-generated method stub
        //mp.release();
        theVideo.stopPlayback();
        mp.release();
            finish();

    }
} );
theVideo.setOnErrorListener(new MediaPlayer.OnErrorListener() {
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
            finish();
            return false;
        }
    });

// play on …
Run Code Online (Sandbox Code Playgroud)

android android-mediaplayer android-videoview

6
推荐指数
1
解决办法
6780
查看次数