detect method

Future<SourceKind> detect(
  1. String url
)

Implementation

Future<SourceKind> detect(String url)async{
  final lower = url.toLowerCase();
  if(lower.endsWith('.m3u8')) return SourceKind.hls;
  if(lower.endsWith('.mp4')) return SourceKind.mp4;
  try{
    final resp = await dio.head(url, options: Options(followRedirects: true));
    final ct = (resp.headers.value('content-type')??'').toLowerCase();
    if (ct.contains('application/vnd.apple.mpegurl') || ct.contains('application/x-mpegurl')) {
      return SourceKind.hls;
    }
    if (ct.contains('video/mp4')) return SourceKind.mp4;
  }catch(_){}
  //兜底
  return SourceKind.hls;
}