[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 ffmpeg
--hls-prefer-ffmpeg Use ffmpeg instead of the native HLS --hls-prefer-ffmpeg Use ffmpeg instead of the native HLS
downloader downloader
--hls-use-mpegts Use the mpegts container for HLS videos, --hls-use-mpegts Use the mpegts container for HLS videos;
allowing to play the video while allowing some players to play the video
downloading (some players may not be able while downloading, and reducing the chance
to play it) 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. --external-downloader NAME Use the specified external downloader.
Currently supports aria2c, avconv, axel, Currently supports aria2c, avconv, axel,
curl, ffmpeg, httpie, wget curl, ffmpeg, httpie, wget

View File

@ -398,7 +398,10 @@ class FFmpegFD(ExternalFD):
args += ['-fs', compat_str(self._TEST_FILE_SIZE)] args += ['-fs', compat_str(self._TEST_FILE_SIZE)]
if protocol in ('m3u8', 'm3u8_native'): 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'] args += ['-f', 'mpegts']
else: else:
args += ['-f', 'mp4'] args += ['-f', 'mp4']

View File

@ -634,10 +634,18 @@ def parseOpts(overrideArguments=None):
help='Use ffmpeg instead of the native HLS downloader') help='Use ffmpeg instead of the native HLS downloader')
downloader.add_option( downloader.add_option(
'--hls-use-mpegts', '--hls-use-mpegts',
dest='hls_use_mpegts', action='store_true', dest='hls_use_mpegts', action='store_true', default=None,
help=( help=(
'Use the mpegts container for HLS videos, allowing to play the ' 'Use the mpegts container for HLS videos; '
'video while downloading (some players may not be able to play it)')) '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( downloader.add_option(
'--external-downloader', '--external-downloader',
dest='external_downloader', metavar='NAME', dest='external_downloader', metavar='NAME',