player: Close ffmpeg stdin during streaming
A `stdin` of `None` means the ffmpeg subprocess input inherits from the parent process, which may cause undesired control from a terminal (e.g. `C` causes ffmpeg to prompt for a command). It also closes the parent's stdin when the subprocess exits. This commit switches to `subprocess.DEVNULL`, which provides a separate pre-closed stdin for ffmpeg subprocesses.
This commit is contained in:
		| @@ -203,7 +203,7 @@ class FFmpegPCMAudio(FFmpegAudio): | ||||
|  | ||||
|     def __init__(self, source, *, executable='ffmpeg', pipe=False, stderr=None, before_options=None, options=None): | ||||
|         args = [] | ||||
|         subprocess_kwargs = {'stdin': source if pipe else None, 'stderr': stderr} | ||||
|         subprocess_kwargs = {'stdin': source if pipe else subprocess.DEVNULL, 'stderr': stderr} | ||||
|  | ||||
|         if isinstance(before_options, str): | ||||
|             args.extend(shlex.split(before_options)) | ||||
| @@ -293,7 +293,7 @@ class FFmpegOpusAudio(FFmpegAudio): | ||||
|                  pipe=False, stderr=None, before_options=None, options=None): | ||||
|  | ||||
|         args = [] | ||||
|         subprocess_kwargs = {'stdin': source if pipe else None, 'stderr': stderr} | ||||
|         subprocess_kwargs = {'stdin': source if pipe else subprocess.DEVNULL, 'stderr': stderr} | ||||
|  | ||||
|         if isinstance(before_options, str): | ||||
|             args.extend(shlex.split(before_options)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user