Comment générer une onde sinusoïdale avec ffmpeg?

13

Je voudrais générer un fichier audio avec une onde sinusoïdale (sinusoïdale) avec FFmpeg. Je sais qu'il y a un sinefiltre mais c'est aussi loin que ça marche.

J'ai essayé:

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

pour créer 5 secondes d'audio à 48 kHz au format PCM S16LE, mais j'ai reçu le message d'erreur suivant:

Le fichier de sortie # 0 ne contient aucun flux

et le testfichier est vide.

UmNyobe
la source
Vous pouvez également jouer un sinus sans créer de fichier avec ffplay: stackoverflow.com/questions/5109038/linux-sinus-audio-generator/…
Ciro Santilli 22 病毒 审查 六四 事件 法轮功

Réponses:

22

Pour générer un signal de 1000 Hz pendant 5 secondes, utilisez ceci:

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

Vous pouvez ajouter -c:a pcm_s16le:

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

Pour définir également la fréquence d'échantillonnage à 48 kHz:

ffmpeg -f lavfi -i "sine=frequency=1000:sample_rate=48000:duration=5" -c:a pcm_s16le test.wav
Rajib
la source
2
Vous pouvez également définir l'amplitude en ajoutant par exemple: -af "volume=-18dB"(pour -18dBFS).
mivk
6

Toutes mes excuses pour la nécrose de ceci, mais dans le cas où quelqu'un du futur viendrait le chercher, si vous vouliez le faire en stéréo, vous feriez ce qui suit:

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

Vous pouvez également utiliser -filter_complexavec 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
la source