Как создать синусоидальную волну с помощью ffmpeg?

13

Я хотел бы создать аудиофайл с синусоидальной волной с помощью FFmpeg. Я знаю, что есть sineфильтр, но это так далеко.

Я старался:

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

создать 5 секунд аудио на 48 кГц в формате PCM S16LE, но я получил следующее сообщение об ошибке:

Выходной файл № 0 не содержит потока

и testфайл пуст.

UmNyobe
источник
Вы также можете воспроизвести синус без создания файла с помощью ffplay: stackoverflow.com/questions/5109038/linux-sinus-audio-generator/…
Сиро Сантилли 冠状 病毒 审查 六四 事件 法轮功

Ответы:

22

Для генерации сигнала 1000 Гц в течение 5 секунд используйте это:

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

Вы можете добавить -c:a pcm_s16le:

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

Чтобы также установить частоту дискретизации 48 кГц:

ffmpeg -f lavfi -i "sine=frequency=1000:sample_rate=48000:duration=5" -c:a pcm_s16le test.wav
Rajib
источник
2
Вы также можете установить амплитуду, добавив, например: -af "volume=-18dB"(для -18dBFS).
mivk
6

Извиняюсь за это, но в случае, если кто-то из будущего будет искать это, если вы захотите сделать это в стерео, вы сделаете следующее:

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

Вы также можете использовать -filter_complexс 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
источник