เป็นไปได้หรือไม่ที่จะแปลง mp3 เป็น ogg ผ่านทางบรรทัดคำสั่ง?
ฉันต้องการแปลงไฟล์ mp3 เป็น ogg เป็นกลุ่มเพื่อให้ฉันสามารถเล่นใน firefox ได้โดยไม่มีปัญหาใด ๆ
เป็นไปได้หรือไม่ที่จะแปลง mp3 เป็น ogg ผ่านทางบรรทัดคำสั่ง?
ฉันต้องการแปลงไฟล์ mp3 เป็น ogg เป็นกลุ่มเพื่อให้ฉันสามารถเล่นใน firefox ได้โดยไม่มีปัญหาใด ๆ
คำตอบ:
ค้นหาแพ็คเกจที่ตรงกับ ogg ฉันพบdir2oggซึ่งน่าจะเป็นสิ่งที่คุณต้องการ เพียงแค่
sudo apt-get install dir2ogg
dir2ogg -r /path/to/mp3s/
และมันจะค้นหาและแปลงไฟล์ mp3 ทั้งหมดซ้ำ/path/to/mp3s/
ไปเป็น ogg (สมมติว่าฉันอ่านคู่มืออย่างถูกต้อง)
ใช้การรวมกันของFFMPEGและString จัดการ
เปลี่ยนเป็นโฟลเดอร์ที่มีไฟล์ MP3 ของคุณอยู่:
cd mp3folder
ตัวอย่างหนึ่งคือการใช้ลูป "for" แบบง่าย:
for file in *.mp3
do ffmpeg -i "${file}" "${file/%mp3/ogg}"
done
เครื่องหมายคำพูดคู่ป้องกันช่องว่างในชื่อไฟล์ที่ถือว่าเป็น 'บรรทัดใหม่'
ffmpeg มีหลายตัวเลือกที่จะรวมไว้ในการแปลงเช่นตัวแปลงสัญญาณบิตเรตขนาดตัวอย่างสเตอริโอ / โมโน ฯลฯ ... ข้างต้นคือการแปลงทั่วไปที่สุดด้วยการตั้งค่าเริ่มต้น
ffmpeg -i sound.mp3 -c:a libvorbis -q:a 10 sound.ogg
การตั้งค่าคุณภาพสูงสุดยังแย่กว่าเดิมอย่างเห็นได้ชัด การตั้งค่าเริ่มต้นไม่ได้ผลสำหรับฉันเลย (บน Cygwin, ดังนั้นฉันฟ้อง :)) แต่คำถามนี้มีข้อมูลที่ดี: superuser.com/questions/273797/convert-mp3-to-ogg-vorbis
คำเตือน : ทั้ง MP3 และ OGG เป็นรูปแบบที่สูญเสียซึ่งต่างจากคำว่า WAV หรือ FLAC ซึ่งหมายความว่าพวกเขาประสบความสำเร็จในการบีบอัดส่วนใหญ่โดยการทิ้งบิตของข้อมูลเสียงที่มองไม่เห็นหูมนุษย์ (เรียกว่าpsychoacoustics [วิกิพีเดีย] )
เมื่อคุณเข้ารหัส (transcode) จากรูปแบบสูญเสียรูปแบบหนึ่งไปยังอีกรูปแบบส่วนใหญ่ของบิตที่ซ้ำซ้อนทางจิตจะหายไปแล้วดังนั้นคุณภาพการแปลงรหัสจะได้รับผลกระทบและอาจเป็น "ได้ยิน" ในผลลัพธ์ ดังนั้นจึงไม่แนะนำให้ทำการแปลงดังกล่าวเว้นแต่จะจำเป็นจริงๆ
หากคุณทำการแปลง MP3 เป็น OGG คุณสามารถลดโอกาสในการประดิษฐ์ (คุณภาพต่ำ) โดยใช้บิตเรตปลายทางที่สูงกว่าบิตเรตต้นทางเช่นหาก MP3 ของคุณอยู่ที่ 128 kbps ลองใช้ Ogg ที่-q7
(ระดับบิตเรตผันแปร) 7) ซึ่งมักจะประมาณ ~ 200 kbps
คุณสามารถผ่าน-q
ตัวเลือกเพื่อ dir2ogg (มีให้ใน repos ตามที่ @geirha พูดถึง) ซึ่งควรทำสิ่งที่คุณต้องการ
คุณสามารถใช้โปรแกรมavconv a gpl ฉันทำเชลล์เพื่อเป็นตัวอย่าง (เรียกใช้บนโฟลเดอร์ด้วยไฟล์. mp3):
#!/bin/bash
if hash avconv > /dev/null; then
for file in *.mp3
do avconv -i "${file}" "`echo ${file%.mp3}.ogg`";
done
else
echo "avconv not found"
fi
หรือรุ่นที่ง่ายขึ้นโดยไม่มีการตรวจสอบความถูกต้องของการติดตั้ง avconv:
#!/bin/bash
for file in *.mp3
do avconv -i "${file}" "`echo ${file%.mp3}.ogg`";
done
ffmpeg
เลิกใช้อย่างเป็นทางการและกล่าวถึงอย่างชัดเจนว่าคุณควรใช้avconv
แทน
การแยก / เปลี่ยน mp3 โดย ogg ไม่ถูกต้อง แบบฟอร์มที่ถูกต้องควรเป็น:
for file in *.mp3;
do ffmpeg -i "${file}" -acodec libvorbis "${file%mp3}ogg";
done
นี่คือสิ่งที่ใช้ mplayer ฉันคิดว่านี่เร็วกว่า avconv แม้ว่า firefox ควรเล่นไฟล์ mp3 โดยกำเนิด
#!/bin/bash
for f in *.mp3; do
newname=`echo $f | tr ' ' '_' `
mv "$f" $newname
f=$newname
mplayer $f -novideo -ao pcm:file=tmp.wav
lame -V 0 -q 0 tmp.wav ${f/.mp3/.ogg}
rm -f tmp.wav
done
ในกรณีที่คุณทำเพียงเสียงใช้รหัสด้านล่าง [อื่น FF ไม่เล่น. OGG]
for file in *.mp3;
do ffmpeg -i "${file}" -acodec libvorbis "${file/%mp3/ogg}";
done
ดูเหมือนว่าอาจช่วยแก้ปัญหาของคุณได้ที่http://www.perturb.org/display/entry/687/