我有这种类型的流:http://radiohoryzont.jgora.pl:8050。 问题是,当我尝试使用ExoPlayer播放它时,抛出以下异常。
E / ExoPlayerImplInternal:内部轨道渲染器错误。 com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.upstream.HttpDataSource $ HttpDataSourceException: 无法连接到http://radiohoryzont.jgora.pl:8050
奇怪的是,在另一部手机上,它似乎正在运行(它适用于Android 6,但不适用于Android 4)。有人可以帮我这个吗?
我正在使用EMAudioPlayer。
mediaPlayer = new EMAudioPlayer(getApplicationContext());
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myURI);
提前感谢您的帮助。
答案 0 :(得分:5)
我最近一直在解决同样的问题,并找到了解决方案。
您失败的网址是ShoutCast,这些在Android 4上与HttpDataSource
无效。但是,如果您设法将其替换为OkHttpDataSource
,则会正确检索数据。
您正在使用EMAudioPlayer
,ExoPlayer
使用HttpDataSource
来传输音乐(API等级为16+)。您可以轻松地将OkHttpDataSource
替换为detailInit
:
TrackSelector trackSelector = new DefaultTrackSelector( new Handler(), new AdaptiveVideoTrackSelection.Factory( new DefaultBandwidthMeter() ) ); mediaPlayer = ExoPlayerFactory.newSimpleInstance( getApplicationContext(), trackSelector, new DefaultLoadControl() ); MediaSource source = new ExtractorMediaSource( myURI, new OkHttpDataSourceFactory( new OkHttpClient(), userAgent, null ), new DefaultExtractorsFactory(), null, null ); mediaPlayer.prepare(source); mediaPlayer.setPlayWhenReady(true);