Como gerar uma onda senoidal com ffmpeg?

9

Eu gostaria de gerar um arquivo de áudio com uma onda senoidal (sinusoid) com FFmpeg. Eu sei que existe um filtro sine , mas isso é o máximo possível.

Eu tentei:

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

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

Output file #0 does not contain any stream

e o arquivo test está vazio.

    
por UmNyobe 04.03.2014 / 11:46

2 respostas

17

Para gerar um sinal de 1000 Hz por 5 segundos, use:

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 definir também 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
    
por 04.03.2014 / 14:50
5

Pedimos desculpas por necroar isso, mas no caso de alguém do futuro vir procurando por isso, se você quiser fazer isso em estéreo, você faria o seguinte:

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

Você também pode usar -filter_complex com amerge :

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