ExoPlayer不适用于某些流

时间:2016-11-06 19:15:47

标签: 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);

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

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

您失败的网址是ShoutCast,这些在Android 4上与HttpDataSource无效。但是,如果您设法将其替换为OkHttpDataSource,则会正确检索数据。

您正在使用EMAudioPlayerExoPlayer使用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);