ExoPlayer用来自特定站点的网址口吃

时间:2019-07-15 12:17:56

标签: android audio exoplayer exoplayer2.x

因此,我的应用播放了Internet上的广播电台。除了播放101.ru的广播电台外,其他一切都很好。音乐断断续续,我不能说断断续续之间有相等的时间间隔。 我正在使用ExoPlayer库v2.8.0。

我试图解决什么:

  • 要将ExoPlayer更新到2.10.3-没有结果
  • 要试验Exoplayer的缓冲区大小-没有结果或最差的结果(几个小时的实验)

我的ExoPlayer初始化代码:

IcyHttpDataSourceFactory factory = new IcyHttpDataSourceFactory.Builder(Util.getUserAgent(context, userAgent))
            .setIcyHeadersListener(this)
            .setIcyMetadataChangeListener(this).build();
dataSourceFactory = new DefaultDataSourceFactory(context, null, factory);

RenderersFactory renderersFactory = new DefaultRenderersFactory(context);
TrackSelection.Factory trackSelectionFactory = new AdaptiveTrackSelection.Factory(new DefaultBandwidthMeter());
DefaultTrackSelector trackSelector = new DefaultTrackSelector(trackSelectionFactory);
LoadControl loadControl = new DefaultLoadControl();

player = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector, loadControl);
player.addListener(this);

我的ExoPlayer代码从URL播放:

player.prepare(generateMediaSource(Uri.parse(url)));

private MediaSource generateMediaSource(Uri uri) {
    return new ExtractorMediaSource.Factory(dataSourceFactory)
            .setExtractorsFactory(new DefaultExtractorsFactory())
            .createMediaSource(uri);
}

因此,101.ru拥有约80个广播电台,其中约95%处于停顿状态。但是,其他100-200个广播电台的质量也很高。 我该如何解决?谢谢

1 个答案:

答案 0 :(得分:1)

问题已解决。问题出在IcyHttpDataSourceFactory中。我在exoplayer github问题中有wrote,在这里我得到了答案:

版本应为2.10.3,并且您不应使用任何其他IcyHttpDataSourceFactory,因为它们在最新版本中添加了ICY支持。

因此,口吃得到了解决,声音现在变得清晰了。