mirror of
https://github.com/YuzuZensai/spleeter.git
synced 2026-01-06 04:32:43 +00:00
fixing possible race condition in output writing
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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},'
|
||||
|
||||
Reference in New Issue
Block a user