使用 exoplayer 在 android 9 和 10 上播放流时出错

error playing stream on android 9 and 10 with exoplayer

String prp = "http://stream.dedyn.io:8000/dsbmradio.opus";

在 android 8 之前有效,但在 9 或 10 无效。请按照我使用的代码进行操作

BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector);
Uri videoURI = Uri.parse(prp);
DefaultHttpDataSourceFactory dataSourceFactory = new DefaultHttpDataSourceFactory("exoplayer_video");
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource mediaSource = new ExtractorMediaSource(videoURI, dataSourceFactory, extractorsFactory, null, null);

exoPlayerView.setPlayer(exoPlayer);
exoPlayer.prepare(mediaSource);
exoPlayer.setPlayWhenReady(true);

这是生成的错误

E/ExoPlayerImplInternal: Source error.
com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to http://rfmbrasil.servemp3.com:8000/uespi.ogg

由于您使用的是 "http" url,因此您无法在 android 9 及更高版本中播放视频。

从 Android 9(API 级别 28)开始,默认禁用明文支持。

查看以下答案了解更多信息