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

问题描述

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()不能加载视频文件(文件过于大,不能被加载),我想解决,但是没有什么思路,不知道有什么办法。

解决方案

http://lovelease.iteye.com/blog/2105616

解决方案二:

源文件太大了,以前不做过,你试试能不能再qq音乐之类的音乐播放器中播放

时间: 2024-12-31 12:07:09

视频-android mediaPlayer播放了1.4G的MP4 抛出 传输量过大异常的相关文章

我的Android进阶之旅------>Android MediaPlayer播放mp3的实例--简易mp3播放器

大家好我们今天研究的是Android中很重要也最为复杂的媒体播放器---MediaPlayer. Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的. 首先来看看MediaPlayer的生命周期: 从MediaPlayer的生命周期图或者说是状态转移图上来看: 当一个MediaPlayer对象别创建或者调用reset()方法之后,它处于空闲状态,在调用release()方法

Android MediaPlayer播放prepareAsync called in state 8解决办法

 使用android MediaPlayer播放音频文件时,有时会出现prepareasync called in state 8错误. 以下方法可以避免这个异常出现.      private void playAudio(String audioUri){     Uri uri = Uri.parse(audioUri);   mMediaPlayer = MediaPlayer.create(getApplicationContext(), uri);  try { //在播放之前先判断

Android应用socket创建失败,抛出IOException,大神帮忙看看因为什么

问题描述 Android应用socket创建失败,抛出IOException,大神帮忙看看因为什么 上代码: 服务器端 package com.boge.server.model; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.ServerSocket; imp

android webview视频-android webview播放视频

问题描述 android webview播放视频 我在activity中放置了一个webview,使用loadurl方法加载一个链接地址,里面有视频,现在的问题是视频能够播放,却不能全屏,在4.4以下的版本点击全屏按钮会回调onshowcustom方法,能够全屏,但是4.4以上就不行了,点击没有监听到任何回调方法,这又怎么处理,求解啊! 解决方案 http://blog.csdn.net/m1872216/article/details/8768813 解决方案二: 我的App里面有视频教学,但

Android MediaPlayer播放音乐有必要使用Service来调用吗?

问题描述 发现直接使用MediaPlayer播放音乐,退出程序后还是可以在后台继续播放?所以有个疑问,这样还需要使用Service吗? 问题补充:txlong_onz 写道 解决方案 这个就是activity和service的优先级了,如果在内存不够的情况下,优先级低的首先销毁,service的优先级比前端显示的activity高,在高于后端的activity了,到内存耗尽或者不足的情况下都会销毁的,android的程序在内存不够的情况下都是后台自动选择销毁的,一般按照优先级的,这就像是电量不足

Android提高之MediaPlayer播放网络视频的实现方法_Android

前面讲解了MediaPlayer播放网络音频,主要介绍了MediaPlayer关于网络音频的缓冲和进度条控制的方法,本文再来讲解一下MediaPlayer播放网络视频的方法.播放网络视频比播放网络音频需要多一个SurfaceView而已,在已经熟悉了MediaPlayer播放网络音频之后,相信大家对本文所述的播放网络视频也能很快地掌握. 先来看看本文程序运行截图,如下所示: 本文程序的视频来自http://daily3gp.com,大家可以替换程序中的视频链接,试试其他影片. main.xml的

Android MediaPlayer无法播放

问题描述 Android MediaPlayer无法播放 package com.example.cjlhappiness.a131; import android.media.MediaPlayer; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.B

surface-android mediaPlayer播放标清ts流是4:3的比例显示的

问题描述 android mediaPlayer播放标清ts流是4:3的比例显示的 5C 如题,现在使用surfaceView+mediaPlayer播放标清ts流,在机顶盒上视频是以4:3的比例显示,全屏的时候左右两端有一块黑屏,无法全屏显示:请问下如何设置使视频能够以16:9的比例显示.我用了mSurfaceHolder.setFixedSize(surfaceHeight surfaceWidth)方法设置surface的大小,还是没用 解决方案 好烦啊,用videoView也是一样不会全

Android提高之MediaPlayer播放网络视频的实现方法

前面讲解了MediaPlayer播放网络音频,主要介绍了MediaPlayer关于网络音频的缓冲和进度条控制的方法,本文再来讲解一下MediaPlayer播放网络视频的方法.播放网络视频比播放网络音频需要多一个SurfaceView而已,在已经熟悉了MediaPlayer播放网络音频之后,相信大家对本文所述的播放网络视频也能很快地掌握. 先来看看本文程序运行截图,如下所示: 本文程序的视频来自http://daily3gp.com,大家可以替换程序中的视频链接,试试其他影片. main.xml的