18

I would like to generate an audio file with a sine (sinusoid) wave with FFmpeg. I know there is a sine filter but that's as far as it goes.

I tried:

fmpeg -filter "sine=48:1:5" -c:a pcms16le test

to create 5 seconds of audio at 48kHz in PCM S16LE format, but I got the following error message:

Output file #0 does not contain any stream

and the test file is empty.

1

2 Answers 2

35

To generate a 1000 Hz signal for 5 seconds duration use this:

ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" test.wav

You can add -c:a pcm_s16le:

ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -c:a pcm_s16le test.wav    

To also set the sampling rate to 48 KHz:

ffmpeg -f lavfi -i "sine=frequency=1000:sample_rate=48000:duration=5" -c:a pcm_s16le test.wav
1
  • 4
    You can also set the amplitude by adding for example: -af "volume=-18dB" (for -18dBFS). Commented Dec 29, 2017 at 15:16
15

If you wanted to do this in stereo, you would do the following:

ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -ac 2 output.wav

You could also use -filter_complex with amerge:

ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -filter_complex "[0:a][0:a]amerge=inputs=2[aout]" -map "[aout]" output.wav

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.