gpt4 book ai didi

android - Mediaplayer 可以完美地从互联网流式传输,但不能从本地主机流式传输

转载 作者:行者123 更新时间:2023-11-29 21:02:26 25 4
gpt4 key购买 nike

我有一个接收音频流的媒体播放器。当我使用 Internet 流时,一切都完美无缺。当我出于测试目的切换到我的 mamp localhost url 时。它给我错误。

这是我的代码:

  private void initMediaPlayer() {
mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
startMP3(URL);
}

private void startMP3(String URL) {
if (intialStage) {
new Player().execute(URL);
}
}

class Player extends AsyncTask<String, Void, Boolean> {

@Override
protected Boolean doInBackground(String... params) {
Boolean prepared;
try {
Log.d(TAG, "MP3 URL: " + params[0]);
mPlayer.setDataSource(params[0]);
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
intialStage = true;
mPlayer.stop();
mPlayer.reset();
songPositionHandler.removeCallbacks(UpdateSongTime);
}
});

mPlayer.prepare();
prepared = true;
} catch (IllegalArgumentException e) {
prepared = false;
e.printStackTrace();
} catch (SecurityException e) {
prepared = false;
e.printStackTrace();
} catch (IllegalStateException e) {
prepared = false;
e.printStackTrace();
} catch (IOException e) {
prepared = false;
e.printStackTrace();
}
return prepared;
}

@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
Log.d(TAG, "Prepared status:" + " " + result);
mPlayer.start();
intialStage = false;
songPositionHandler = new Handler();
songPositionHandler.postDelayed(UpdateSongTime, 1000);
}
}

private Runnable UpdateSongTime = new Runnable() {
public void run() {
Log.d(TAG, "Current sec in song: " + TimeUnit.MILLISECONDS.toSeconds(mPlayer.getCurrentPosition()));
songPositionHandler.postDelayed(this, 1000);
}
};

这是我的网址:

public static final String URL = "http://localhost:8888/test.mp3";

它给了我这个异常(exception):

09-02 09:17:19.294    1835-1847/com.example.test E/MediaPlayer﹕ error (1, -2147483648)
09-02 09:17:19.294 1835-1848/com.example.test W/System.err﹕ java.io.IOException: Prepare failed.: status=0x1
09-02 09:17:19.294 1835-1848/com.example.test W/System.err﹕ at android.media.MediaPlayer.prepare(Native Method)
09-02 09:17:19.294 1835-1848/com.example.test W/System.err﹕ at com.example.test.AudioWaveForm$Player.doInBackground(AudioWaveForm.java:122)
09-02 09:17:19.294 1835-1848/com.example.test W/System.err﹕ at com.example.test.AudioWaveForm$Player.doInBackground(AudioWaveForm.java:104)
09-02 09:17:19.294 1835-1848/com.example.test W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
09-02 09:17:19.294 1835-1848/com.example.test W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
09-02 09:17:19.294 1835-1848/com.example.test W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
09-02 09:17:19.294 1835-1848/com.example.test W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
09-02 09:17:19.294 1835-1848/com.example.test W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
09-02 09:17:19.294 1835-1848/com.example.test W/System.err﹕ at java.lang.Thread.run(Thread.java:841)

有人能给我解释一下为什么它使用在线 url 而不是我的 mamp 吗?

最佳答案

localhost 是您的 android 主机。如果您正在运行模拟器,请引用此:How to connect to my http://localhost web server from Android Emulator in Eclipse或者如果您使用的是 Android 设备,请指定您电脑的 IP。

关于android - Mediaplayer 可以完美地从互联网流式传输,但不能从本地主机流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25619986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com