Bagaimana cara menghasilkan gelombang sinus dengan ffmpeg?

13

Saya ingin membuat file audio dengan gelombang sinus (sinusoid) dengan FFmpeg. Saya tahu ada sinefilter tapi itu sejauh ini.

Saya mencoba:

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

untuk membuat audio 5 detik pada 48kHz dalam format PCM S16LE, tapi saya mendapat pesan kesalahan berikut:

File keluaran # 0 tidak mengandung aliran apa pun

dan testfile tersebut kosong.

UmNyobe
sumber
Anda juga dapat memainkan sinus tanpa membuat file dengan ffplay: stackoverflow.com/questions/5109038/linux-sinus-audio-generator/…
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

Jawaban:

22

Untuk menghasilkan sinyal 1000 Hz selama 5 detik gunakan ini:

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

Anda dapat menambahkan -c:a pcm_s16le:

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

Untuk juga mengatur laju pengambilan sampel menjadi 48 KHz:

ffmpeg -f lavfi -i "sine=frequency=1000:sample_rate=48000:duration=5" -c:a pcm_s16le test.wav
Rajib
sumber
2
Anda juga dapat mengatur amplitudo dengan menambahkan misalnya: -af "volume=-18dB"(untuk -18dBFS).
mivk
6

Permintaan maaf untuk menonaktifkan ini, tetapi jika seseorang dari masa depan mencari ini, jika Anda ingin melakukan ini dalam stereo, Anda akan melakukan hal berikut:

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

Anda juga dapat menggunakan -filter_complexdengan amerge:

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