¿Cómo generar una onda sinusoidal con ffmpeg?

13

Me gustaría generar un archivo de audio con una onda sinusoidal (sinusoide) con FFmpeg. Sé que hay un sinefiltro, pero eso es todo.

Lo intenté:

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

para crear 5 segundos de audio a 48kHz en formato PCM S16LE, pero recibí el siguiente mensaje de error:

El archivo de salida # 0 no contiene ninguna secuencia

Y el testarchivo está vacío.

UmNyobe
fuente
También puede reproducir un seno sin crear un archivo con ffplay: stackoverflow.com/questions/5109038/linux-sinus-audio-generator/…
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

Respuestas:

22

Para generar una señal de 1000 Hz durante 5 segundos, use esto:

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

Puedes agregar -c:a pcm_s16le:

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

Para configurar también la frecuencia de muestreo a 48 KHz:

ffmpeg -f lavfi -i "sine=frequency=1000:sample_rate=48000:duration=5" -c:a pcm_s16le test.wav
Rajib
fuente
2
También puede establecer la amplitud agregando, por ejemplo: -af "volume=-18dB"(para -18dBFS).
mivk
6

Disculpas por negar esto, pero en caso de que alguien del futuro venga a buscar esto, si quisieras hacer esto en estéreo, harías lo siguiente:

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

También puedes usar -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
ocdude
fuente