如何解决Exoplayer、NanoHTTPD:Exoplayer 无法播放我在 NanoHTTPD 服务器上托管的 .mp3 文件
Exoplayer 抛出异常“UnrecognizedInputFormatException”。 这些文件是 .mp3 文件,我可以在浏览器上播放该文件或在 android 上使用 MediaPlayer 库。这是我用来提供文件的代码:
public NanoHTTPD.Response serveFile(String mime,Map<String,String> header,File file) {
NanoHTTPD.Response res;
String etag = Integer.toHexString((file.getAbsolutePath() +
file.lastModified() + "" + file.length()).hashCode());
long fileLen = file.length();
try {
res = newFixedLengthResponse(NanoHTTPD.Response.Status.OK,mime,new FileInputStream(file),fileLen);
res.addHeader("Content-Length","" + fileLen);
res.addHeader("ETag",etag);
return res;
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
}
这是我生成 MediaItem 对象的方式,网址类似于“http://192.168.23.12:8080/song/abc.mp3”
private static MediaItem getMediaItem(String songName) {
String url = String.format("http://%s:%s%s%s",hostIP,hostPort,Values.SONGS_PATH,songName);
Log.d("MusicPlayerControl","url : " + url);
Uri uri = Uri.parse(url);
return MediaItem.fromUri(uri);
}
static void playNewSong(SongListItem songName) {
MediaItem mediaItem = getMediaItem(songName.getSongName());
Log.d("MusicPlayerControl",songName.getSongName());
mediaPlayer.setMediaItem(mediaItem);
mediaPlayer.prepare();
mediaPlayer.play();
}
解决方法
这里的代码没有问题,我忘记初始化mediaPlayer对象
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。