ExoPlayer不适用于某些流

Tom*_*m11 5 android stream audio-streaming exoplayer

我有这种类型的流: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);
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助.

Mar*_*kan 6

我最近一直在解决同样的问题,并找到了解决方案.

您失败的URL是ShoutCast,这些HttpDataSource在Android 4上运行不正常.但是如果您设法替换它OkHttpDataSource,将正确检索数据.

您正在使用EMAudioPlayer,ExoPlayer用于流式传输音乐(适用于API级别16+).您可以轻松替换HttpDataSourceOkHttpDataSource:


    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);