killersound 技巧: 為 Flash Lite 最佳化數字音頻

來源:互聯網
上載者:User
技巧|最佳化

  同 Macromedia Flash 改變了我們體驗 Web 的方式一樣,Macromedia Flash Lite 對行動裝置起到了同樣的作用。音效是這種豐富式體驗的一部分。事實上,音效是任何行動裝置不可分割的一部分,它提供警告、鈴聲、音頻提示和多種娛樂使用中的背景音樂。在本文中,我將為您介紹 killersound 技巧 - 一種在 Flash Lite 1.1 中使用音效的創新方法(該方法同樣適用於在案頭上使用 Flash)。使用本技巧,您能夠將數字音訊檔案大小縮小最多 70%。它還提供了多種聽覺體驗,而不僅僅是簡單的音頻回放。本技巧對於需要較長背景音樂的產品(例如遊戲)尤其有用。事實上,需要的音樂越長,就越能從本技巧中受益。

   請注意,本教程使用數字音頻檔案(WAV 或 MP3),而不是 MIDI 檔案。由於數字音訊檔案大小和對處理能力的較高要求,並非所有具有 Flash 功能的行動裝置都支援數字音頻。但是,到本文出版時,很可能大多數新的行動裝置將通過使用更好的硬體(擴音器)、更多記憶體和更快的處理器支援數字音頻。同時,我確信 Flash Lite 的下一版本將會使用這一逐漸完善的技術來交付更為豐富的移動體驗。

  教程和樣本檔案:layering_audio.zip(ZIP, 3.6 MB)

  必備知識:中等的 Flash 知識,尤其是在 Flash 中使用音訊知識,將有所協助。

  到目前為止,MIDI 一直是行動裝置上的標準聲音格式。雖然這種格式很簡單,但它在音質和能夠產生的音效數量和類型上非常有限。通過 MIDI 產生的音效取決於作為行動裝置晶片一部分的波形表。與數字音頻不同,MIDI 檔案中不包含任何聲音,它包含的是一套指令,用以觸發手機晶片內的音效。相反,數字音頻包含了聲音本身,這聲音可以是廣播、語音或者震動音。數字音訊音質取決於錄音或儲存時的採樣率。我們大多數人都對 MP3 數字音頻格式很熟悉。位元速率或採樣率越高,音質就越好。但是,較高的位元速率也意味著檔案更大。

   本文說明的技巧涉及數字音頻檔案的分層,可為數字音樂人所採用。在 Flash 中,您可以重用視覺元素,從而避免增大匯出的 SWF 電影,對音頻也可以這樣做。通過匯入單獨的元素或樂曲的一部分(低音、鼓點等等),將它們放置在不同的層上,以及使用 Flash 中的音效工具,您可以創造出音樂變換的假象。本技巧還給設計者以自由度和靈活性,使其能夠組合音樂使之與產品中的視覺元素相匹配。要利用本技巧,您必須準備好您要使用的音樂中的所有元素。目前,您可以通過授權方式使用已經被分解為各個組成部分的音樂,也可以使用流行的軟體產品來創作自己的音樂。

  首先下載並展開與本教程配套的 layering_audio.zip 封存檔案。該檔案中有一個 FLA 檔案,兩個 SWF 檔案和一個名為 silent.wav 的檔案。

   開啟 C0064.fla 檔案。在 Stage 上的是圖 1 中所示的映像。檔案由四部分組成 - 小提琴、大提琴、吉他和鋼琴。如果進入 Library,您可以單獨聆聽各個部分。所有四個部分都在名為 Musical Elements 的檔案夾中。在本教程中,您將製作一個 Flash Lite SWF 電影並使之運行於 Nokia 6600 手機上。

  注意:您可以從 David Mannl’s Flash Lite* 網站擷取各種行動裝置的最新的預先配置過的模板。這些模板已設定為正確的螢幕尺寸。

圖 1:C0064.fla 檔案包含四個部分。

  每個部分單獨錄製和最佳化,並作為獨立的音效檔匯入 Flash。為使音效在自己的層正確播放並與其它音效合成,所有的音效檔案必須具有相同的長度,或者彼此之間的比例相同。在本例中,所有四個部分具有相同的長度。彩色塊代表這些部分在時間軸上播放的執行個體。如果您在 Flash 應用程式中運行電影,您將在各部分播放時聽到音樂。

   圖 2 顯示了 Flash 時間軸。每一部分都有自己的一層,除了 silent 層,其它各層都開始於同一個主要畫面格(第 16 幀),稍後將談到。所有音樂元素在同一主要畫面格開始非常重要。後面將對此詳細解釋。

