summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJaime Marquínez Ferrándiz <[email protected]>2016-01-16 21:51:25 +0100
committerJaime Marquínez Ferrándiz <[email protected]>2016-01-19 22:07:14 +0100
commit9d90e7de03c20b8365ffbcbb17cad58cbfbe35a5 (patch)
tree39852b2c40a72faa41b6fa731a4dff9467dc19d9
parent7d4d9c526a3bbf483da33e886d17134244421537 (diff)
downloadyoutube-dl-9d90e7de03c20b8365ffbcbb17cad58cbfbe35a5.tar.gz
youtube-dl-9d90e7de03c20b8365ffbcbb17cad58cbfbe35a5.zip
[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.py11
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))