From: Jaime Marquínez Ferrándiz Date: Sat, 16 Jan 2016 20:51:25 +0000 (+0100) Subject: [downloader/hls] Ask ffmpeg to quit when interrupting youtube-dl with 'Ctrl+C' (... X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=9d90e7de03c20b8365ffbcbb17cad58cbfbe35a5;p=youtube-dl [downloader/hls] Ask ffmpeg to quit when interrupting youtube-dl with 'Ctrl+C' (#8252) Otherwise the mp4 file can't be played. --- diff --git a/youtube_dl/downloader/hls.py b/youtube_dl/downloader/hls.py index d186d402d..10b83c6b2 100644 --- a/youtube_dl/downloader/hls.py +++ b/youtube_dl/downloader/hls.py @@ -46,7 +46,16 @@ class HlsFD(FileDownloader): self._debug_cmd(args) - retval = subprocess.call(args, stdin=subprocess.PIPE) + proc = subprocess.Popen(args, stdin=subprocess.PIPE) + try: + retval = proc.wait() + except KeyboardInterrupt: + # 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') + raise if retval == 0: fsize = os.path.getsize(encodeFilename(tmpfilename)) self.to_screen('\r[%s] %s bytes' % (args[0], fsize))