圖 2:在時間軸上,每個部分都有自己的一層,並開始同一個主要畫面格。

  匯出至 Flash Lite 時,最好不要馬上開始音效,應提供多個空白幀來快取資料。某些處理器較慢的裝置開始顯示內容需要一秒鐘左右的時間;因此,如果音頻開始的過快,開始部分可能會被截掉。

  設定和編輯聲音封裝點

   現在,前往 strings - event 層,並點擊嵌入聲音的第 16 幀。在 Frame Properties 視窗中,您可以看到附帶的音效名為 C0064strings.wav,該音效重複 10 次。單擊 Edit 按鈕,開啟 Edit Envelope 視窗。單擊 Frames 按鈕(右下方)將時間軸刻度從秒轉換為幀。(使用該視窗底部的縮放按鈕)一直縮小,直到看到應用於此部分的六個封裝點(見圖 3)。

圖 3:您可以應用封裝點(小方塊)來改變音效的音量。

  在聲音視窗中顯示為小方塊的封裝點是音量點。您可以單擊或拖動這些點來建立音量效果。您可以為各個聲音層調整合適的音量水平,以獲得最佳的合成音量。聲音視窗中的兩個視窗代表左右聲道。除非要建立聲音漂移之類的特效,否則應確保在兩個視窗中鏡像動作。

   您可以看到,在 C0064strings.wav 迴圈播放兩次後,使用封裝點進行了一次快速的逐步淡出。這一部分保持無聲狀態,直至第五個執行個體或迴圈播放。將第五個執行個體開始處的那一點放大至最大(見圖 4)。這應該位於第 399 幀附件。您可以在採樣視圖和時間視圖之間切換(視窗底部縮放按鈕右側的兩個按鈕)。封裝點在第五個執行個體或迴圈開始處設定。使用這一技巧時,需要達到這樣的精確度,才能確保流暢的合成。

圖 4:放大至最大,以準確地操作封裝點。

  現在,來看看其它各層,以及封裝點在其上的應用方式。例如,小提琴部分的封裝點並未設至最大,因為您不希望小提琴的聲音喧賓奪主。這種合成只是諸多可能性之一。例如,您可以選擇開始音樂時只有吉他,然後在加入大提琴部分,依此類推。合成中的部分越多,就有越多的可能性。但是,聲音的層數是有限制的。我建議在 Flash Lite 中最多使用超過四到五層。隨著技術的進步,行動裝置和 Flash Lite 播放器更加健壯,這種限制可能不再存在。還應記住的是,目前,對於某個具體主要畫面格中的任何聲音,最多隻能應用八個封裝點 - 因此,聰明並有創造性地使用它們。當然,如果您在一個新的主要畫面格中開始了一個新的執行個體,您就有八個新的封裝點了。

  Stream 和 Event 聲音

   正如您所看到的,所有層(除了 silent 層)的 sync 設定都是 event。對於 event,Flash Lite 單獨匯出和讀取各個聲音層。這種方法的好處是,Flash Lite 把音效檔看作執行個體。當 Flash Lite 載入單個組件或音效檔時,與圖形的處理方式相同。因此,無論各個音效檔在它自己的層中迴圈多少次,Flash Lite 不會使用額外的檔案空間來在時間軸上迴圈播放音效檔,也不會將聲音層綁定至動畫。當使用 event sync 設定時,音效檔獨立於圖形運行。

   有時候,如果裝置的處理器速度慢,就會發生問題。如果記憶體不夠用,Flash Lite 將無法同時讀取一幀中的所有層。這可能導致聲音層彼此之間不能同步。為解決這一問題,我們使用一個很小的 silent 音頻檔案在音樂開始處將播放器置於流模式,這足以使 event 音效開始播放。您可以發現,唯一設定為 stream 的 silent 層使用這一極小的聲音並在其它音樂層之前開始。用設定為 stream 的聲音開始音樂能夠使各層保持同步。我單獨提供了此檔案 (silent.wav),以備您將來使用之需。

   如要使用 stream 作為所有分層聲音的同步設定,動畫將被綁定至時間軸。使用此設定,Flash Lite 將所有聲音作為單個音效檔在單一通道上匯出和讀取。這將鎖定所有音效檔處於同步,因此不再需要silent 音效。但是,該設定不具備將組件作為迴圈執行個體使用所產生的檔案小的優勢。同時,當使用 stream 時,只要電影中有足夠的幀,音樂會一直運行。與 event 設定不同,如果沒有足夠的幀來包含音頻或者有動作停止了電影的播放,採用 stream 設定的音樂將被截斷。

  壓縮

   對於壓縮,您可以使用全域壓縮設定,也可以為每個音效檔單獨設定壓縮。頻率低的聲音,例如大提琴音,壓縮比可以非常大。其它如鼓點等,如果過分壓縮,可能會截斷。單獨設定壓縮的好處在於,您可以通過壓縮比大的部分減小檔案大小,同時對逼真度更為敏感的部分設定較小的壓縮比,從而得到更好的音質。為單個檔案設定壓縮的方法是:在 Library 視窗中找到單個檔案,在檔案上單擊右鍵,然後在 Export Settings 對話方塊中進行壓縮設定。

   根據檔案大小的限制不同,全域設定壓縮可能更容易(見圖 5)。注意,stream 音效 (silent.wav) 的壓縮設定為最大的可能壓縮,這是因為該音效是無聲的,檔案可以盡量地小。

