Android MediaPlayer无法通过URL播放流:网页可播放手机加载失败
Android流媒体加载失败问题
网页端可正常播放该流媒体链接,但手机端始终无法加载,相关配置与代码如下:
权限配置
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
实现代码
String url = "http://n13.radiojar.com/5705c71sn2zuv?rj-ttl=5&rj-tok=AAABhPz0EysAQfb4iRmp2q_BTQ"; mediaPlayer = new MediaPlayer(); // mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setAudioAttributes(new AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build()); mediaPlayer.setDataSource(url); // prepare async to not block main thread mediaPlayer.prepareAsync(); mediaPlayer.setOnPreparedListener(player -> { player.start(); });
排查与解决建议
适配Android明文网络限制:你的链接使用HTTP协议,Android 9(API 28)及以上默认禁止明文HTTP请求,需在
AndroidManifest.xml的application标签中添加配置:<application ... android:usesCleartextTraffic="true">添加错误监听定位问题:当前代码缺少错误回调,无法明确失败原因,建议补充监听逻辑:
mediaPlayer.setOnErrorListener((player, what, extra) -> { Log.e("MediaPlayerErr", "错误码:" + what + ",额外信息:" + extra); return false; }); mediaPlayer.setOnInfoListener((player, what, extra) -> { Log.i("MediaPlayerInfo", "信息码:" + what + ",额外信息:" + extra); return false; });通过日志可以快速判断是网络异常、格式不兼容还是其他问题。
替换为ExoPlayer增强兼容性:原生
MediaPlayer对部分流媒体格式/协议支持有限,改用ExoPlayer能更好适配各类流媒体资源,解决多数加载失败问题。检查手机网络环境:确认手机未开启代理、VPN,且网络连接正常,避免因网络链路问题导致无法访问流媒体地址。
内容的提问来源于stack exchange,提问作者Osdward
相关产品推荐
相关产品推荐

