地表最弱搬砖工 2016-02-15 16:22 采纳率: 100%
浏览 1676
已结题

android mediaPlayer播放了1.4G的MP4 抛出 传输量过大异常

package com.example.zyc.surfaceview;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Surface;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.io.File;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
private SurfaceView surfaceView;
private File file;
private Button playButton;
private Button pauseButton;
private Button stopButton;
private boolean isPlay;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

    //实现各种控件
    mediaPlayer = new MediaPlayer();
    surfaceView = (SurfaceView)findViewById(R.id.surfaceView1);
    playButton = (Button)findViewById(R.id.play);
    pauseButton = (Button)findViewById(R.id.pause);
    stopButton = (Button)findViewById(R.id.stop);

    //初始化一些变量
    isPlay = false;
    file = new File(Environment.getExternalStorageDirectory().getPath()+"/aa.mp4");
    pauseButton.setEnabled(false);
    //surfaceView.setBackgroundResource(R.drawable.bg);

    //实现三个按钮的方法
    playButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            mediaPlayer.reset(); //重置MediaPlay对象
            try {
                mediaPlayer.setDataSource(file.getAbsolutePath());  //读取视频文件地址
            }catch(IOException e){
                e.printStackTrace();
            }
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mediaPlayer.setDisplay(surfaceView.getHolder());  //将视频画面输出到surface上

            //确保视屏加载完毕才能够播放
            mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    Log.i("TAG","准备完毕开始播放");
                    mediaPlayer.start();                                //开始播放
                    pauseButton.setText("暂停");                        //pause此时为暂停
                    pauseButton.setEnabled(true);                       //pause按钮此时可用
                    isPlay = true;
                }
            });
            try {
                mediaPlayer.prepareAsync();     //让视频加载,加载完后自动执行onPrepared()
            }catch(Exception e){
                Log.i("TAG","加载发生错误");
            }

        }
    });

    pauseButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (isPlay == true) {
                pauseButton.setText("继续");
                mediaPlayer.pause();
                isPlay = false;
            } else {
                mediaPlayer.start();
                pauseButton.setText("暂停");
                isPlay = true;
            }
        }
    });

    stopButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(isPlay==true){
                mediaPlayer.stop();
                Toast.makeText(MainActivity.this,"已停止",Toast.LENGTH_LONG).show();
                pauseButton.setEnabled(false);
            }
        }
    });


}

@Override
protected void onDestroy() {
    if(isPlay==true){
        mediaPlayer.stop();
    }
    mediaPlayer.release();
    super.onDestroy();
}

}
以上是代码 用来播放小的MP4文件是没有什么问题。 但是我后来用来尝试播放一个1.4G的MP4文件后报出TransactionTooLargeException异常,原因是.prepareAsync()不能加载视频文件(文件过于大,不能被加载),我想解决,但是没有什么思路,不知道有什么办法。

  • 写回答

2条回答 默认 最新

  • devmiao 2016-02-16 00:48
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献