Como gerar uma onda senoidal com ffmpeg?

13

Gostaria de gerar um arquivo de áudio com uma onda senoidal (sinusóide) com FFmpeg. Eu sei que existe um sinefiltro, mas isso é o mais longe possível.

Eu tentei:

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

criar 5 segundos de áudio a 48kHz no formato PCM S16LE, mas recebi a seguinte mensagem de erro:

O arquivo de saída # 0 não contém nenhum fluxo

e o testarquivo está vazio.

UmNyobe
fonte
Você também pode jogar uma condição sine sem criar um arquivo com ffplay: stackoverflow.com/questions/5109038/linux-sinus-audio-generator/...
Ciro Santilli冠状病毒审查六四事件法轮功

Respostas:

22

Para gerar um sinal de 1000 Hz por 5 segundos de duração, use este:

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

Você pode adicionar -c:a pcm_s16le:

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

Para também definir a taxa de amostragem para 48 KHz:

ffmpeg -f lavfi -i "sine=frequency=1000:sample_rate=48000:duration=5" -c:a pcm_s16le test.wav
Rajib
fonte
2
Você também pode definir a amplitude adicionando, por exemplo: -af "volume=-18dB"(para -18dBFS).
mivk
6

Pedimos desculpas por isso, mas se alguém do futuro vier procurar isso, se você quiser fazer isso em estéreo, faça o seguinte:

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

Você também pode usar -filter_complexcom amerge:

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