gpt4 book ai didi

android - Android MediaPlayer无法播放URL中的音乐

转载 作者:行者123 更新时间:2023-12-02 23:45:38 28 4
gpt4 key购买 nike

我有一个提供文件上传和下载功能的服务器端网络应用程序,还有一个将音乐文件上传到网站,然后通过某个URL请求上传的文件的Android应用程序。

我的网址的结构如下:http://mywebsite:8080/api/v1/files/fileById?fileId=<file_id>
当我尝试从网络浏览器获取文件时,它可以正常工作;浏览器下载文件,操作系统即可播放该文件。但是,当我尝试将之前描述的URL作为数据源放入MediaPlayer时,我得到了java.io.IOException: setDataSource failed.
MediaPlayer用法的代码:

private void startPlaying(Uri fileUri) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

try {
mediaPlayer.setDataSource(this, fileUri);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(preparedPlayer -> preparedPlayer.start());
}
catch (IOException e) {
LogUtil.loge(LOG_TAG, e);
stopPlaying();
return;
}

mediaPlayer.setOnCompletionListener(mp -> stopPlaying());
}

private void stopPlaying() {
if (mediaPlayer == null) { return; }
mediaPlayer.stop();
mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer = null;
}

UPD:也许我必须在服务器端实现到文件的直接链接。从URL播放音乐的所有样本都在请求直接URL到文件。

有什么建议么?

最佳答案

如果要从URL播放音乐,则必须输入字符串参数。

改成:

private void startPlaying(String url) {

mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);

try {
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(preparedPlayer -> preparedPlayer.start());
}
catch (IOException e) {
LogUtil.loge(LOG_TAG, e);
stopPlaying();
return;
}

mediaPlayer.setOnCompletionListener(mp -> stopPlaying());
}

关于android - Android MediaPlayer无法播放URL中的音乐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31953973/

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