diff options
author | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2016-01-16 21:51:25 +0100 |
---|---|---|
committer | Jaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com> | 2016-01-19 22:07:14 +0100 |
commit | 9d90e7de03c20b8365ffbcbb17cad58cbfbe35a5 (patch) | |
tree | 39852b2c40a72faa41b6fa731a4dff9467dc19d9 | |
parent | 7d4d9c526a3bbf483da33e886d17134244421537 (diff) |
[downloader/hls] Ask ffmpeg to quit when interrupting youtube-dl with 'Ctrl+C' (#8252)
Otherwise the mp4 file can't be played.
-rw-r--r-- | youtube_dl/downloader/hls.py | 11 |
1 files changed, 10 insertions, 1 deletions
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)) |