fixing possible race condition in output writing

This commit is contained in:
mmoussallam
2020-01-27 15:10:34 +01:00
parent de8eb420d4
commit a23a41a380
2 changed files with 7 additions and 4 deletions

View File

@@ -112,9 +112,9 @@ class FFMPEGProcessAudioAdapter(AudioAdapter):
:param bitrate: (Optional) Bitrate of the written audio file.
:raise IOError: If any error occurs while using FFMPEG to write data.
"""
directory = os.path.split(path)[0]
directory = os.path.dirname(path)
if not os.path.exists(directory):
os.makedirs(directory)
raise SpleeterError(f'output directory does not exists: {directory}')
get_logger().debug('Writing file %s', path)
input_kwargs = {'ar': sample_rate, 'ac': data.shape[1]}
output_kwargs = {'ar': sample_rate, 'strict': '-2'}
@@ -127,11 +127,11 @@ class FFMPEGProcessAudioAdapter(AudioAdapter):
.input('pipe:', format='f32le', **input_kwargs)
.output(path, **output_kwargs)
.overwrite_output()
.run_async(pipe_stdin=True, quiet=True))
.run_async(pipe_stdin=True, pipe_stderr=True, quiet=True))
try:
process.stdin.write(data.astype('<f4').tobytes())
process.stdin.close()
process.wait()
except IOError:
raise SpleeterError(f'FFMPEG error: {process.stderr.read()}')
get_logger().info('File %s written', path)
get_logger().info('File %s written succesfully', path)

View File

@@ -128,6 +128,9 @@ class Separator(object):
filename=filename,
instrument=instrument,
codec=codec))
directory = os.path.dirname(path)
if not os.path.exists(directory):
os.makedirs(directory)
if path in generated:
raise SpleeterError((
f'Separated source path conflict : {path},'