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

Chi*_*nki 4 java android

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

代码规范 我刚刚收到此URL作为Message。一个,我获取URL并将此URL提供给Media Player类。

  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();
            }
Run Code Online (Sandbox Code Playgroud)

我的网址就像http://192.168.1.160:8085/

问题

一切都很好,但是当我启动Media Player时出现以下错误

  • W / MediaHTTPConnection:readAt 3110239/32768 => java.net.ProtocolException

并且我的设备挂断并且设备没有响应。我也尝试使用mediaPlayer.prepareAsync(),mediaPlayer.prepare(FileDescriptor)处理此错误,但得到的结果相同。

注意

此问题是特定于OS的,仅在5.0(LOLIPOP)OS中发生。

如果有人对此问题有适当的解决方案,请帮助我。我很难尝试解决此问题,但是我遇到了相同的错误。因此请帮助解决此问题。

小智 5

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

我只对特定的mp3文件有此问题(我仍在研究为什么仅这些文件受到影响)。

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);
Run Code Online (Sandbox Code Playgroud)

  • 你能找到为什么会这样吗? (2认同)

Jul*_*ige 2

它是到源(和操作系统)的链接。

我找到了我的案例的解释:编解码器 MPEG-4 ODSM、MPEG-4 SDSM。
使用另一个源(仅 H.264、AAC),它可以工作。

链接问题:Android Marshmallow“无法播放此视频”错误
Android 支持的格式: http: //developer.android.com/guide/appendix/media-formats.html

因此,解决方案是尝试其他来源或重新编码您的媒体。