diff options
| -rwxr-xr-x | youtube_dl/YoutubeDL.py | 2 | ||||
| -rw-r--r-- | youtube_dl/__init__.py | 1 | ||||
| -rw-r--r-- | youtube_dl/downloader/common.py | 1 | ||||
| -rw-r--r-- | youtube_dl/downloader/hls.py | 6 | ||||
| -rw-r--r-- | youtube_dl/options.py | 5 | 
5 files changed, 13 insertions, 2 deletions
diff --git a/youtube_dl/YoutubeDL.py b/youtube_dl/YoutubeDL.py index e1bd40843..2a3d6cd4a 100755 --- a/youtube_dl/YoutubeDL.py +++ b/youtube_dl/YoutubeDL.py @@ -263,7 +263,7 @@ class YoutubeDL(object):      the downloader (see youtube_dl/downloader/common.py):      nopart, updatetime, buffersize, ratelimit, min_filesize, max_filesize, test,      noresizebuffer, retries, continuedl, noprogress, consoletitle, -    xattr_set_filesize, external_downloader_args. +    xattr_set_filesize, external_downloader_args, hls_use_mpegts.      The following options are used by the post processors:      prefer_ffmpeg:     If True, use ffmpeg instead of avconv if both are available, diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 9f131f5db..f5f064241 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -369,6 +369,7 @@ def _real_main(argv=None):          'no_color': opts.no_color,          'ffmpeg_location': opts.ffmpeg_location,          'hls_prefer_native': opts.hls_prefer_native, +        'hls_use_mpegts': opts.hls_use_mpegts,          'external_downloader_args': external_downloader_args,          'postprocessor_args': postprocessor_args,          'cn_verification_proxy': opts.cn_verification_proxy, diff --git a/youtube_dl/downloader/common.py b/youtube_dl/downloader/common.py index fc7521598..de815612c 100644 --- a/youtube_dl/downloader/common.py +++ b/youtube_dl/downloader/common.py @@ -45,6 +45,7 @@ class FileDownloader(object):                          (experimental)      external_downloader_args:  A list of additional command-line arguments for the                          external downloader. +    hls_use_mpegts:     Use the mpegts container for HLS videos.      Subclasses of this one must re-define the real_download method.      """ diff --git a/youtube_dl/downloader/hls.py b/youtube_dl/downloader/hls.py index 10b83c6b2..cb34dc4ab 100644 --- a/youtube_dl/downloader/hls.py +++ b/youtube_dl/downloader/hls.py @@ -39,7 +39,11 @@ class HlsFD(FileDownloader):                  '-headers',                  ''.join('%s: %s\r\n' % (key, val) for key, val in headers.items())] -        args += ['-i', url, '-f', 'mp4', '-c', 'copy', '-bsf:a', 'aac_adtstoasc'] +        args += ['-i', url, '-c', 'copy'] +        if self.params.get('hls_use_mpegts', False): +            args += ['-f', 'mpegts'] +        else: +            args += ['-f', 'mp4', '-bsf:a', 'aac_adtstoasc']          args = [encodeArgument(opt) for opt in args]          args.append(encodeFilename(ffpp._ffmpeg_filename_argument(tmpfilename), True)) diff --git a/youtube_dl/options.py b/youtube_dl/options.py index 433245f00..39fc4306a 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -416,6 +416,11 @@ def parseOpts(overrideArguments=None):          dest='hls_prefer_native', action='store_true',          help='Use the native HLS downloader instead of ffmpeg (experimental)')      downloader.add_option( +        '--hls-use-mpegts', +        dest='hls_use_mpegts', action='store_true', +        help='Use the mpegts container for HLS videos, allowing to play the ' +             'video while downloading (some players may not be able to play it') +    downloader.add_option(          '--external-downloader',          dest='external_downloader', metavar='COMMAND',          help='Use the specified external downloader. '  | 
