X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=youtube_dl%2Fdownloader%2Fhls.py;h=2a775bf0023f7ddc09507d66ab660a8dd97d19b2;hb=7b8b007cd9b55326b45598130c9cdde8839d5340;hp=10b83c6b2665a035c33788bbf136dd511662bf3e;hpb=9d90e7de03c20b8365ffbcbb17cad58cbfbe35a5;p=youtube-dl diff --git a/youtube_dl/downloader/hls.py b/youtube_dl/downloader/hls.py index 10b83c6b2..2a775bf00 100644 --- a/youtube_dl/downloader/hls.py +++ b/youtube_dl/downloader/hls.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import os import re import subprocess +import sys from .common import FileDownloader from .fragment import FragmentFD @@ -39,7 +40,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)) @@ -53,8 +58,10 @@ class HlsFD(FileDownloader): # subprocces.run would send the SIGKILL signal to ffmpeg and the # mp4 file couldn't be played, but if we ask ffmpeg to quit it # produces a file that is playable (this is mostly useful for live - # streams) - proc.communicate(b'q') + # streams). Note that Windows is not affected and produces playable + # files (see https://github.com/rg3/youtube-dl/issues/8300). + if sys.platform != 'win32': + proc.communicate(b'q') raise if retval == 0: fsize = os.path.getsize(encodeFilename(tmpfilename))