[downloader/hls] Ask ffmpeg to quit when interrupting youtube-dl with 'Ctrl+C' (#8252)

Otherwise the mp4 file can't be played.
This commit is contained in:
Jaime Marquínez Ferrándiz 2016-01-16 21:51:25 +01:00
parent 7d4d9c526a
commit 9d90e7de03
1 changed files with 10 additions and 1 deletions

View File

@ -46,7 +46,16 @@ class HlsFD(FileDownloader):
self._debug_cmd(args) 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: if retval == 0:
fsize = os.path.getsize(encodeFilename(tmpfilename)) fsize = os.path.getsize(encodeFilename(tmpfilename))
self.to_screen('\r[%s] %s bytes' % (args[0], fsize)) self.to_screen('\r[%s] %s bytes' % (args[0], fsize))