安卓App能否播放RTMP直播流?ExoPlayer播放RTMP流问题咨询
安卓App播放RTMP直播流及ExoPlayer适配问题
一、安卓App能否播放RTMP直播流?
可以。安卓平台支持通过集成第三方组件实现RTMP流播放,RTMP作为主流直播协议,只要搭配对应的解码、播放库就能完成适配。
二、ExoPlayer能否播放RTMP流?
可以,但ExoPlayer核心库不默认包含RTMP支持,需额外集成专属扩展库,你的代码运行失败大概率是缺少该依赖导致。
问题排查与修正方案
- 添加RTMP扩展依赖
在Module级别的build.gradle中引入与ExoPlayer核心版本匹配的RTMP扩展:
// 替换2.X.X为你使用的ExoPlayer核心版本号,必须版本一致 implementation "com.google.android.exoplayer:exoplayer-rtmp:2.X.X"
- 调整MediaSource类型
RTMP属于直播流,更适合用LazyMediaSource适配,而非面向点播文件的ProgressiveMediaSource,修正后的代码:
ExoPlayer player = new ExoPlayer.Builder(this).build(); playerView.setPlayer(player); Uri uri = Uri.parse("rtmp://192.168.109.84/live"); MediaItem mediaItem = MediaItem.fromUri(uri); RtmpDataSource.Factory rtmpDataSourceFactory = new RtmpDataSource.Factory(); // 改用LazyMediaSource适配直播场景 MediaSource mediaSource = new LazyMediaSource.Factory(rtmpDataSourceFactory).createMediaSource(mediaItem); player.setMediaSource(mediaSource); player.prepare(); player.setPlayWhenReady(true);
- 额外检查项
- 确认设备与RTMP服务器处于同一局域网,网络连接正常
- 验证RTMP服务器正在正常推流,地址、流名称无错误
- 确保
AndroidManifest.xml已添加网络权限:<uses-permission android:name="android.permission.INTERNET" />
内容的提问来源于stack exchange,提问作者fadao838
相关产品推荐
相关产品推荐

