วิธีการสร้างคลื่นไซน์ด้วย ffmpeg?


13

ฉันต้องการสร้างไฟล์เสียงที่มีคลื่นไซน์ (ซายน์) กับ FFmpeg ฉันรู้ว่ามีsineตัวกรอง แต่เท่าที่มันจะไป

ฉันเหนื่อย:

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

เพื่อสร้างเสียง 5 วินาทีที่ 48kHz ในรูปแบบ PCM S16LE แต่ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

ไฟล์ที่ส่งออก # 0 ไม่มีกระแสใด ๆ

และtestไฟล์นั้นว่างเปล่า


นอกจากนี้คุณยังสามารถเล่นไซน์โดยไม่ต้องสร้างไฟล์ด้วยffplay: stackoverflow.com/questions/5109038/linux-sinus-audio-generator/ ...
Ciro Santilli 冠状病毒审查审查六四法轮功法轮功

คำตอบ:


23

ในการสร้างสัญญาณ 1,000 Hz เป็นระยะเวลา 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 KHz:

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

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.