Android MediaPlayer在尝试播放某些流时返回错误(1,-1004)
正如它在标题中所说,当尝试从一些流(如以下流)中进行流式传输时:Android MediaPlayer在尝试播放某些流时返回错误(1,-1004),android,media-player,audio-streaming,Android,Media Player,Audio Streaming,正如它在标题中所说,当尝试从一些流(如以下流)中进行流式传输时: http://173.192.137.34:8050 LogCat抛出错误(1,-1004),该错误被转换为: 媒体错误:文件或网络相关操作错误 同时,这个小样本可以播放许多其他流。 是因为流类型还是其他原因 package com.example.strm; import android.app.Activity; import android.media.AudioManager; import android.medi
http://173.192.137.34:8050
LogCat抛出错误(1,-1004),该错误被转换为:
媒体错误:文件或网络相关操作错误
同时,这个小样本可以播放许多其他流。
是因为流类型还是其他原因
package com.example.strm;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
public class EntryActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
InitializeStream();
} catch (Exception e) {
e.printStackTrace();
}
}
private void InitializeStream() throws Exception{
String url = "http://173.192.137.34:8050";
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(url);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
mediaPlayer.prepareAsync();
}
}
替换
mediaPlayer.prepareAsync();
与
我遇到了类似的问题。对我来说,一些流(https上的流)需要HTTP基本身份验证。即使我在使用:
SharedPreferences shared_prefs = getApplicationContext().getSharedPreferences("***_prefs", 0);
final String username = shared_prefs.getString("username", null);
final String password = shared_prefs.getString("password", null);
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password.toCharArray());
}
});
video_view.setVideoURI(Uri.parse(enclosure_url));
要进行身份验证,身份验证在setVideoURI
期间实际上没有发生。我必须在协议和域名之间插入基本HTTP身份验证凭据:
// in this app, only https urls required authentication, your logic may differ
if (enclosure_url.contains("https")) {
SharedPreferences shared_prefs = getApplicationContext().getSharedPreferences("***_prefs", 0);
final String username = shared_prefs.getString("username", null);
final String password = shared_prefs.getString("password", null);
enclosure_url = enclosure_url.replaceFirst("https://", "https://"+username+":"+password+"@");
}
video_view.setVideoURI(Uri.parse(enclosure_url));
我希望这段代码能帮助你
MediaPlayer mediaPlayer = new MediaPlayer();
player.setAudenter code hereioStreamType(AudioManager.STREAM_MUSIC);
player.setOnCompletionListener(this);
player.setOnErrorListener(this);
player.setOnInfoListener(this);
player.setOnPreparedListener(this);
player.setOnSeekCompleteListener(this);
player.setOnVideoSizeChangedListener(this);/*
player.setWakeMode(getApplicationContext(),PowerManager.PARTIAL_WAKE_LOCK);*/
try {
player.setDataSource(this, Uri.parse(url));
player.setOnPreparedListener(myContext);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
应该提供更多关于“问题发生的原因”以及如何解决的相关信息这只会使代码挂起,而不会修复问题,直到prepare方法完成。。。当文件在电话里的时候还不错,如果在网上的话就糟透了。。。
MediaPlayer mediaPlayer = new MediaPlayer();
player.setAudenter code hereioStreamType(AudioManager.STREAM_MUSIC);
player.setOnCompletionListener(this);
player.setOnErrorListener(this);
player.setOnInfoListener(this);
player.setOnPreparedListener(this);
player.setOnSeekCompleteListener(this);
player.setOnVideoSizeChangedListener(this);/*
player.setWakeMode(getApplicationContext(),PowerManager.PARTIAL_WAKE_LOCK);*/
try {
player.setDataSource(this, Uri.parse(url));
player.setOnPreparedListener(myContext);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}