[hls] Enable `--hls-use-mpegts` by default when downloading live-streams

* Also added option `--no-hls-use-mpegts` to disable this

Related: #96
This commit is contained in:
pukkandan 2021-02-26 21:51:31 +05:30
parent ed9b7e3dd3
commit 9bd2020476
3 changed files with 24 additions and 8 deletions

View File

@ -317,10 +317,15 @@ Then simply run `make`. You can also run `make yt-dlp` instead to compile only t
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

View File

@ -398,7 +398,10 @@ class FFmpegFD(ExternalFD):
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']

View File

@ -634,10 +634,18 @@ def parseOpts(overrideArguments=None):
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',