Example #1
0
 def test_end_of_is_not_included(self):
     """Ensures that the end playlist is included"""
     playlist = PlaylistGenerator(self.playlist_entries, version=3)
     playlist.end_playlist = False
     self.assertTrue('#EXT-X-ENDLIST' not in playlist.generate())
Example #2
0
 def test_end_of_is_not_included(self):
     """Ensures that the end playlist is included"""
     playlist = PlaylistGenerator(self.playlist_entries, version=3)
     playlist.end_playlist = False
     self.assertTrue('#EXT-X-ENDLIST' not in playlist.generate())
Example #3
0
    seg_durations = dict()  # seg_durations[seq]代表索引下标seq对应的ts文件时长

    if start_seq == None:
        logger.warning("Incorrect Chunklist")
        sleep(chunk_retry_time)
        continue

    # 初始化last_write
    if last_write == -1:
        last_write = start_seq - 1

    seq = chunklist.media_sequence  # 起始ts文件的索引,通常为1(但对于类似于直播有多个m3u8文件的情况就不一样了)
    sleep_dur = 0
    updated = False
    list_end = chunklist.is_endlist  # 对于直播等场景,还会有下一个m3u8文件
    output_playlist.end_playlist = list_end
    output_playlist.duration = chunklist.target_duration

    for segment in chunklist.segments:
        seg_urls[seq] = urljoin(stream_uri, segment.uri)
        seg_durations[seq] = segment.duration
        logger.info(seg_urls[seq])
        sleep_dur = segment.duration
        seq = seq + 1

    old_start = new_start
    old_end = new_end
    new_start = start_seq  # 该ts文件列表起始ts文件的索引下标
    new_end = seq - 1  # 该ts文件列表结束ts文件的索引下标

    if old_end == -1:  # 这是第一个ts文件列表