ExoPlayer 不适用于某些流

ExoPlayer not working for some streams

我有这种类型的流:http://radiohoryzont.jgora.pl:8050。 问题是,当我尝试使用 ExoPlayer 播放它时,抛出了以下异常。

E/ExoPlayerImplInternal: Internal track renderer error. com.google.android.exoplayer.ExoPlaybackException: com.google.android.exoplayer.upstream.HttpDataSource$HttpDataSourceException: Unable to connect to http://radiohoryzont.jgora.pl:8050

奇怪的是,在另一部手机 phone 上它似乎可以正常工作(它在 Android 6 上工作,但在 Android 4 上不工作)。有人可以帮我吗?

我正在使用 EMAudioPlayer。

 mediaPlayer = new EMAudioPlayer(getApplicationContext());
 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
 mediaPlayer.setDataSource(getApplicationContext(), myURI);

在此先感谢您的帮助。

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

对你来说失败的 URL 是一个 ShoutCast,它们不能很好地与 Android 上的 HttpDataSource 4. 但是,如果你设法用 [=11= 替换它], 数据将被正确检索。

您正在使用 EMAudioPlayer,它使用 ExoPlayer 播放音乐(适用于 API 16 级以上)。您可以轻松地将 HttpDataSource 替换为 OkHttpDataSource:


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