日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

如何在 FreeBSD 下壓 MP3

以下是在 FreeBSD 下先抓音軌再壓 MP3 的方法,
至於直接由 CD 壓的方法則在最後討論 。

目前在 FreeBSD 下有兩個(gè)由 SCSI CDROM 抓音軌的程式,
一是 tosha-0.05 一是 cdd-1.0 。
這兩個(gè)程式你都可在 freebsd.csIE.nctu.edu.tw 找到 。
所支援的 SCSI CDROM 廠牌也有限,
如果不認(rèn)得的廠牌會(huì)給你 Warning 的 message 。
你可以先試壓一首看看,再修改原程式 。
tosha and cdd 抓的 size 有點(diǎn)不同,cdd 會(huì)小一點(diǎn),但內(nèi)容又沒(méi)錯(cuò) 。
tosha 與 Dos 下的 cdgrabp 抓的大小、內(nèi)容一樣,至少在我的
Pioneer DR-U124X 4.4 倍速 CDROM 是如此 。
至於 IDE CDROM 的抓音軌程式就要靠你寫(xiě)了 。

壓 mp3 的程式即 l3enc Linux 版,目前尚無(wú) FreeBSD 版,
因此你要 load linux module,這部分就不討論了,假設(shè)你會(huì) 。
l3enc 的 register code 你可以問(wèn)問(wèn)你的朋友,應(yīng)該不難找到 。

假設(shè)你要壓第一首,可以如此做:
tosha -t 1 -o tmp.raw
l3enc tmp.raw track01.mp3 -br 128000 -sr 44100

這樣就產(chǎn)生 track01.mp3 的檔案 。play 看看有沒(méi)有問(wèn)題 。
l3enc 有個(gè) -hq 的參數(shù),但壓的速度是三倍慢 。
下面這個(gè) shell script 可以將整張 CD 一一壓成 mp3 。
所以,晚上睡前放一張,隔天就壓好了 。
你可以放在 background run,又不影響你的正常工作 。
但是請(qǐng)你先看一下程式,測(cè)一下,確定你知道每一步驟在作什麼 。
---------------- cut here -----------------------------------
#!/bin/sh
# usage: makemp3.sh [from_which_track]
#
LD_LIBRARY_PATH=/compat/linux/lib;export LD_LIBRARY_PATH
LOGFILE=./makemp3.log
TMPFILE=./tmp.raw
NTRACK=`tosha -i 2>&1 | tail -n 3 | head -n 1 | colrm 7`
if [ $# -gt 0 ]; then
CURRENT=$1
if [ ${CURRENT} -le 0 ]; then
CURRENT=1
break
fi
if [ ${CURRENT} -gt ${NTRACK} ]; then
echo "The request track larger than total number of track"
exit 0
fi
else
CURRENT=1
fi
cp /dev/null ${LOGFILE}
cp /dev/null ${TMPFILE}
tosha -i 2>> ${LOGFILE}
echo "total ${NTRACK} track" >> ${LOGFILE}
while [ ${CURRENT} -le ${NTRACK} ]
do
# if there is a file named "stop" on the current Directory
# then the job will stop
if [ -f stop ]; then
echo "job stop at `date`" >> ${LOGFILE}
rm ${TMPFILE}
scsi -f /dev/rcd0c -c "1b 0 0 0 0 0"
exit 0
fi
if [ ${CURRENT} -ge 10 ]; then
OUTPUT="track${CURRENT}"
else
OUTPUT="track0${CURRENT}"
fi
echo "compress track ${CURRENT} begin at `date`" >> ${LOGFILE}
tosha -q -t ${CURRENT} -o ${TMPFILE} 2> /dev/null
l3enc ${TMPFILE} ${OUTPUT}.mp3 -br 128000 -sr 44100 > /dev/null 2>&1
echo "track ${CURRENT} completed at `date`" >> ${LOGFILE}
CURRENT=`expr ${CURRENT}1`
done
echo "job completed at `date`" >> ${LOGFILE}
rm ${TMPFILE}
scsi -f /dev/rcd0c -c "1b 0 0 0 0 0"
--------------------- cut here -----------------------------------

l3enc 這個(gè)程式是不從 stdin 讀 wav or pcm data 的,當(dāng)然你也可以這樣作:
tosha -q -t 1 -o - | l3enc /dev/stdin track.mp3 -br 128000 -sr 44100
而且也可壓出一樣大小的 mp3,但是與用讀暫存檔的方式壓出來(lái)的不一樣 。
而用 l3dec 反解回去的 pcm file 也不同 。
原因我猜是 l3enc 這個(gè)程式用了 ftell 及 fseek 。
當(dāng)然,pipe 是無(wú)法作 seek 的,也無(wú)法知道 file size 。

那有沒(méi)有方式直接由 CD -> mp3? 我認(rèn)為有兩個(gè)方法,
一是改 linux shared library,騙 l3enc 。
一是自己寫(xiě)個(gè) audio file system,直接支援 audio track 的讀取 。
後者有點(diǎn)殺雞用牛刀,但是比較有趣 。

    推薦閱讀