Come generare un'onda sinusoidale con ffmpeg?


13

Vorrei generare un file audio con un'onda sinusoidale (sinusoidale) con FFmpeg. So che esiste un sinefiltro, ma è quanto più lontano possibile.

Provai:

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

per creare 5 secondi di audio a 48kHz in formato PCM S16LE, ma ho ricevuto il seguente messaggio di errore:

Il file di output n. 0 non contiene alcun flusso

e il testfile è vuoto.


Risposte:


22

Per generare un segnale a 1000 Hz per 5 secondi, utilizzare questo:

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

Puoi aggiungere -c:a pcm_s16le:

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

Per impostare anche la frequenza di campionamento su 48 KHz:

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

2
È inoltre possibile impostare l'ampiezza aggiungendo ad esempio: -af "volume=-18dB"(per -18dBFS).
mivk,

6

Ci scusiamo per averlo negato, ma nel caso in cui qualcuno del futuro venga a cercarlo, se volessi farlo in stereo, faresti quanto segue:

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

Puoi anche usare -filter_complexcon amerge:

ffmpeg -f lavfi -i "sine=frequency=1000:duration=5" -filter_complex "[0:a][0:a]amerge=inputs=2[aout]" -map "[aout]" output.wav
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.