<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    以下是常見音頻文件格式的特點。
      要在計算機內播放或是處理音頻文件,也就是要對聲音文件進行數、模轉換,這個過程同樣由采樣和量化構成,人耳所能聽到的聲音,最低的頻率是從20Hz起一直到最高頻率20KHZ,20KHz以上人耳是聽不到的,因此音頻的最大帶寬是20KHZ,故而采樣速率需要介于40~50KHZ之間,而且對每個樣本需要更多的量化比特數。音頻數字化的標準是每個樣本16位-96dB的信噪比,采用線性脈沖編碼調制PCM,每一量化步長都具有相等的長度。在音頻文件的制作中,正是采用這一標準。
    CD格式:正統血脈
      當今世界上音質最好的音頻格式是什么?當然是CD了。因此要講音頻格式,CD自然是打頭陣的先鋒。在大多數播放軟件的“打開文件類型”中,都可以看到*.cda格式,這就是CD音軌了。標準CD格式也就是44.1K的采樣頻率,速率88K/秒,16位量化位數,因為CD音軌可以說是近似無損的,因此它的聲音基本上是忠于原聲的,因此如果你如果是一個音響發燒友的話,CD是你的首選。它會讓你感受到天籟之音。CD光盤可以在CD唱機中播放,也能用電腦里的各種播放軟件來重放。一個CD音頻文件是一個*.cda文件,這只是一個索引信息,并不是真正的包含聲音信息,所以不論CD音樂的長短,在電腦上看到的“*.cda文件”都是44字節長。注意:不能直接的復制CD格式的*.cda文件到硬盤上播放,需要使用象EAC這樣的抓音軌軟件把CD格式的文件轉換成WAV,這個轉換過程如果光盤驅動器質量過關而且EAC的參數設置得當的話,可以說是基本上無損抓音頻。推薦大家使用這種方法。
    WAV:無損
      是微軟公司開發的一種聲音文件格式,它符合 PIFFResource Interchange File Format 文件規范,用于保存WINDOWS平臺的音頻信息資源,被WINDOWS平臺及其應用程序所支持。“*.WAV”格式支持MSADPCM、CCITT A LAW等多種壓縮算法,支持多種音頻位數、采樣頻率和聲道,標準格式的WAV文件和CD格式一樣,也是44.1K的采樣頻率,速率88K/秒,16位量化位數,看到了吧,WAV格式的聲音文件質量和CD相差無幾,也是目前PC機上廣為流行的聲音文件格式,幾乎所有的音頻編輯軟件都“認識”WAV格式。 但缺點是體型過于“巨大”。
    AIFF與AU
      這里順便提一下由蘋果公司開發的AIFF(Audio Interchange File Format)格式和為UNIX系統開發的AU格式,它們都和WAV非常相像,在大多數的音頻編輯軟件中也都支持它們這幾種常見的音樂格式。
    MP3:流行
      MP3格式誕生于八十年代的德國,所謂的MP3也就是指的是MPEG標準中的音頻部分,也就是MPEG音頻層。根據壓縮質量和編碼處理的不同分為3層,分別對應“*.mp1"/“*.mp2”/“*.mp3”這3種聲音文件。需要提醒大家注意的地方是:MPEG音頻文件的壓縮是一種有損壓縮,MPEG3音頻編碼具有10:1~12:1的高壓縮率,同時基本保持低音頻部分不失真,但是犧牲了聲音文件中12KHz到16KHz高音頻這部分的質量來換取文件的尺寸,相同長度的音樂文件,用*.mp3格式來儲存,一般只有*.wav文件的1/10,而音質要次于CD格式或WAV格式的聲音文件。由于其文件尺寸小,音質好;所以在它問世之初還沒有什么別的音頻格式可以與之匹敵,因而為*.mp3格式的發展提供了良好的條件。直到現在,這種格式還是風靡一時,作為主流音頻格式的地位難以被撼動。但是樹大招風,MP3音樂的版權問題也一直是找不到辦法解決,因為MP3沒有版權保護技術,說白了也就是誰都可以用。
      MP3格式壓縮音樂的采樣頻率有很多種,可以用64Kbps或更低的采樣頻率節省空間,也可以用320Kbps的標準達到極高的音質。我們用裝有Fraunhofer IIS Mpeg Lyaer3的 MP3編碼器(現在效果最好的編碼器)MusicMatch Jukebox 6.0在128Kbps的頻率下編碼一首3分鐘的歌曲,得到2.82MB的MP3文件。采用缺省的CBR(固定采樣頻率)技術可以以固定的頻率采樣一首歌曲,而VBR(可變采樣頻率)則可以在音樂“忙”的時候加大采樣的頻率獲取更高的音質,不過產生的MP3文件可能在某些播放器上無法播放。我們把VBR的級別設定成為與前面的CBR文件的音質基本一樣,生成的VBR MP3文件為2.9MB。
    MIDI:作曲家最愛
      經常玩音樂的人應該常聽到MIDI(Musical Instrument Digital Interface)這個詞,MIDI允許數字合成器和其他設備交換數據。MID文件格式由MIDI繼承而來。MID文件并不是一段錄制好的聲音,而是記錄聲音的信息,然后在告訴聲卡如何再現音樂的一組指令。這樣一個MIDI文件每存1分鐘的音樂只用大約5~10KB。今天,MID文件主要用于原始樂器作品,流行歌曲的業余表演,游戲音軌以及電子賀卡等。*.mid文件重放的效果完全依賴聲卡的檔次。*.mid格式的最大用處是在電腦作曲領域。*.mid文件可以用作曲軟件寫出,也可以通過聲卡的MIDI口把外接音序器演奏的樂曲輸入電腦里,制成*.mid文件。
    WMA:最具實力
      WMA (Windows Media Audio) 格式是來自于微軟的重量級選手,后臺強硬,音質要強于MP3格式,更遠勝于RA格式,它和日本YAMAHA公司開發的VQF格式一樣,是以減少數據流量但保持音質的方法來達到比MP3壓縮率更高的目的,WMA的壓縮率一般都可以達到1:18左右,WMA的另一個優點是內容提供商可以通過DRM(Digital Rights Management)方案如Windows Media Rights Manager 7加入防拷貝保護。這種內置了版權保護技術可以限制播放時間和播放次數甚至于播放的機器等等,這對被盜版攪得焦頭亂額的音樂公司來說可是一個福音,另外WMA還支持音頻流(Stream)技術,適合在網絡上在線播放,作為微軟搶占網絡音樂的開路先鋒可以說是技術領先、風頭強勁,更方便的是不用象MP3那樣需要安裝額外的播放器,而Windows操作系統和Windows Media Player的無縫捆綁讓你只要安裝了windows操作系統就可以直接播放WMA音樂,新版本的Windows Media Player7.0更是增加了直接把CD光盤轉換為WMA聲音格式的功能,在新出品的操作系統Windows XP中,WMA是默認的編碼格式,大家知道Netscape的遭遇,現在“狼”又來了。WMA這種格式在錄制時可以對音質進行調節。同一格式,音質好的可與CD媲美,壓縮率較高的可用于網絡廣播。雖然現在網絡上還不是很流行,但是在微軟的大規模推廣下已經是得到了越來越多站點的承認和大力支持,在網絡音樂領域中直逼*.mp3,在網絡廣播方面,也正在瓜分Real打下的天下。因此,幾乎所有的音頻格式都感受到了WMA格式的壓力。
      時下的MP3支持格式最常見的是MP3和WMA。MP3由于是有損壓縮,因此講求采樣率,一般是44.1KHZ。另外,還有比特率,即數據流,一般為8---320KBPS。在MP3編碼時,還看看它是否支持可變比特率(VBR),現在出的MP3機大部分都支持,這樣可以減小有效文件的體積。WMA則是微軟力推的一種音頻格式,相對來說要比MP3體積更小。
    RealAudio:流動旋律
      RealAudio主要適用于在網絡上的在線音樂欣賞,現在大多數的用戶仍然在使用56Kbps或更低速率的Modem,所以典型的回放并非最好的音質。有的下載站點會提示你根據你的Modem速率選擇最佳的Real文件。現在real的的文件格式主要有這么幾種:有RA(RealAudio)、RM(RealMedia,RealAudio G2)、RMX(RealAudio Secured),還有更多。這些格式的特點是可以隨網絡帶寬的不同而改變聲音的質量,在保證大多數人聽到流暢聲音的前提下,令帶寬較富裕的聽眾獲得較好的音質。
      近來隨著網絡帶寬的普遍改善,Real公司正推出用于網絡廣播的、達到CD音質的格式。如果你的RealPlayer軟件不能處理這種格式,它就會提醒你下載一個免費的升級包。
    VQF:無人問津
      VQF是 雅馬哈公司開發的一種格式是,它的核心是減少數據流量但保持音質的方法來達到更高的壓縮比,可以說技術上也是很先進的,但是由于宣傳不力,這種格式難有用武之地。*.vqf可以用雅馬哈的播放器播放。同時雅馬哈也提供從*.wav文件轉換到*.vqf文件的軟件。 此文件缺少特點外加缺乏宣傳,現在幾乎已經宣布死刑了。
    OGG:新生代音頻格式
      Ogg全稱應該是OGG Vobis(ogg Vorbis) 是一種新的音頻壓縮格式,類似于MP3等現有的音樂格式。但有一點不同的是,它是完全免費、開放和沒有專利限制的。OGG Vobis有一個很出眾的特點,就是支持多聲道,隨著它的流行,以后用隨身聽來聽DTS編碼的多聲道作品將不會是夢想。
      Vorbis 是這種音頻壓縮機制的名字,而Ogg則是一個計劃的名字,該計劃意圖設計一個完全開放性的多媒體系統。目前該計劃只實現了OggVorbis這一部分。
      Ogg Vorbis文件的擴展名是.OGG。這種文件的設計格式是非常先進的。現在創建的OGG文件可以在未來的任何播放器上播放,因此,這種文件格式可以不斷地進行大小和音質的改良,而不影響舊有的編碼器或播放器。
      ogg格式完全開源,完全免費, 和mp3不相上下的新格式。
    AAC: 前途無量
      AAC(高級音頻編碼技術 Advanced Audio Coding),是杜比實驗室為音樂提供的技術,最大能容納48通道的音軌,采樣率達96 KHz。出現于1997年,是基于MPEG-2的音頻編碼技術。由Fraunhofer IIS、杜比、蘋果、AT&T、索尼等公司共同開發,以取代mp3格式。2000年,MPEG-4標準出臺,AAC從新整合了其特性,故現又稱MPEG-4 AAC,即m4a。
      AAC作為一種高壓縮比的音頻壓縮算法,AAC通常壓縮比為18:1,也有資料說為20:1,遠遠超過了AC-3、MP3等較老的音頻壓縮算法。一般認為,AAC格式在96Kbps碼率的表現超過了128Kbps的MP3音頻。AAC另一個引人注目的地方就是它的多聲道特性,它支持1~48個全音域音軌和15個低頻音軌。除此之外,AAC最高支持96KHz的采樣率,其解析能力足可以和DVD-Audio的PCM編碼相提并論,因此,它得到了DVD論壇的支持,成為了下一代DVD的標準音頻編碼。
    APE 無損壓縮格式
      新一代的無損音頻格式。 APE的本質,其實它是一種無損壓縮音頻格式。龐大的WAV音頻文件可以通過Monkey''s Audio這個軟件進行“瘦身”壓縮為APE。很時候它被用做網絡音頻文件傳輸,因為被壓縮后的APE文件容量要比WAV源文件小一半多,可以節約傳輸所用的時間。更重要的是,通過Monkey's Audio解壓縮還原以后得到的WAV文件可以做到與壓縮前的源文件完全一致。所以APE被譽為“無損音頻壓縮格式”,Monkey''s Audio被譽為“無損音頻壓縮軟件”。
      FLAC格式
      非常成熟的無損壓縮格式,名氣不在APE之下!FLAC是FreeLosslessAudioCodec的簡稱,該格式的源碼完全開放,而且兼容幾乎所有的操作系統平臺。它的編碼算法相當成熟,已經通過了嚴格的測試,而且據說在文件點損壞的情況下依然能夠正常播放(這一點我不曾試過)。該格式不僅有成熟的Windows制作程序,還得到了眾多第三方軟件的支持。此外該格式是唯一的已經得到硬件支持的無損格式,Rio公司的硬盤隨身聽Karma,建伍的車載音響MusicKeg以及PhatBox公司的數碼播放機都能支持FLAC格式。
      Tom's Audio Kompressor(TAK格式)
      TAK是一種新型的無損音頻壓縮格式,全稱是Tom's Audio Kompressor,產于德國。目前最新版本還停留在1.01(2007年06月02日)。它類似于FLAC和APE,總體來說,壓縮率類似APE而且解壓縮速度類似FLAC,算是綜合了兩者的優點。另外,用此格式的編碼器壓縮的音頻是VBR,即可變比特率的。
      幾大特點:
      -較為優秀的壓縮率。使用Extra參數的壓縮率類似APE的High參數,而使用TAK最快的壓縮參數Turbo得到的結果和FLAC壓縮率最大的參數效果有得一比。
      -較快的壓縮速度。作者說在相同壓縮率的情況下,據他了解尚未有別的格式能夠比TAK的Turbo和Fast的參數壓縮得更快。
      -非常快的解壓速度。類似于FLAC的解壓速度。
      -支持很多常用音頻格式轉換為TAK。
      -流支持。每隔兩秒,包含解碼所需全部信息的一楨會被插入到音頻中。
      -容錯度。1比特的信息出錯,最多影響到250毫秒的音頻。由于有上文提到的技術支持,利用本格式壓縮的損壞嚴重的音頻也可照樣播放,代價是損壞的部分由靜音代替。
      -錯誤校驗。24比特的CRC校驗用于每一楨上。
      -簡單快速的查找能力。即在你需要從中間某一點播放的時候,能夠很快地找到你想要的地方開始播放,定位也十分準確。
      -支持音頻信息。同時支持利用外掛CUE分割音軌和添加音頻信息。類似APE等。
    評論
      作為數字音樂文件格式的標準, WAV 格式容量過大,因而使用起來很不方便。因此,一般情況下我們把它壓縮為MP3或 WMA 格式。壓縮方法有無損壓縮,有損壓縮,以及混成壓縮。MPEG, JPEG就屬于混成壓縮,如果把壓縮的數據還原回去,數據其實是不一樣的。當然,人耳是無法分辨的。因此,如果把 MP3, OGG格式從壓縮的狀態還原回去的話,就會產生損失。然而, APE 格式即使還原,也能毫無損失地保留原有音質。所以, APE可以無損失高音質地壓縮和還原。在完全保持音質的前提下,APE的壓縮容量有了適當的減小。拿一個最為常見的38MB WAV文件為例,壓縮為 APE 格式后為25MB 左右,比開始足足少了13MB。而且MP3容量越來越大的今天,25M的歌曲已經算不上什么龐然大物了。以1GB的mp3來說可以放入4張CD,那就是40多首歌曲,已經足夠了!
    posted @ 2009-01-19 13:01 小馬歌 閱讀(484) | 評論 (0)編輯 收藏
     

    MP3,MP4的視頻功能從出現到今天,算起來也有三,四年時間了,但是現在的視頻播放能力上,除了顯示屏越來越大,分辨率,色度越來越高之外,并沒有什么太大的轉變,視頻編碼換了不少,但想要在隨身播放器上播放視頻,絕大多數還是需要轉換,而這正是消費者最頭疼的事。并且MP4播放器類產品與PSP等還有所不同,各家品牌之間的MP4產品并不能同一編碼和格式,因此不能像PSP那樣有一個提供大家共享的資源社區,大多數時候消費者還是需要自行轉換格式,而一般二次壓縮之后的視頻文件或多或少的存在顯示缺陷,并且浪費了大量的轉換時間。因此一種易獲得,資源多的視頻格式支持便成為了消費者最迫切的需求。而RM/RMVB格式正好滿足了這一需要。隨著幾款低價RM/RMVB格式直接支持的MP4播放器的上市,RMVB在網絡盛行之后,又成為了隨身播放領域炙手可熱的話題。在此,我們不妨就一起來看看什么是RMVB格式,RMVB格式又有那些優勢?

    早期的Realplayer Pluse播放器

    RMVB源自于Real Network公司的RealMedia(RM)格式,該公司是擁有悠久歷史,在網絡媒體上具有強大的技術力量。RealMedia普遍的特點是體積小,能夠適應非常窄的網絡帶寬,RMVB是原有的RM格式的改進,從RM9開始支持VBR編碼模式,并且改進了編碼算法,使其具有更高的要縮率和品質。它的推出在一定程度上彌補了一些原有的缺憾。相對于隨身領域而言,RMVB格式最大的優勢莫過于動態比特率,“霧化”技術和無須轉換這三點了。

    現在的RealOne Player

    區別與之前的RM格式,RMVB最大的特色就是加入了VBR技術,也就是Variable Bit Rate(可改變之比特率)的英文縮寫。VBR編碼是多媒體文件廣泛使用的編碼方式,例如常見的Mp3、wma、mpeg1、2、4都支持VBR編碼模式!以往我們在播放常見的RM格式電影時,可以在某些播放器看到“xxxKbps”字樣,這就是比特率。影片的靜止畫面和運動畫面對壓縮采樣率的要求是不同的,如果始終保持固定的比特率,會對比特利用造成浪費。 RMVB打破了原先RM格式那種平均壓縮采樣的方式,在保證平均壓縮比的基礎上,編碼器會根據畫面變化的復雜程度設定動態的不同的位率,最高位率一般為平均平均位率兩倍的最大位率。將較高的比特率用于復雜的動態畫面(歌舞、飛車、戰爭等),而在靜態畫面中則靈活地轉為較低的采樣率,合理地利用了比特率資源,使得在犧牲少部分影片質量情況下最大限度地壓縮了影片的大小,最終擁有了和固定比特率編碼的文件相近的視聽效果,可謂體積與清晰度“魚與熊掌兼得”。

    除了動態比特率外,RMVB格式與傳統視頻格式另一個最大的區別就在于:壓縮文件時RMVB采用的特殊的“霧化”技術,而不是傳統丟幀的方式。從平時的使用中,我們就可以看出來,一般播放RMVB格式的文件,在放大到一定程度或者全屏時,畫面會顯得模糊,而不是出現“馬賽克”現象。這就是RMVB格式的優勢。在很低的位率下,畫面會顯得很朦朧,但不會出現色塊。而位率超過700kbps之后其畫質開始步入DVDRip!因此RMVB可以在非常低的位率實現相當好的效果。

    就目前的市場來看,歌美X750,艾諾V2000等幾款產品,都采用了主頻達到500MHz的ADI Blackfin 533處理器,這樣一來網絡上超過85%的RMVB文件都可以直接在MP4播放器上直接播放了。而我們從網上下載的絕大多數RMVB電影顯示都超過了480P,而這個在電腦上播放的分辨率換到屏幕尺寸相對較小的MP4播放器時,清晰度就大大提高了,換句話說,由于沒有進行二次的轉換壓縮,配合RMVB格式本身特殊“霧化”技術和動態比特率兩個優勢,實現了另一種形式的“高清”!在隨身播放器容量不斷增大的今天,我們可以輕松的播放器中拷入多部電影。而無須轉換,直接播放,并且比以往任何一種二次壓縮的視頻格式更加清晰,流暢!這就是直接支持RMVB格式播放器相對于現有視頻播放器最大的優勢所在!

    posted @ 2009-01-19 12:10 小馬歌 閱讀(301) | 評論 (0)編輯 收藏
     
    一,介紹:

    如果要想迅速的得到 Linux 環境中的日志報告信息, Logwatch 是一個很好的工具。一般的 Linux 系統中可能都默認安裝了這個工具.幾乎不需要額外的配置就可以簡單的用起來。

    # logwatch --print

    這條命令將會把昨天的日志信息簡要的打印出來. 比如用戶登錄失敗信息、SSH 登錄信息、磁盤空間使用等。

    單獨查看某個服務,比如 SSH 登錄信息:

    # logwatch --service sshd --print

    這條命令可以查看使用說明:

    # logwatch --help

    最新版本的 LogWatch 默認有 70 多種 Log 的配置信息. 如果要對自己的特殊 Log 做監控, 定制也是比較容易的。簡單記錄一下:

    基本的做法:

    1) 創建一個日志文件組。指定自己的 Log 文件,可以是一個,可以是多個;

    2) 創建一個新的服務。指明這個服務的名字, 指明 Log 文件來源(來自上一步的定義);

    3) 創建一個過濾腳本。

    整個原理就是,LogWatch 首先要知道針對哪一個服務, 從這個服務中得到需要處理的 Log 文件信息, 然后這個文件送給過濾腳本處理, 之后把處理后格式化的信息展現出來。出于時間關系,例子就不給了。

    但是每天ssh到服務器上使用太不方便,還好logwatch提供了mail功能:

    #nano /etc/logwatch/conf/logwatch.conf

    修改下面的root為你自己的郵件地址:

    MailTo = root(其實可以加自己的郵箱,中間逗號隔開)

    同時,因為我們需要了解服務器的詳細信息,所以,修改下面的:

    Detail = 是細節度,推薦 10 ,即最高

    安全:

    LogWatch 舊版本 2.11 有個著名的漏洞:臨時目錄建立處理中存在競爭條件漏洞。這里有溢出代碼:Root Compromise through LogWatch

    其他: LogWatch 報告的是 Log 信息的歷史數據,如果要實時監控 Log,可以考慮用 Swatch。

    二,安裝配置

    Logwatch能夠對Linux 環境系統Log報告進行分析,自動發送電子郵件給系統管理員,而且能夠根據用戶的需求進行定制。
    1、下載最新版
    Logwatch的官方網站地址:http://www.logwatch.org/
    下載地址:wget ftp://ftp.kaybee.org/pub/redhat/RPMS/noarch/logwatch-6.0.2-2.noarch.rpm

    2、查看是否安裝軟件包
    # rpm -q logwatch
    logwatch-4.3.1-2
    # rpm -q perl
    perl-5.8.0-88
    3、設置
    logwatch日志分析軟件需要借助系統自帶的MTA發郵件,所以系統需要安裝比如sendmail,postfix等郵件程序,只要安裝完sendmail,使用默認設置就可以發郵件了。
    4、配置文件:
    /etc/log.d/logwatch.conf
    修改以下內容為這樣:
    MailTo = root@a.com 管理員的郵箱地址
    Detail = High 是細節度,推薦 10(或high) ,即日志詳細程度為高

    5、重啟sendmail
    # /etc/init.d/sendmail start

    6、執行logwatch:
    自動執行:
    logwatch默認為每天執行一次(cron.daily)。
    手動執行:
    # perl /usr/sbin/logwatch

    #perl /etc/log.d/scripts/logwatch.pl

    7、查看郵件日志
    /var/log/mail/log

    posted @ 2009-01-15 10:44 小馬歌 閱讀(839) | 評論 (0)編輯 收藏
     

    有一個功能就是可以log下來運行的比較慢的sql語句,默認是沒有這個log的,為了開啟這個功能,要修改my.cnf或者在mysql啟動的時候加入一些參數。如果在my.cnf里面修改,需增加如下幾行

    long_query_time = 1
    log-slow-queries = /var/youpath/slow.log
    log-queries-not-using-indexes

    long_query_time 是指執行超過多久的sql會被log下來,這里是1秒。
    log-slow-queries 設置把日志寫在那里,可以為空,系統會給一個缺省的文件host_name-slow.log,我生成的log就在mysql的data目錄
    log-queries-not-using-indexes 就是字面意思,log下來沒有使用索引的query。

    把上述參數打開,運行一段時間,就可以關掉了,省得影響生產環境。

    接下來就是分析了,我這里的文件名字叫host-slow.log。
    先mysqldumpslow –help以下,俺主要用的是
    -s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
    -t NUM just show the top n queries
    -g PATTERN grep: only consider stmts that include this string

    -s,是order的順序,說明寫的不夠詳細,俺用下來,包括看了代碼,主要有
    c,t,l,r和ac,at,al,ar,分別是按照query次數,時間,lock的時間和返回的記錄數來排序,前面加了a的時倒敘
    -t,是top n的意思,即為返回前面多少條的數據
    -g,后邊可以寫一個正則匹配模式,大小寫不敏感的

    mysqldumpslow -s c -t 20 host-slow.log
    mysqldumpslow -s r -t 20 host-slow.log

    上述命令可以看出訪問次數最多的20個sql語句和返回記錄集最多的20個sql。
    mysqldumpslow -t 10 -s t -g “left join” host-slow.log
    這個是按照時間返回前10條里面含有左連接的sql語句。

    用了這個工具就可以查詢出來那些sql語句是性能的瓶頸,進行優化,比如加索引,該應用的實現方式等。

    posted @ 2009-01-12 14:49 小馬歌 閱讀(135) | 評論 (0)編輯 收藏
     

    1, MP3簡介

    MP3是今天一種常見的音樂格式,但恐怕除了工作要求之外,有興趣對此進行研究的人恐怕不多。所以,當我打算做MP3解碼方面的工作時,在找資料時也頗費了一番周折,同時也覺得很有趣。所以想在這里分享一下自己的心得,做一個總結性的介紹。這樣有興趣的同志也可以對此有一個大概了解,盡快入門。

    MP3
    MPEG-1 Audio Layer 3的簡稱,是當今比較流行的一種數字音頻編碼和有損壓縮格式(有Layer 3,也必然有Layer1Layer2,也就是MP1MP2,但不在本文討論范圍之內)。MP3技術的應該可以用來大幅度的降低音頻文件存儲所需要的空間。它丟掉脈沖編碼調制(PCM)音頻數據中對人類聽覺不重要得數據,從而達到了較高的壓縮比(高達121101)。簡單地說,MP3在編碼時先對音頻文件進行頻譜分析,然后用過濾器濾掉噪音電平,接著通過量化的方式將剩下的每一位打散排列,最后形成有較高壓縮比的MP3文件,并使壓縮后的文件在回放時也能夠達到比較接近原音源的效果。

    MP3
    的音頻質量取決于它的BitrateSampling frequency,以及編碼器質量。MP3的典型速度介于每秒128320kb之間。采樣頻率也有44.14832 kHz三種頻率,比較常見的是采用CD采樣頻率——44.1kHz。常用的編碼器是LAME,它完全遵循LGPLMP3編碼器,有著良好的速度和音質。

     

    2,      MP3文件格式

    用一個二進制查看器(比如Ultra-Edit)打開一個MP3文件,就能看到一大堆看似雜亂無序的數據。但只要用心了解就會知道,其實,這一切都是有規律可循的。

    MP3
    文件是由幀(frame)構成,幀是MP3文件的最小組成單位。每幀都包含幀頭,并可以計算幀的長度。根據幀的性質不同,文件主要分為三個部分,ID3v2標簽幀,數據幀和ID3v1標簽幀。并非每個MP3文件都有ID3v2,但是數據幀和ID3v1幀是必須的。ID3v2在文件頭,以字符串“ID3為標志,包含了演唱者,作曲,專輯等信息,長度不固定,擴展了ID3V1的信息量。ID3v1在文件結尾,以字符串“TAG”為標記,其長度是固定的128個字節,包含了演唱者、歌名、專輯、年份等信息。

    I, ID3V2

    ID3V2到現在一共有四個版本,但流行的播放軟件一般只支持第三版,既ID3V2.3每個ID3V2.3 的標簽都一個標簽頭和若干個標簽幀或一個擴展標簽頭組成。關于曲目的信息如標題、作者等都存放在不同的標簽幀中,擴展標簽頭和標簽幀并不是必要的,但每個標簽至少要有一個標簽幀。標簽頭和標簽幀一起順序存放在MP3 文件的首部。

    標簽頭

    長度為10個字節,位于文件首部,其數據結構如下:

    char Header[3]; /* 字符串 "ID3" */

    char Ver;       /* 版本號ID3V2.3 就記錄3 */

    char Revision; /* 副版本號此版本記錄為0 */

    char Flag;     /* 存放標志的字節,這個版本只定義了三位,很少用到,可以忽略 */

    char Size[4]; /* 標簽大小,除了標簽頭的10 個字節的標簽幀的大小 */

    標簽大小為四個字節,但每個字節只用低7位,最高位不使用,恒為0,其格式如下:
    0xxxxxxx 0xxxxxxx 0xxxxxxx 0xxxxxxx

    計算公式如下:

    ID3V2_frame_size = (int)(Size[0] & 0x7F) << 21
                     | (int)(Size[1] & 0x7F) << 14
                      | (int)(Size[2] & 0x7F) << 7
                      | (int)(Size[3] & 0x7F) + 10;


    標簽幀

    每個標簽幀都有一個10字節的幀頭和至少一個字節的不固定長度的內容組成。它們是順序存放在文件中,由各自特定的標簽頭來標記幀的開始。其幀的結構如下:

    char FrameID[4];   /*用四個字符標識一個幀,說明其內容 */

    char Size[4];      /* 幀內容的大小,不包括幀頭,不得小于1 */

    char Flags[2];     /* 存放標志,只定義了6 位,此處不再說明 */

    常用幀標識:

    TIT2:標題
    TPE1
    :作者
    TALB
    :專輯
    TRCK
    : 音軌,格式:N/MN表示專輯中第幾首,M為專輯中歌曲總數
    TYER
    :年份
    TCON
    :類型
    COMM
    :備注,格式:“eng\0備注內容”,其中eng表示所使用的語言
    幀大小為四個字節所表示的整數大小。


    II, ID3V1

    其數據結構如下:

    char Header[3];    /* 標簽頭必須是"TAG"否則認為沒有標簽 */
    char Title[30];    /*
    標題 */
    char Artist[30];   /*
    作者 */
    char Album[30];    /*
    專集 */
    char Year[4];      /*
    出品年代 */
    char Comment[28]; /*
    備注 */
    char reserve;      /*
    保留 */
    char track;;       /*
    音軌 */
    char Genre;        /*
    類型 */

    其實,關于最后31個字節還存在另外一個版本,就是30個字節的Comment和一個字節的Genre.

    有了上述的這些信息,我們就可以自己寫代碼,從MP3文件中抓取信息以及修改文件名了。但是,如果真的想寫一個播放軟件,還是需要讀它的數據幀,并進行解碼。


    III,
    數據幀

    數據幀往往有多個,至于有多少,由文件大小和幀大小來決定。每個幀都有一個四字節長的幀頭,接下來可能有兩個字節的CRC校驗,其存在由幀頭中的具體信息決定。接著就是幀的實體數據,也就是MAIN_DATA了。

    A,幀頭結構如下:

    位置     長度     描述
    BIT  BITS
    ————————————————————————————
    31
    19   12       Frame sync(0xFFF)
    18/17    2        Layer, 00 – reserved, 01 – Layer III
                             10 – Layer II, 11
    Layer I
    16       1         protection_bit, 0
    意味著受CRC保護,幀頭后面跟16位的CRC
    15-12    4        bitrate_index,
    比特率
    11-10    2        sampling_frequency,    00 – 44.1KHz, 01 – 48KHz
                                             10 – 32 KHz,  11 –
    保留
    9        1        padding_bit,1
    意味著幀里包含padding位,僅當采樣頻率為44.1KHz時發生。
    8        1        private_bit
    7
    6     2        mode,    00stereo,        01-joint stereo(intensity stereo and/or ms_stereo)
                               
    11- dual_channel, 11 – single_channel
    5-4      2        mode_extension,
    Layer III中表示使用了哪一種joint stereo編碼方式。
                                Intensity_stereo   ms_stereo
                       00            off                off
                       01            on                 off
                       10            off                on
                       11            on                 on
    3        1        copyright,1
    表示受版權保護。
    2        1        original
    0表示該bitstream是一個copy1表示是original.
    1-0      2        emphasis
    ,表示會使用哪一種de-emphasis
                       00
    no emphasis,     01 – 50/15 microsec. Emphasis
                       
    10 – reserved,        11 – CCITT J.17

    1)      無論幀長是多少,每幀的播放時間都是26ms

    2)      數據幀大小:

    FrameSize = 144 * Bitrate / SamplingRate + PaddingBit
    144 * Bitrate / SamplingRate不能被8整除,則加上相應的paddingBit.

    B,MAIN_DATA:

    MP3granule包含18 * 32subband采樣。每個數據幀含有兩個granule的數據,其內容結如下:
           - main_data_end pointer
           - side info for both granules (scfsi)
           - side info granule 1
           - side info granule 2
           - scalefactors and Huffman code data granule 1
           - scalefactors and Huffman code data granule 2

    主要數據里包含了scalefactors, Huffman encoded dataancillary information。其內容不再詳敘,可以參考MP3 SPECIS0 11172-3 AUDIO PART。我們一般用的都是立體聲,scfsi的長度為32個字節。

    這里要解釋的一個概念就是位流――bitstream。我們平常接觸到的數據都是整數,最小的單位就是byte后者char。雖然我們也會用一個字節里的不同位來表示不同的含義,但總的來說,我們在出來數據的時候還是把它當作一個個字節看待。但對MP3這種數據格式來說,這是行不通的。在解碼時,它的數據輸入就是一個個比特流。其中一個或幾個比特會是你的采樣數據或者信息編碼。你需要從整個MAIN_DATA里提取你所需要的以BIT為單位的參數和輸入信號,從而進行解碼。所以我們需要一個子程序,getbit(n),也就是從緩沖中提取所需要的位,并形成一個新的整數,作為我們的輸出。

    C,LAME標簽幀

    可是,當你真的打開一個MP3文件的時候,你會發現,很奇怪,很多時候第一個數據幀的幀頭后面的32個字節居然都為0,這是為什么呢,這么奇怪的解碼信息該如何解釋?找到MP3 INFO TAG REV SPECIFICATION的網站,我才明白,原來第一幀并不是真正的數據幀,而是LAME編碼的標志幀。

    這里又要牽涉到兩個概念:CBRVBRCBR表示比特率不變,也就是每幀的長度是一致的,它以字符串“INFO”為標記。VBRVariable BitRate的簡稱,也就是每幀的比特率和幀的長度是變化的,它以字符串“Xing”為標記。同時,它還存放了MP3文件里幀的總個數,和100個字節的播放總時間分段的幀的INDEX,還有其他一些參數,這被稱為Zone A,傳統Xing VBR標簽數據,共120個字節。

    在二進制文本編輯器里我們還可看到一個字符串“LAME”,并且后面清楚地跟著版本號。這就是20個字節的Zone B初始LAME信息,表示該文件是用LAME編碼技術。接下來一直到該幀結束就是Zone CLAME標簽。

    3,      相關資料

    × Mp3 Info Tag rev 1 specifications - draft 0

    × MP3 文件格式

    × MP3 SPECIS0 11172-3 AUDIO PART

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1688758

    posted @ 2008-12-29 15:36 小馬歌 閱讀(552) | 評論 (0)編輯 收藏
     
    1,nice  調節命令執行優先級
            功能說明:設置優先權。
      語  法:nice [-n <優先等級>][--help][--version][執行指令]
      補充說明:nice指令可以改變程序執行的優先權等級。
      參  數:  -n<優先等級>或-<優先等級>或--adjustment=<優先等級>  設置欲執行的指令的優先權等級。等級的范圍從-20-19,其中-20最高,19最低,只有系統管理者可以設置負數的等級。
      --help  在線幫助。
      --version  顯示版本信息。
    2, rpm   rpm包管理
    rpm -qa 查詢系統所安裝的所有rpm包
    rpm -e [package] 卸載rpm包
    rpm -ivh [package]  安裝rpm包
    posted @ 2008-12-27 15:59 小馬歌 閱讀(78) | 評論 (0)編輯 收藏
     

    MySql的備份可用命令mysqldump ,使用方法很簡單,mysqldump -u 用戶名 -p (密碼) -h 主機名 數據庫名 >路徑/備份名.bak;同時也可以是用mysqldump到處數據結構(tablename.sql)和數據(tablename.txt) mysqldump -u 用戶名  -p (密碼)  -h 主機名 數據庫名 tablename1 tablename2 > back.sql或mysqldump -u 用戶名 -p (密碼) -h 主機名 數據庫名 --tab 路徑 --opt 數據庫名.
    EXA:
    mysqldump -u pivot -p pivot news > c:\news.sql


       那么還原可以mysql命令,mysql -u 用戶名 -p (密碼) -h 主機名 --one-database 還原數據庫名 < 路徑/備份名.bak,--one-database是指定要恢復的數據庫.
    EXA:
    mysql -u pivot -p pivot news < c:\news.sql

      (括號表示密碼不先輸入,在連接時在Enter password;若密碼為空可缺省-p參數)

    posted @ 2008-12-26 10:42 小馬歌 閱讀(195) | 評論 (0)編輯 收藏
     

    在Java編程中,可以用URLConnection(HttpURLConnection)獲取web資源 
                      
    String originalurl = " URL url = new URL(originalurl);
    URLConnection urlCon = url.openConnection();
    (或HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();)

    在使用上面語句進行http鏈接,如果沒有超時設置,當在網絡異常時經常會出現程序僵死的情況。
    這種情況在用瀏覽器請求web頁面時也可能出現,即某一頁面一直處于下載狀態,無法獲得數據也無報錯。
    通過使用下面的語句進行超時設置即可解決這一問題。

    System.setProperty("sun.net.client.defaultConnectTimeout", "60000");
    System.setProperty("sun.net.client.defaultReadTimeout", "60000");

    //設置連接主機的超時時間和從主機讀取數據的超時時間均為1分鐘(60000毫秒)。
    JDk 1.4及以前的版本可以用上面方法,在以后版本中有更簡單的方法,如下:

    urlCon.setConnectTimeout(60000);
    urlCon.setReadTimeout(60000);

    文章出處:http://www.diybl.com/course/3_program/java/javajs/20071018/77938.html

    posted @ 2008-12-26 10:41 小馬歌 閱讀(380) | 評論 (0)編輯 收藏
     
         摘要: 1.判斷select選項中 是否存在Value="paraValue"的Item 2.向select選項中 加入一個Item 3.從select選項中 刪除一個Item 4.修改select選項中 value="paraValue"的text為"paraText" 5.設置select中text="paraText"的第一個Item為選中 6.設置select中value="paraVa...  閱讀全文
    posted @ 2008-12-26 10:39 小馬歌 閱讀(3740) | 評論 (0)編輯 收藏
     

    *
         功能說明:分析字符串s,提取s里面的超鏈接和鏈接文字.并存入動態數組
         同時根據指定包含和不包含的字符串進行過濾相關鏈接。
         2008年3月30日
         
    */

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import java.util.*;
    public class RegTest
    ...{
        public static void main(String[] args)
        ...{

            //定義一個文章列表類。包含文章的網址和文章標題
            class ArticleList
            ...{
                String URLs;
                String title;

                public ArticleList()...{}
                public ArticleList(String t,String u)
                ...{
                    title=t;
                    URLs=u;
                }
                       
                public String toString()
                ...{
                    return ("標題:"+title+" 網址:"+URLs+" ");
                }
            }
        
            ArrayList <ArticleList>  al=new ArrayList<ArticleList>();
            String s="</p><p style=height:14px><a href=http://jingjia.baidu.com>企業推廣</a> | <a href=http://top.baidu.com>搜索風云榜</a> | <a href=/home.html>關于百度</a> | <a href=http://ir.baidu.com>About Baidu</a></p><p id=b>&copy;2008 Baidu <a href=http://www.baidu.com/duty>使用百度前必讀</a> <a href=http://www.miibeian.gov.cn target=_blank>京ICP證030173號</a> <a href=http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001092500412><img src=http://gimg.baidu.com/img/gs.gif></a></p></center></body></html><!--543ff95f18f36b11-->";
            String regex="<a.*?/a>";   
     
            Pattern pt=Pattern.compile(regex);
            //System.out.println(regex);
            Matcher mt=pt.matcher(s);
            String includeString=".*?baidu\.com.*?";//必須包含 字符串"baidu.com"
     
            while(mt.find())
            ...{
                if(mt.group().matches(includeString))
                ...{
                     //System.out.println(mt.group());
                   
                     String s2=">.*?</a>";//標題部分
                     String s3="href=.*?>";
                      
                      Pattern pt2=Pattern.compile(s2);
                      Matcher mt2=pt2.matcher(mt.group());
                      Pattern pt3=Pattern.compile(s3);
                      Matcher mt3=pt3.matcher(mt.group());
                      while(mt2.find()&&mt3.find())
                      ...{
                          //System.out.println("標題:"+mt2.group().replaceAll(">|</a>",""));
                          //System.out.println("網址:"+mt3.group().replaceAll("href=|>",""));
                          String t=mt2.group().replaceAll(">|</a>","");
                          String u=mt3.group().replaceAll("href=|>","");
                          al.add(new ArticleList(t,u));
                      }
                }
               
            }//end while
           
            for(int i=0;i<al.size();i++)
            System.out.println(al.get(i));
            System.out.println("共有"+al.size()+"個結果");
        } 
    }

    文章出處:http://www.diybl.com/course/3_program/java/javajs/200843/108201.html

    posted @ 2008-12-26 10:35 小馬歌 閱讀(1665) | 評論 (0)編輯 收藏
    僅列出標題
    共95頁: First 上一頁 74 75 76 77 78 79 80 81 82 下一頁 Last 
     
    主站蜘蛛池模板: 亚洲成色WWW久久网站| 国产成人精品亚洲精品| 亚洲一级二级三级不卡| 中文字幕无码免费久久9一区9 | 一日本道a高清免费播放| 日批日出水久久亚洲精品tv| 亚洲AV无码一区二区三区性色 | 三级黄色片免费看| 亚洲精品无码精品mV在线观看| jizz18免费视频| 国产自偷亚洲精品页65页| 两性色午夜免费视频| 亚洲av永久无码精品表情包| 青青青国产手机频在线免费观看| 亚洲av色福利天堂| 成人免费黄色网址| 亚洲国产区男人本色| 免费在线观看毛片| 久久成人18免费网站| 亚洲视频网站在线观看| 欧美好看的免费电影在线观看| 亚洲码和欧洲码一码二码三码| 免费一级特黄特色大片在线观看| 特色特黄a毛片高清免费观看| 国内精品久久久久久久亚洲| 久久aa毛片免费播放嗯啊| 亚洲a视频在线观看| 免费观看国产精品| 国产做国产爱免费视频| 亚洲午夜电影一区二区三区| 成人爱做日本视频免费| 三级片免费观看久久| 区久久AAA片69亚洲| 国内精自视频品线六区免费| 亚洲av无码专区在线观看亚| 亚洲精品国产精品国自产观看| 99精品视频在线观看免费专区| 亚洲精品国产av成拍色拍| 亚洲精品蜜桃久久久久久| 无码人妻一区二区三区免费| fc2免费人成在线视频|