หากต้องการเชื่อมต่อและแปลงไฟล์เสียงนี่เป็นเวิร์กโฟลว์ที่คุณต้องการติดตาม:
- ถอดรหัสไฟล์เสียงอินพุตเป็นข้อมูล WAV / PCM
- เชื่อมต่อ WAV
- เข้ารหัส WAV เพื่อส่งออกไฟล์ตัวแปลงสัญญาณเสียง
การประมวลผลในขั้นตอนเหล่านี้จะทำการเชื่อมต่อข้อมูล WAV ซึ่งเป็นวิธีที่ง่ายที่สุดในการจัดการและสูญเสียน้อยที่สุด และเนื่องจากคุณต้องการแปลงรหัสอยู่แล้วคุณจะต้องถอดรหัสเป็น WAV ในกระบวนการ อาจรวมถึงใช้ประโยชน์จากมัน
นี่คือขั้นตอนที่ฉันแนะนำ เราจะใช้ffmpeg
สำหรับการถอดรหัสsox
เพื่อการต่อข้อมูลและoggenc
การเข้ารหัส คุณสามารถใช้แทนเครื่องมืออื่น ๆ สำหรับขั้นตอนใด ๆ - mencoder
และอื่น ๆ ทำงานได้ดีเป็นตัวถอดรหัสและเครื่องมือใด ๆ ที่ encodes Ogg สามารถใช้เป็นตัวเข้ารหัส - แม้ว่าฉันคิดว่าคุณจะยากที่จะหาเครื่องมือที่ดีกว่าsox
สำหรับ เรียงต่อกัน
find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(สิ่งนี้จะทำงานffmpeg -i infile.wma outfile.infile.wma
กับไฟล์ WMA แต่ละไฟล์ในไดเรกทอรีปัจจุบัน)
sox outfile* all.wav
(หมายเหตุoutfile
เป็นคำนำหน้าเดียวกับที่เราให้ไฟล์เอาต์พุตในขั้นตอนที่ 1)
oggenc all.wav all.ogg
คุณอาจต้องการการตั้งค่าคุณภาพที่นี่ แต่สิ่งนี้จะให้ค่าเริ่มต้นคุณภาพที่เหมาะสม ฉันไม่ได้ผลลัพธ์ที่ฉันชอบffmpeg
แต่คุณอาจชอบมันดังนั้นฉันจึงรวมตัวอย่างกับ ffmpeg ด้านล่าง
โปรดทราบว่าsox
คำสั่งจะไม่ทำงานอย่างถูกต้องเว้นแต่ไฟล์ WAV ทั้งหมดจะอยู่ในรูปแบบเดียวกัน - หากบางไฟล์เป็น 22kHz และบางส่วนเป็น 44.1kHz คุณจะต้องระบุไฟล์เหล่านั้นsox
ผ่านสวิตช์ commandline และระบุรูปแบบที่คุณต้องการ ออกมาฉันไม่รู้เครื่องมือ commandline ใด ๆ ที่มีความสามารถพอ ๆsox
กับขั้นตอนการต่อข้อมูล คุณสามารถส่งออกไปยังรูปแบบ PCM แบบดิบในขั้นตอนที่ 1 และใช้cat
สำหรับขั้นตอนที่ 2 แต่นั่นจะใช้ได้เฉพาะในกรณีที่อยู่ในรูปแบบเดียวกันเท่านั้นและคุณต้องมีความเฉพาะเจาะจงมากสำหรับทั้งตัวถอดรหัสและตัวเข้ารหัสของคุณ รูปแบบที่พวกเขาควรคาดหวัง
การเข้ารหัสด้วย ffmpeg: มีโพสต์มากมายรอบ ๆ 'net บ่นว่า encoder Vorbis ในตัวของ ffmpeg นั้นไม่ค่อยดีนัก หากเวอร์ชันของคุณถูกสร้างขึ้นด้วยการสนับสนุน libvorbis ให้ใช้-acodec libvorbis
แทน ตัวอย่าง commandline:
ffmpeg -i all.wav -acodec libvorbis -ac 2 -ab 128k all.ogg