- 論壇徽章:
- 0
|
The joint stereo effect
不少人曾經(jīng)有機(jī)會在聆聽立體聲的時候用上一個亞低音揚(yáng)聲器(實(shí)際上絕大多數(shù)質(zhì)量較好的計(jì)算機(jī)揚(yáng)聲器都包括了兩個,或者四個,輔助揚(yáng)聲器,以及一個獨(dú)立的亞
低音揚(yáng)聲器)。也許你已經(jīng)注意到了,主揚(yáng)聲器以外的輔助揚(yáng)聲器對產(chǎn)生高質(zhì)量的聲音是很重要的;但是亞低音揚(yáng)聲器就不怎么受重視——亞低音揚(yáng)聲器經(jīng)常被塞在
桌子底下,沙發(fā)后頭,甚至是和起居室的家具集成在一起了。這樣做對聲音質(zhì)量的影響很小,因?yàn)槿硕鋵τ诟哳l低頻聲音很不敏感。
一個立體聲mp3聲音文件的大小,理論上,應(yīng)該是同比特率的一個單聲道m(xù)p3文件的兩倍。但是如果考慮到,我們可以把左右兩個聲道的高頻部分進(jìn)行一定的合
并,放到其中某一個聲道的數(shù)據(jù)中,那樣我們就可以讓文件變得小一些。在編碼的時候,很多編碼器都支持的”joint
stereo”就是這個意思。反正我們也聽不出高頻聲音到底是哪個喇叭發(fā)出來的,那就沒必要把這些數(shù)據(jù)分別在兩個聲道的數(shù)據(jù)中重復(fù)保存。
有些高級音響發(fā)燒友會說,低頻聲音并不是完全沒有方向感的,只不過和中頻高頻聲音相比,低頻聲音的方向感沒有那么強(qiáng)。要聽出這種效果,那么這個人的耳朵一
定受到過相當(dāng)程度的訓(xùn)練,對這樣一個耳朵來說,恐怕已經(jīng)不會滿足于mp3的音質(zhì)了。當(dāng)joint
stereo選項(xiàng)被打開的時候,聲音文件中會被加入一些信息,用于引導(dǎo)播放器在播放過程中盡量地模擬這些聲音的空間效果。并且注意,joint
stereo編碼模式在某些情況下會帶來一些聲音被擠壓的效果,單純增高壓縮使用的比特率并不能解決這個問題,如果你覺得這些副作用讓你不滿意,只有關(guān)閉
joint stereo選項(xiàng)之后重新壓縮。
MP3文件的結(jié)構(gòu)
Inside the Header Frame
前面提到過,mp3文件被分割為很多很多的“幀”,每一個幀包含的聲音數(shù)據(jù)能夠播放很短很短的時間,大概是一秒的幾分之一。每一個數(shù)據(jù)幀前面都有一個“幀頭幀”,幀頭保存了32個比特的“元數(shù)據(jù)”,描述的是緊隨其后的數(shù)據(jù)幀的一些信息。幀頭的格式是
AAAA AAAA AAAB BCCD EEEE FFGH IIJJ KLMM,其中包含了下面13個域:
AAAA: Frame sync
B: MPEG audio version
C: MPEG Layer
D: protection bit. if on, checksum follows header
E: Bitrate index
F: Sampling rate frequency index
G: padding bit, on or off, compensates for unfilled frames
H: private bit, on or off, allows for application-specific triggers
I: Channel Mode: stereo, joint stereo, dual channel, single channel
J: Mode extension: used only with joint stereo, to conjoin channel data
K: copyright: on or off
L: original: off if copy of original, on if original.
M: Emphasis: respects emphasis bit in the original recording; now obsolete.
Mp3幀頭幀開始處是一個11bit的“同步”塊。Mp3播放器可以通過搜尋第一個同步塊,鎖定到第一個有效數(shù)據(jù)幀上,以便開始播放。在你拖動播放器的進(jìn)
度滑塊,向前或者向后跳躍的時候,以及播放時跳過文件頭部的ID3數(shù)據(jù)等非音頻數(shù)據(jù)的時候,同步塊都會起作用。當(dāng)然,mp3播放器不能隨便拿來一個文件,
只要在其中找到一個合法的同步塊就認(rèn)為這個文件是一個合法的mp3文件。因?yàn)閺睦碚撋现v,同步塊這11bit的模式可能出現(xiàn)在任何隨機(jī)的二進(jìn)制文件中。因
此播放器還必須檢查幀頭中的其它數(shù)據(jù)是否合法,和/或檢測前后是否出現(xiàn)了多個合法的mp3幀。
Locking onto the Data Stream
如何鎖定mp3數(shù)據(jù)流
Mp3的一個設(shè)計(jì)初衷是讓它適合于廣播。因此任何mp3數(shù)據(jù)流的任何接受方,必須能夠以一個mp3數(shù)據(jù)流中的任何一點(diǎn)為起點(diǎn),有效地鎖定到這個數(shù)據(jù)流上。
我們之所以在每個數(shù)據(jù)幀前面都需要一個幀頭,很大程度上是因?yàn)檫@個原因。有趣的是,理論上說,這個設(shè)計(jì)使得我們可以有效地將一個mpeg文件分割為任意的
若干段,然后隨便地、獨(dú)立地播放其中任何一段。但是實(shí)際上,對layer
III的mpeg文件(就是mp3)來說,這是做不到的,因?yàn)閙p3文件中一個數(shù)據(jù)幀的數(shù)據(jù),常常對同一文件中的其它數(shù)據(jù)幀的數(shù)據(jù)有依賴關(guān)系:還記得我們
說過,mp3編碼器在某一幀的空間不夠用的時候,會拆東墻補(bǔ)西墻吧?
緊跟在同步塊之后的是一個叫做ID的bit,這個bit說明文件壓縮的標(biāo)準(zhǔn)是mpeg-1還是mpeg-2。之后是兩個bit的“l(fā)ayer”參數(shù),決定
該幀的編碼方式是layer I, layer II, layer III還是“未定義”。如果protection
bit是1,聲音數(shù)據(jù)前面會被塞入一個16bit的校驗(yàn)和,保證數(shù)據(jù)完整性。
Bitrate不用說了,之后是抽樣頻率,從16KHZ到44100HZ,這依賴于我們使用的是mpeg-1還是mpeg-2。Padding
bit用于保證每個frame都精確地滿足指定的比特率,例如一個128kbps layer
II,抽樣頻率44.1KHZ的比特流中,有的幀可能有417字節(jié),有的則可能有418字節(jié)。那些417字節(jié)的幀的padding
bit會被設(shè)置為1,以便補(bǔ)償幀長度的不同。
Mode指的是該幀是單聲道還是立體聲,如果使用joint stereo,緊跟在后面的mode extension會告訴解碼器一些附加的細(xì)節(jié),例如不同聲道的高頻分量是不是被合并了。
Copyright
bit并不是用來保存版權(quán)信息的(只有一個bit,顯然不夠),這個bit用來模擬CD和DAT文件中一個類似的關(guān)于版權(quán)的bit的。如果這個bit是
1,那么拷貝這個音軌就是違法的。如果數(shù)據(jù)是被保存在其原始媒介上,home bit就是1。Private
bit用于某些特定的應(yīng)用程序中來觸發(fā)一些特定的事件。Emphasis域被用作一個標(biāo)志,當(dāng)原始錄音中一個對應(yīng)的“emphasis
bit”被設(shè)置的時候,mp3文件中的這個標(biāo)志也被設(shè)置為1,這個標(biāo)志現(xiàn)在已經(jīng)很少被使用了。最后,解碼器會在幀頭部后面讀到校驗(yàn)和(如果幀頭部中的
protection bit是1),校驗(yàn)和之后就是真正的數(shù)據(jù)幀了。
上述過程會對一個mp3文件中成千上萬的幀反復(fù)重復(fù)。如果需要知道m(xù)p3幀頭的細(xì)節(jié),以及幀頭中的上述各個域中的合法取值及其意義,包括各種查找表等詳細(xì)信息,請參考www.mp3tech.org。如果需要馬上開始做些實(shí)際工作,可以看看www.iso.ch的內(nèi)容。
本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u/13667/showart_249072.html |
|