parseSegment method

Future<List<String>> parseSegment(
  1. Uri uri,
  2. Map<String, Object>? headers
)

Parses M3U8 TS file segment URLs from the playlist at uri.

Returns a list of segment URLs.

Implementation

Future<List<String>> parseSegment(
  Uri uri,
  Map<String, Object>? headers,
) async {
  final HlsMediaPlaylist? playList =
      await parseMediaPlaylist(uri, headers: headers);
  if (playList == null) return <String>[];
  List<String> segments = <String>[];
  for (final Segment segment in playList.segments) {
    String? segmentUrl = segment.url;
    if (segmentUrl != null && !segmentUrl.startsWith('http')) {
      int relativePath = 0;
      while (segmentUrl!.startsWith("../")) {
        segmentUrl = segmentUrl.substring(3);
        relativePath++;
      }
      segmentUrl = '${uri.pathPrefix(relativePath)}/' + segmentUrl;
    }
    if (segmentUrl == null) continue;
    segments.add(segmentUrl);
  }
  return segments;
}