我有一个应用程序,它只是播放歌曲从一个URL.This网址将创建使用NanoHTTP.This网址只是设备ip和端口地址的组合。
代码规范我刚刚收到这个URL作为Message.One,我得到了Message.One,并将这个URL提供给Media类。
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();
}
我的网址就像http://192.168.1.160:8085/
问题
一切都很好,但是当我开始使用媒体播放器时,却得到了以下错误
而且我的设备挂了,设备也没有响应。我也尝试过mediaPlayer.prepareAsync(),mediaPlayer.prepare(FileDescriptor)来处理这个错误,但是我得到了相同的结果。
Note
这个问题是操作系统特有的,它只发生在5.0(棒棒糖)操作系统。
如果有人对这个问题有正确的解决办法,请帮助我。我几乎不想解决这个问题,但是我得到了同样的error.so,请帮助解决这个问题。
发布于 2017-09-06 07:23:48
对我来说,当数据源被两次使用时,这个问题就会发生。我通过禁用缓存来修复它。问题是缓存节省了糟糕的长度或位置信息或其他什么。不知道为什么可能是因为压缩。
我只在特定的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);
发布于 2016-03-21 08:30:36
它是指向源代码(和操作系统)的链接。
我为我的案例找到了一个解释: codec MPEG-4 ODSM,MPEG-4 SDSM。
与另一个来源(只有H.264,AAC),它正在工作。
链接问题:Android Marshmallow "Can't play this video" error
Android支持的格式:http://developer.android.com/guide/appendix/media-formats.html
因此,解决方案是尝试另一个来源或重新编码您的媒体。
https://stackoverflow.com/questions/33568542
复制相似问题