บันทึกเทคนิกการแปลงไฟล์เสียง

 

เอามาจาก

การเปลี่ยนชื่อไฟล์

แปลงวรรคในชื่อไฟล์เป็น underscore
ใช้เทคนิกของโปรแกรม tr เช่นแปลงทุกไฟล์ที่มีนามสกุล mp3
for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done
แปลงชื่อไฟล์ตัวใหญ๋เป็นตัวเล็ก
for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done
แปลงเฉพาะนามสกุล
for i in *.MP3; do mv "$i" "`basename "$i" .MP3`.mp3"; done

การแปลงเป็น WAV

เลือกใช้ ffmpeg
คำสั่งคือ
ffmpeg -i infile.xxx -acodec pcm_s16le -ar 44100 -ac 2 -f wav outfile.wav

(มีความรู้สึกว่าแปลงด้วย ffmpeg เสียงครบกว่าแปลงด้วย mplayer ซึ่งเสียงจะนุ่มลงเล็กน้อย)

ถ้าแปลงทีละไดเรกทอรี่ คำสั่งคือ

for i in *; do ffmpeg -i "$i" -acodec pcm_s16le -ar 44100 -ac 2 \
-f wav "$i.wav"; done

แทรกนิด แปลงจาก mp3 เป็น mp3 ผ่านไลบรารี libmp3lame แบบเล็ก แต่ฟังได้ดี

for i in *; do ffmpeg -i "$i" -acodec libmp3lame -ab 24k -ar 11025 -ac 2 \
"mp3/$i"; done
แปลงจาก mp3 โดยใช้ mpg321
คำสั่งคือ
for i in *.mp3; do mpg321 -w "`basename "$i" .mp3`.wav" "$i"; done
แปลงจาก mp3 โดยใช้ MAD
คำสั่งคือ
for i in *.mp3; do madplay -o "`basename "$i" .mp3`.wav" "$i"; done
แปลงจาก mp3 โดยใช้ Lame
คำสั่งคือ
for i in *.mp3; do lame --decode "$i" "`basename "$i" .mp3`.wav"; done
แปลงจาก OGG โดยใช้ ogg123
คำสั่งคือ
for i in *.ogg ; do ogg123 -d wav -f "`basename "$i" .ogg`.wav" "$i"; done
แปลงจากรูปแบบอื่น ๆ โดยใช้ mplayer
คำสั่งคือ
for i in *.wma; do mplayer -vo null -vc dummy -af resample=44100 \
-ao pcm:waveheader:file="${i%.wma}.wav" "$i" ; done

รูปแบบอื่น

จาก wav เป็น m4r
aptitude install faac
faac -b 16 -c 44100 -w --title "TITLE" --artist "ARTIST" INFILE.wav

ได้ไฟล์ออกมาเป็น INFILE.m4a (คุณภาพดีกว่าแปลงจาก ffmpeg)

Normalize (เกลี่ย) เสียง

คำสั่งคือ

normalize-audio -m *.wav

หรือ

mp3gain -c -r *mp3

แต่งเสียง

เกลี่ยเสียง ลดเสียงทุ้มลง 18db เพิ่มเสียงแหลม 3db

sox --norm INFILE.wav OUTFILE.wav bass -24 treble +3

Rip Audio

cdda2wav -D /dev/cdrom -t TRACK 01

update

แปลงจาก mp3 เป็น wma โดยใช้ ffmpeg
จากการทดลอง ได้ต่ำสุดถึง sampling=16000Hz bitrate=8kbits
$ ffmpeg -i sound.mp3 -ar 16000 -ab 8 -ac 1 sound.wma
อีกรุ่นนึง
$ ffmpeg -i sound.mp3 -acodec wmav2 -ab 24k -ac 1 -ar 11025 sound.wma
แปลงจาก rm เป็น wav โดยใช้ ffmpeg

$ ffmpeg -i sound.rm sound.wav

รูปแบบที่เลือกใช้
เลือกใช้ mp3 เนื่องจากแพร่หลาย และไม่ผูกติดกับวินโดวส์
เลือกใช้ตัวแปลงคือ lame เนื่องจากเสียงนุ่มนวลกว่า

บีบอัดเล็กสุดแบบมีคุณภาพ
$ lame -h -b 16 INFILE.XXX OUTFILE.mp3
บีบเพื่อเก็บเป็นต้นฉบับ
$ lame -h -b 128 INFILE.XXX OUTFILE.mp3
update 520730 แปลงจาก mp3 ใหญ่เป็น mp3 เล็ก 32kbps 11.025kHz
$ for i in *mp3; do mplayer -vo null -vc dummy -af resample=44100 -ao pcm:waveheader:file=/tmp/x.wav "$i"; ffmpeg -i /tmp/x.wav -acodec libmp3lame -ab 32k -ar 11025 -ac 2 "24k/$i"; done; rm /tmp/x.wav
update 520815 แปลงจาก mp3 ใหญ่เป็น mp3 เล็ก 32kbps 24kHz
$ lame --mp3input -m m --resample 24 -h INFILE.mp3 OUTFILE.mp3
แปลงวีดีโอเป็น 3gp
$ ffmpeg -i INFILE.mpg -f 3gp -vcodec mpeg4 -b 150000 -s 320x240 -r 18 -acodec libfaac -ab 64000 -ar 24000 -ac 2 OUTFILE.3gp

หมายเหตุ
การติดตั้งแพกเกจที่เกี่ยวข้อง

