繁体   English   中英

Exoplayer、NanoHTTPD:Exoplayer 无法播放我在 NanoHTTPD 服务器上托管的 .mp3 文件

[英]Exoplayer, NanoHTTPD : Exoplayer is not able to play a .mp3 file that I am hosting on my NanoHTTPD server

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 object,url 就像“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 object

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM