使用android mediaplayer播放.mp4时出现IOException
我试图在MediaPlayer中播放.mp4文件,但它总是在MediaPlayer.prepare()中引发IOException: 09-21 12:59:33.570 14926-14937/com.alex.videoplayertest E/MediaPlayer﹕ 错误(-2147483648,0) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ java.io.IOException:准备失败:状态=0x8000000 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 在android.media.MediaPlayer.prepare(本机方法) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 在com.alex.videoplayertest.MainActivity.onResume上(MainActivity.java:53) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 位于android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1185) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 在android.app.Activity.performResume上(Activity.java:5182) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 位于android.app.ActivityThread.performResumeActivity(ActivityThread.java:2732) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 位于android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2771) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2235) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 在android.app.ActivityThread.access$600(ActivityThread.java:141) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 位于android.os.Handler.dispatchMessage(Handler.java:99) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 位于android.os.Looper.loop(Looper.java:137) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 位于android.app.ActivityThread.main(ActivityThread.java:5041) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 位于java.lang.reflect.Method.Invokenactive(本机方法) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 位于java.lang.reflect.Method.invoke(Method.java:511) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)上 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ 在dalvik.system.NativeStart.main(本机方法) 这是我的密码:使用android mediaplayer播放.mp4时出现IOException,android,video,android-mediaplayer,mp4,sd-card,Android,Video,Android Mediaplayer,Mp4,Sd Card,我试图在MediaPlayer中播放.mp4文件,但它总是在MediaPlayer.prepare()中引发IOException: 09-21 12:59:33.570 14926-14937/com.alex.videoplayertest E/MediaPlayer﹕ 错误(-2147483648,0) 09-21 12:59:33.570 14926-14926/com.alex.videoplayertest W/System.err﹕ java.io.IOException:准备失
public class MainActivity extends Activity
{
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume()
{
super.onResume();
String file = "/storage/emulated/0/Download/media/Light_Bulb.mp4";
File f = new File(file);
if (f.exists())
{
mediaPlayer = new MediaPlayer();
mediaPlayer.setScreenOnWhilePlaying(true);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
if (mediaPlayer != null)
mediaPlayer.start();
}
});
mediaPlayer.reset();
try
{
FileInputStream fileInputStream = new FileInputStream(file);
mediaPlayer.setDataSource(getApplicationContext(), Uri.parse(file));
fileInputStream.close();
mediaPlayer.prepare();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
有人能帮我吗?试试使用
String file= Environment.getExternalStorageDirectory().toString()+"/Download/media/_29187_v.1_Light_Bulb_16HD_25fps.mp4";
File f = new File(file);
并加上
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
到您的清单文件我现在有了解决问题的方法
我真的不知道为什么使用MediaPlayer无法在我的测试应用程序中播放此视频,但使用VideoView就可以了 以下是我的Videoview代码:
public class VideoViewActivity extends Activity
{
VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_view);
videoView = (VideoView) findViewById(R.id.videoView);
}
@Override
protected void onResume()
{
super.onResume();
String file = Environment.getExternalStorageDirectory().toString() + "/Download/media/Light_Bulb.mp4";
File f = new File(file);
if (f.exists())
{
videoView.setMediaController(null);
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
videoView.start();
}
});
videoView.setVideoURI(Uri.parse(file));
}
findViewById(R.id.closeVideoView).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
System.exit(0);
}
});
}
@Override
protected void onPause()
{
super.onPause();
if (videoView != null)
videoView.stopPlayback();
}
您设置了权限吗?是的,我添加了写入外部存储的权限。我还需要什么吗?文件是否存在于该位置?您可以使用file.exists()进行检查;哪一行引用MainActivity.java:53?mediaPlayer.prepare()位于第53行。检查此链接,但我有一个视频文件,而不是音频文件