ffmpeg
$ sudo aptitude install ffmpeg
mpg321
$ sudo aptitude install mpg321
MAD
$ sudo aptitude install madplay
lame
$ sudo aptitude install lame
ogg123
$ sudo aptitude install vorbis-tools
mplayer
$ sudo aptitude install mplayer
normalize
$ sudo aptitude install normalize-audio
cdda2wav
$ sudo aptitude install cdda2wav

Comments

 

ผมใช้ drupal-4.5.8 สร้าง first account แล้วแต่ login ไม่ได้นะครับ มันกลับมาให้ login เหมือนเดิมนะครับ ไม่ยอมให้ผ่านไปไหน ไม่ทราบว่าพอจะมีหนทางแก้ไขมั๊ยครับ ขอบคุณคับ

 

เพิ่งกลับมาจากเที่ยวเชียงใหม่ เอิ๊ก ๆ
ผมเริ่มใช้รุ่น 4.6 แล้วครับ ไม่ลองรุ่น 4.7.5 ดูล่ะครับ น่าจะทันสมัยกว่า ต่อเติมเพิ่มขยายง่ายกว่าครับ
รุ่นต่ำกว่า 4.6 ไม่ค่อยอยากให้ใช้ เพราะเขาเปลี่ยนแปลงเยอะครับ เดี๋ยวมีปัญหาตอนอัปเกรด

 

Hosting ที่เช่าอยู่มันมีให้แค่ php-4.3.2 นะครับและไม่ upgradeให้ เลยใช้ version สูงกว่านี้ไม่ได้(ทั้งที่ใจอยากจะใช้ ตัวใหม่สุดด้วยซ้ำ)

งั้นถามใหม่ครับ

table users ใน MySql เนี่ย user ที่ active แล้ว ใช้งานได้แล้ว มีค่าแต่ละ ฟิลด์ ยังไงบ้างครับ เช่น status เป็น 0 หรือ 1 อะไรประมาณนี้นะครับ จะลองแก้ไขตรง ๆ ดู

ขัดใจจริง ๆ ครับว่าทำไมมัน login ด้วย first user ไม่ได้ กลับมาที่หน้า login ตลอด

ปล. มาเที่ยวเชียงใหม่บ้านผมน่าจะบอกกันบ้าง จะได้พาทัวร์ (ฮิ ๆ )

 

ผมคิดว่าน่าจะ
1. หาโฮสต์ใหม่ ถ้าเขามี php-4.3.3 ก็ใช้กับ Drupal-4.7.5 ได้แล้ว หรือ...
2. สร้างโฮสต์เอง ข้อเสียคือต้องเปิดเครื่อง 24ชม. แต่ข้อดึคือทดลองได้สุด ๆ จะเล่นอะไรก็ไม่มีข้อจำกัด

table users ใน MySql เขาเก็บพวก permission ไว้ที่ฟิลด์ data ซึ่งเป็นฟิลด์สุดท้าย
แต่ผมคิดว่าคงไม่เกี่ยวกับดาต้าเบสนะครับ คงเกี่ยวกับ php มากกว่า
ถ้าเป็น Drupal-4.7 กับ php5 ผมเจอปัญหาคล้ายกันกับของคุณสุขุม
เป็นเรื่องฟังก์ชั่น session ต้องแก้ด้วยการไปเติมการปิด session ต่อท้ายอีกทีนึง

...
drupal_page_footer();
session_write_close();

ต่อท้่ายไฟล์ index.php น่ะครับ

ผมว่าหาโฮสต์ใหม่ดีกั่ว :) ยกเว้นถ้าจะลองเล่นเฉย ๆ มาแพะที่นี่ก็ได้นะครับ :)

ปล.ผมไปเที่ยวแบบโหด กลับมาป่วยเลยครับ แต่ยังโชคดีที่ได้ขึ้นพระพุทธบาทสี่รอย
ขนาดว่าเป็นหลังปีใหม่ ผู้คนยังเยอะสุด ๆ
ปลื้มใจแทนคนไปเที่ยวด้วย ว่าสภาพคนบนดอยสุเทพ พลุกพล่านเหมือนตลาดพาหุรัดที่กรุงเทพฯ
สาธุ ๆ ๆ ๆ อนุโมทนามิ _/|\_

 

ตอนแรก ลบ cookies ให้หมดนะครับ
ปรากฏว่า frefox ผ่าน IE ไม่ผ่าน

ก็เลยปรึกษา google อย่างละเอียดอีกทีก็ไปเจอ
http://drupal.org/node/6696

โดยแก้ไข user.module

FROM this:

$old_session_id = session_id();
session_regenerate_id();
db_query("UPDATE {sessions} SET sid = '%s' WHERE sid = '%s'", session_id(), $old_session_id);

TO this:

//$old_session_id = session_id();
//session_regenerate_id();
//db_query("UPDATE {sessions} SET sid = '%s' WHERE sid = '%s'", session_id(), $old_session_id);

เลยขออนุญาตแปะไว้กันลืมนะครับ
ขอบคุณมากครับที่ช่วยเหลือ
สุขุม

 

จะบอกว่าขอบคูณที่โพสต์มากกว่าครับ ;D
จะได้รู้กันเยอะ ๆ

ขออนุญาตเหมือนกัน ปรับแก้ให้ดูง่ายขึ้นเล็กน้อยนะครับ :)

 

Syndicate

Subscribe to Syndicate

Who's online

There are currently 0 users online.