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):
 | 
			
		||||
    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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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.
 | 
			
		||||
    """
 | 
			
		||||
 
 | 
			
		||||
@@ -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))
 | 
			
		||||
 
 | 
			
		||||
@@ -415,6 +415,11 @@ def parseOpts(overrideArguments=None):
 | 
			
		||||
        '--hls-prefer-native',
 | 
			
		||||
        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',
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user