Search code examples
audioffmpegavconv

insert audio into another audio file (eg a censor bleep)


I need to insert a short beep into another audio file (similar to a censorship bleep) using linux and/or php.

I'm thinking there should be some way to do it with ffmpeg (with some combination of -t, concat, map, async, adelay, itsoffset?) or avconv or mkvmerge - but haven't found anyone doing this. Maybe I need to do it in 2 stages somehow?

For example if I have a 60 second mp3 and want to beep out 2 seconds at 2 places the desired result would be:

0:00-0:15  from original
0:15-0:17  beep (overwrites the 2 secs of original)
0:17-0:40  from original
0:40-0:42  beep
0:42-0:60  from original

I have a 2 second beep.mp3, but can use something else instead like -i "sine=frequency=1000:duration=2"


Solution

  • You can use the concat demuxer.

    Create a text file, e.g.

    file main.wav
    inpoint 0
    outpoint 15
    file beep.wav
    file main.wav
    inpoint 17
    outpoint 40
    file beep.wav
    file main.wav
    inpoint 40
    outpoint 42
    

    and then

    ffmpeg -f concat -i list.txt out.mp3
    

    Convert the beep file to have the same sampling rate and channel count as the main audio.