如何让 ExoPlayer 通过其 URL 识别源类型?

How to make ExoPlayer recognizes a source type by its URL?

我最近开始在我的 Android 应用程序中使用 ExoPlayer,但我遇到的问题是 ExoPlayer 无法通过其 URL.

自动识别源类型

有什么解决方案可以让我传递 URL 并且 ExoPlayer 自动定义如何播放它(作为视频或 HLS 流)。

private MediaSource buildMediaSource(Uri uri, String overrideExtension) {
    int type = TextUtils.isEmpty(overrideExtension) ? Util.inferContentType(uri)
    : Util.inferContentType("." + overrideExtension);
    switch (type) {
      case C.TYPE_SS:
          return new SsMediaSource(uri, buildDataSourceFactory(false),
              new DefaultSsChunkSource.Factory(mediaDataSourceFactory), mainHandler, eventLogger);
      case C.TYPE_DASH:
          return new DashMediaSource(uri, buildDataSourceFactory(false),
              new DefaultDashChunkSource.Factory(mediaDataSourceFactory), mainHandler, eventLogger);
      case C.TYPE_HLS:
          return new HlsMediaSource(uri, mediaDataSourceFactory, mainHandler, eventLogger);
      case C.TYPE_OTHER:
          return new ExtractorMediaSource(uri, mediaDataSourceFactory, new DefaultExtractorsFactory(),
              mainHandler, eventLogger);
      default: {
          throw new IllegalStateException("Unsupported type: " + type);
    }
}

}

来源:https://github.com/google/ExoPlayer/blob/release-v2/demo/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java