2017-09-23 182 views
1

我最近在我的Android應用程序中開始使用ExoPlayer,但我面臨的問題是ExoPlayer無法通過其URL自動識別源類型。如何讓ExoPlayer通過它的URL識別源類型?

有什麼解決方案,我可以通過一個URL和ExoPlayer自動定義如何播放它(作爲視頻或HLS流)。

回答

0
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