Jak wygenerować falę sinusoidalną za pomocą ffmpeg?


13

Chciałbym wygenerować plik audio z falą sinusoidalną za pomocą FFmpeg. Wiem, że jest sinefiltr, ale to tak daleko, jak to możliwe.

Próbowałem:

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

aby utworzyć 5 sekund dźwięku przy 48 kHz w formacie PCM S16LE, ale dostałem następujący komunikat o błędzie:

Plik wyjściowy nr 0 nie zawiera żadnego strumienia

i testplik jest pusty.


Odpowiedzi:


23

Aby wygenerować sygnał 1000 Hz przez 5 sekund, użyj tego:

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

Możesz dodać -c:a pcm_s16le:

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

Aby również ustawić częstotliwość próbkowania na 48 KHz:

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

2
Możesz także ustawić amplitudę, dodając na przykład: -af "volume=-18dB"(dla -18dBFS).
mivk

6

Przepraszamy za to, że trzeba to robić, ale jeśli ktoś z przyszłości będzie tego szukał, jeśli chcesz to zrobić w stereo, wykonaj następujące czynności:

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

Możesz także użyć -filter_complexz amerge:

ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -filter_complex "[0:a][0:a]amerge=inputs=2[aout]" -map "[aout]" output.wav
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.