bash: Rip audio disc to mp3
Submitted by wd on Wed, 2008-09-24 10:22
มีงานต้องเก็บแผ่นซีดีธรรมะลงไว้ในฮาร์ดดิสก์เป็นจำนวนมาก
เพื่อให้สะดวก จึงทำเป็นสคริปต์ให้ใช้งานได้สะดวก
ลักษณะของโปรแกรมคือ เมื่อเราใส่แผ่นแล้วสั่งรันโปรแกรม เขาจะถอดไฟล์เสียงทั้งหมดมาเป็นไฟล์ mp3 ที่ไดเรกทอรี่ปัจจุบัน โดยเอาข้อมูลชื่อเพลงจากแผ่นมาเป็นชื่อไฟล์ ก่อนอื่นติดตั้งแพกเกจที่จำเป็นก่อน
การใช้งานคือ ใส่แผ่น audio แล้วสั่งรัน d.audio2mp3 จะได้ไฟล์ mp3 มาอยู่ในไดเรคทอรี่ปัจจุบัน การทำงานของสคริปต์คือ
เพื่อให้สะดวก จึงทำเป็นสคริปต์ให้ใช้งานได้สะดวก
ลักษณะของโปรแกรมคือ เมื่อเราใส่แผ่นแล้วสั่งรันโปรแกรม เขาจะถอดไฟล์เสียงทั้งหมดมาเป็นไฟล์ mp3 ที่ไดเรกทอรี่ปัจจุบัน โดยเอาข้อมูลชื่อเพลงจากแผ่นมาเป็นชื่อไฟล์ ก่อนอื่นติดตั้งแพกเกจที่จำเป็นก่อน
$ sudo aptitude install lame cdda2wav
สคริปต์มีดังนี้$ sudo vi /usr/local/bin/d.audio2mp3
#!/bin/bash
# Rip audio disc to mp3
#
# USAGE: $0 prefix
# exam1: $0 T2
# -> T2-01-Title1.mp3
# T2-02-Title2.mp3
# ...
# in current dir
#
# Requist: aptitude install lame cdda2wav
if [ $1 ]; then PREFIX="$1-"; fi
DEV='/dev/cdrom'
TMP="/tmp/$USER/`basename $0`_$RANDOM"
mkdir -p $TMP
pushd $TMP
#to wave
cdda2wav -L 1 -D $DEV -B
#to mp3
for i in *wav; do
NUM=`echo ${i%.*} | cut -d_ -f 2`-
TITLE=`grep 'Tracktitle=' ${i%.*}.inf | cut -d\' -f2`
lame -h -V 2 $i $PREFIX$NUM$TITLE.mp3
done
popd
mv $TMP/*mp3 .
rm -rf $TMP
ทำให้รันได้$ sudo chmod 777 /usr/local/bin/d.audio2mp3
เสร็จแล้วการใช้งานคือ ใส่แผ่น audio แล้วสั่งรัน d.audio2mp3 จะได้ไฟล์ mp3 มาอยู่ในไดเรคทอรี่ปัจจุบัน การทำงานของสคริปต์คือ
- แปลงข้อมูลเสียงมาเป็นไฟล์ wav ด้วยโปรแกรม cdda2wav โดยนำไปใส่ในไดเรคทอรี่ชั่วคราวใน /tmp (เพื่อป้องกันผู้ใช้หลายคน จึงใส่ตัวแปร $USER ไว้ด้วย เพราะโค๊ดต้นฉบับ เขียนบนเซิร์ฟเวอร์ที่มีผู้ใช้หลายคน)
- แปลงไฟล์ wav ที่ได้มาเป็น mp3 โดยใช้โปรแกรม lame (ซึ่งอาจมีปัญหาว่าตอนนี้หา lame บน lenny กับ sid ไม่ได้แล้ว ให้ลองดูวิธีปรุงขึ้นมาเองได้ที่ วิธีปรุง lame โดยคุณโดม http://thisk.org/dr/node/32)
โดยเอาข้อมูล Tracktitle จากไฟล์นามสกุล inf มาเป็นชื่อไฟล์ mp3 ที่ได้ รวมถึงใส่คำนำหน้า (ตัวแปร $PREFIX) ให้ด้วย
update
- 25570325: แพ็กเกจเปลี่ยน ไม่ต้องใช้สคริปต์แล้ว เพียงลงแพ็กเกจชื่อ
icedax
แล้วใช้คำสั่ง
$ CDDA_DEVICE=/dev/sr0 cdda2mp3
- Printer-friendly version
- Log in or register to post comments
- 11855 reads
Comments
เขียนแผ่น CD-DA จากไฟล์ wav
บันทึกการเขียนแผ่น Audio จากไฟล์ wav ด้วยบรรทัดคำสั่ง
$ sudo aptitude install wodim
$ wodim dev=/dev/cdrom -eject -pad -audio *.wav
จาก Burn CDs From Command Line
เขียนแผ่น CD-DA แบบมี cd-text
เอาแบบมีชื่อเพลงด้วย
$ sudo aptitude install cdrdao
สร้างไฟล์หัว
$ vi toc.txt
เขียนแผ่น
$ cdrdao write --speed 1 --device /dev/cdrom --driver generic-mmc-raw -v 2 -n --eject toc.txt
จาก CD-TEXT Burning on Linux