MediaHTTPConnection:readAt 3110239/32768=>;java.net.ProtocolException错误

MediaHTTPConnection:readAt 3110239/32768=>;java.net.ProtocolException错误,java,android,Java,Android,我制作了一个应用程序,它只是从一个URL播放歌曲。这个URL将使用NanoHTTP创建。这个URL只是设备ip和端口地址的组合 代码规范 我刚刚收到这个URL作为消息。我得到了一个URL并将这个URL提供给媒体播放器类 try { if (mediaPlayer != null) { mediaPlayer.stop(); mediaPlayer.reset();

我制作了一个应用程序,它只是从一个URL播放歌曲。这个URL将使用NanoHTTP创建。这个URL只是设备ip和端口地址的组合

代码规范 我刚刚收到这个URL作为消息。我得到了一个URL并将这个URL提供给媒体播放器类

  try {

                if (mediaPlayer != null) {
                    mediaPlayer.stop();
                    mediaPlayer.reset();
                    mediaPlayer.release();
                    mediaPlayer = null;
                }
                if (handler != null) {
                    handler.removeCallbacks(notification);

                }
                mediaPlayer = new MediaPlayer();
                mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                // String url =  URLEncoder.encode(commandHelper.getSongDetails().getSongURL(), "UTF-8");
                String url = commandHelper.getSongDetails().getSongURL();
                Log.e("Tag", "Receiving Url  Data ::" + url);// Song URL ::: http://192.168.1.160:8085/
                mediaPlayer.setDataSource(url);
                mediaPlayer.prepare();
                mediaPlayer.start();

            } catch (IOException e) {

                DebugLog.e("Value ::" + e.getMessage());
                e.printStackTrace();
            }
我的网址是

问题

一切正常,但当我启动媒体播放器时,出现以下错误

  • W/MediaHTTPConnection:readAt 3110239/32768=>java.net.ProtocolException
而且我的设备挂断,设备没有响应。 我还尝试了mediaPlayer.prepareAsync()、mediaPlayer.prepare(FileDescriptor)来处理此错误,但得到了相同的结果

注意

这个问题是特定于操作系统的,只有在5.0(LOLIPOP)操作系统中才会出现

如果有人对此问题有正确的解决方案,请帮助我。我几乎没有尝试解决此问题,但我遇到了相同的错误。因此,请帮助解决此问题。

这是指向源代码(和操作系统)的链接

我找到了对我的案例的解释:编解码器MPEG-4 ODSM,MPEG-4 SDSM。
有了另一个来源(只有H.264,AAC),它就可以工作了

链接问题:
Android支持的格式:


因此,解决方案是尝试另一个源或对媒体重新编码。

对于我来说,当一个数据源被使用两次时,这个问题就发生了。我通过禁用缓存修复了它。问题是缓存保存了错误的长度或位置信息或其他信息。不知道为什么可能是因为压缩

我只是在特定的mp3文件上遇到了这个问题(我还在研究为什么只有这些文件受到影响)

Map headers=newhashmap();
headers.put(“内容类型”、“音频/mp3”);//如有必要,请更改内容类型
headers.put(“接受范围”、“字节”);
标题。放置(“状态”、“206”);
headers.put(“缓存控制”、“无缓存”);
Uri=Uri.parse(yourContentUrl);
setDataSource(getApplicationContext(),uri,头文件);

我也有同样的问题:(有什么帮助吗?你能找到发生这种情况的原因吗?
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "audio/mp3"); // change content type if necessary
headers.put("Accept-Ranges", "bytes");
headers.put("Status", "206");
headers.put("Cache-control", "no-cache");
Uri uri = Uri.parse(yourContentUrl);
player.setDataSource(getApplicationContext(), uri, headers);