Skip to content

write_audiofile causes corrupted output if writing to the original audio path #2541

@1plus1equal3

Description

@1plus1equal3

In an attempt to extend an audio clip by appending silence, I discovered that writing to the same audio file path causes the output file to become corrupted.

from moviepy import AudioFileClip, CompositeAudioClip, AudioClip

def silence_audio(duration):
    """Generate a silent audio clip of the given duration."""
    clip = AudioClip(lambda t: 0, duration=duration)
    return clip

def extend_audio(original_audio, extension_duration):
    """Extend the original audio by adding silence at the end."""
    silence_clip = silence_audio(extension_duration)
    extended_audio = CompositeAudioClip([
        original_audio,
        silence_clip.with_start(original_audio.duration)
    ])
    return extended_audio

Testing script:

audio_path = "./audio.wav"
sample_audio = AudioFileClip(audio_path)
sample_audio = extend_audio(sample_audio, 1.0)
print(f"Extended audio duration: {sample_audio.duration} seconds")
sample_audio.write_audiofile(audio_path)  # Causes corrupted output

The newly written audio file becomes corrupted if the original file still exists at audio_path.
However, if I delete the original file first (Ex: using os.remove(audio_path)), the new audio file is written correctly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionQuestions regarding functionality, usage

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions