Wie erstelle ich mit ffmpeg eine Sinuswelle?

13

Ich möchte mit FFmpeg eine Audiodatei mit einer Sinuswelle erzeugen. Ich weiß, dass es einen sineFilter gibt, aber so weit ist es.

Ich habe es versucht:

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

um 5 Sekunden Audio bei 48 kHz im PCM S16LE-Format zu erstellen, aber ich habe die folgende Fehlermeldung erhalten:

Die Ausgabedatei # 0 enthält keinen Stream

und die testDatei ist leer.

UmNyobe
quelle
Sie können auch einen Sinus spielen, ohne eine Datei zu erstellen mit ffplay: stackoverflow.com/questions/5109038/linux-sinus-audio-generator/…
Ciro Santilli 22 病毒 审查 六四 事件 22

Antworten:

22

Verwenden Sie Folgendes, um ein 1000-Hz-Signal für eine Dauer von 5 Sekunden zu erzeugen:

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

Sie können hinzufügen -c:a pcm_s16le:

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

So stellen Sie die Abtastrate auch auf 48 kHz ein:

ffmpeg -f lavfi -i "sine=frequency=1000:sample_rate=48000:duration=5" -c:a pcm_s16le test.wav
Rajib
quelle
2
Sie können die Amplitude auch einstellen, indem Sie beispielsweise -af "volume=-18dB"Folgendes hinzufügen: (für -18 dBFS).
Mivk
6

Entschuldigung, dass Sie dies nicht getan haben, aber falls jemand aus der Zukunft danach sucht, wenn Sie dies in Stereo tun möchten, würden Sie Folgendes tun:

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

Sie können auch verwenden -filter_complexmit amerge:

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