Add --hls-use-mpegts option
When using the mpegts container hls vidoes can be played while being downloaded (useful if you are recording a live stream). VLC and mpv play them file, but QuickTime doesn't.
This commit is contained in:
		| @@ -263,7 +263,7 @@ class YoutubeDL(object): | |||||||
|     the downloader (see youtube_dl/downloader/common.py): |     the downloader (see youtube_dl/downloader/common.py): | ||||||
|     nopart, updatetime, buffersize, ratelimit, min_filesize, max_filesize, test, |     nopart, updatetime, buffersize, ratelimit, min_filesize, max_filesize, test, | ||||||
|     noresizebuffer, retries, continuedl, noprogress, consoletitle, |     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: |     The following options are used by the post processors: | ||||||
|     prefer_ffmpeg:     If True, use ffmpeg instead of avconv if both are available, |     prefer_ffmpeg:     If True, use ffmpeg instead of avconv if both are available, | ||||||
|   | |||||||
| @@ -369,6 +369,7 @@ def _real_main(argv=None): | |||||||
|         'no_color': opts.no_color, |         'no_color': opts.no_color, | ||||||
|         'ffmpeg_location': opts.ffmpeg_location, |         'ffmpeg_location': opts.ffmpeg_location, | ||||||
|         'hls_prefer_native': opts.hls_prefer_native, |         'hls_prefer_native': opts.hls_prefer_native, | ||||||
|  |         'hls_use_mpegts': opts.hls_use_mpegts, | ||||||
|         'external_downloader_args': external_downloader_args, |         'external_downloader_args': external_downloader_args, | ||||||
|         'postprocessor_args': postprocessor_args, |         'postprocessor_args': postprocessor_args, | ||||||
|         'cn_verification_proxy': opts.cn_verification_proxy, |         'cn_verification_proxy': opts.cn_verification_proxy, | ||||||
|   | |||||||
| @@ -45,6 +45,7 @@ class FileDownloader(object): | |||||||
|                         (experimental) |                         (experimental) | ||||||
|     external_downloader_args:  A list of additional command-line arguments for the |     external_downloader_args:  A list of additional command-line arguments for the | ||||||
|                         external downloader. |                         external downloader. | ||||||
|  |     hls_use_mpegts:     Use the mpegts container for HLS videos. | ||||||
|  |  | ||||||
|     Subclasses of this one must re-define the real_download method. |     Subclasses of this one must re-define the real_download method. | ||||||
|     """ |     """ | ||||||
|   | |||||||
| @@ -39,7 +39,11 @@ class HlsFD(FileDownloader): | |||||||
|                 '-headers', |                 '-headers', | ||||||
|                 ''.join('%s: %s\r\n' % (key, val) for key, val in headers.items())] |                 ''.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 = [encodeArgument(opt) for opt in args] | ||||||
|         args.append(encodeFilename(ffpp._ffmpeg_filename_argument(tmpfilename), True)) |         args.append(encodeFilename(ffpp._ffmpeg_filename_argument(tmpfilename), True)) | ||||||
|   | |||||||
| @@ -415,6 +415,11 @@ def parseOpts(overrideArguments=None): | |||||||
|         '--hls-prefer-native', |         '--hls-prefer-native', | ||||||
|         dest='hls_prefer_native', action='store_true', |         dest='hls_prefer_native', action='store_true', | ||||||
|         help='Use the native HLS downloader instead of ffmpeg (experimental)') |         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( |     downloader.add_option( | ||||||
|         '--external-downloader', |         '--external-downloader', | ||||||
|         dest='external_downloader', metavar='COMMAND', |         dest='external_downloader', metavar='COMMAND', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jaime Marquínez Ferrándiz
					Jaime Marquínez Ferrándiz