圖 5:您可以在匯出 SWF 檔案時全域設定壓縮。

   記住,您製作的音效很可能會通過微小的單頻擴音器播放;因此,音質的好壞受到擴音器的限制。理想情況下,您最好使用實際裝置進行測試。但是,我發現 ADPCM, 11kHz, 4 bit, Mono 這樣一組全域匯出設定在大多數情況下都能得到不錯的結果。對於微小的擴音器,它在音質和最小的檔案大小之間取得了平衡。要注意的是,使用 Flash Lite 和本技巧,ADPCM 是取得無縫迴圈播放的唯一匯出格式。案頭 Flash 產品使用 MP3 可得到更高的壓縮比,但 Flash Lite 如果使用 MP3 壓縮匯出,將無法在行動裝置上播放。Flash Lite 如果使用 MP3 壓縮,將會在每個迴圈點留下一個間隙,當音效迴圈播放時,會有一秒的間隔。在案頭上播放 SWF 檔案不會有這個問題,載入到行動裝置後則會出現。

  結果

  如果使用前面提到的壓縮設定 (ADPCM, 11kHz, 4 bit) 匯出 FLA 檔案,檔案大小將與名為C0064_4_adpcm11-4.swf 的 SWF 檔案相同。本文所附的另一個 SWF 電影,C0064_mix_adpcm11-4.swf,使用同樣的壓縮設定,播放同樣的音樂,但沒有使用分層技巧。相反,它使用的是單個靜態音效檔。兩個檔案包含的音樂都播放約 48 秒。但在大小上的差別很大:

  C0064_4_adpcm11-4.swf:該檔案包含分層的四個部分。每個部分長度為 4.8 秒;因此,該檔案的音頻長度為 19.2 秒 (4 x 4.8)。匯出檔案的大小是 108K。

  C0064_mix_adpcm11-4.swf:該檔案使用單一的樂曲,長度約 48 秒。匯出檔案的大小是 260K。
正如您所見,在本例中,使用 killersound 分層技巧,可以節省約 60% 的檔案大小。

  總結

   如果將本文所示的技巧用於 Macromedia Flash Lite,您將擁有大量的靈活性,並能顯著減小 SWF 的檔案大小。基本概念是:通過將音樂的不同元素匯入到不同的層,並在各層中對其進行操作,可以實現對音樂的各種控制。這樣,您就可以用自己喜歡的方式來調整音樂,並避免使用單一的、靜態音頻。得到的曲目檔案體積小,包含多個迴圈播放的元素,這些元素在若干點被有意設為靜音和非靜音。

  您可以在 killersound* 網站找到同時適用於 Macromedia Flash Lite 和 Flash 的更多教程和資訊。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。