ffmpeg
--hls-prefer-ffmpeg Use ffmpeg instead of the native HLS
downloader
- --hls-use-mpegts Use the mpegts container for HLS videos,
- allowing to play the video while
- downloading (some players may not be able
- to play it)
+ --hls-use-mpegts Use the mpegts container for HLS videos;
+ allowing some players to play the video
+ while downloading, and reducing the chance
+ of file corruption if download is
+ interrupted. This is enabled by default for
+ live streams
+ --no-hls-use-mpegts Do not use the mpegts container for HLS
+ videos. This is default when not
+ downloading live streams
--external-downloader NAME Use the specified external downloader.
Currently supports aria2c, avconv, axel,
curl, ffmpeg, httpie, wget
args += ['-fs', compat_str(self._TEST_FILE_SIZE)]
if protocol in ('m3u8', 'm3u8_native'):
- if self.params.get('hls_use_mpegts', False) or tmpfilename == '-':
+ use_mpegts = (tmpfilename == '-') or self.params.get('hls_use_mpegts')
+ if use_mpegts is None:
+ use_mpegts = info_dict.get('is_live')
+ if use_mpegts:
args += ['-f', 'mpegts']
else:
args += ['-f', 'mp4']
help='Use ffmpeg instead of the native HLS downloader')
downloader.add_option(
'--hls-use-mpegts',
- dest='hls_use_mpegts', action='store_true',
+ dest='hls_use_mpegts', action='store_true', default=None,
help=(
- 'Use the mpegts container for HLS videos, allowing to play the '
- 'video while downloading (some players may not be able to play it)'))
+ 'Use the mpegts container for HLS videos; '
+ 'allowing some players to play the video while downloading, '
+ 'and reducing the chance of file corruption if download is interrupted. '
+ 'This is enabled by default for live streams'))
+ downloader.add_option(
+ '--no-hls-use-mpegts',
+ dest='hls_use_mpegts', action='store_false',
+ help=(
+ 'Do not use the mpegts container for HLS videos. '
+ 'This is default when not downloading live streams'))
downloader.add_option(
'--external-downloader',
dest='external_downloader', metavar='NAME',