新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 創(chuàng)客作品:自制足球游戲解說員

創(chuàng)客作品:自制足球游戲解說員

作者:EEPW編譯 時間:2015-01-13 來源:電子產品世界 收藏

  上述使用了兩個“聲音”對象。一個用于存儲文件中來自外部文件的數據;另一個用于播放實際聲音。詳細解釋工作原理的注釋不多,不過還是有必要了解幾個核心概念:

本文引用地址:http://butianyuan.cn/article/268066.htm

  在音頻播放前(送到聲卡)我們借助eventlistener用wavdata填充“外向的”聲音對象,即發(fā)送到聲卡前詢問的數據,這些數據決定顯示哪個口型。

  如果希望播放聲音,我們只需告訴設備,從哪個位置開始提取已加載聲音數據的wavdata字節(jié)即可。當到達示例音頻的最后部分,我們就停止音頻播放。

  最棘手的部分是將中的標簽數據轉換成“示例數據抵消”值以及使音頻在恰當的位置啟動/停止。中的標簽位置由運行時間決定。但“樣本”數據不基于時間,這就使其與匹配出現(xiàn)問題。

  對于每個示例,都占用4個字節(jié),據此可以計算出,一秒的音頻數據,若以CD品質44.1 khz記錄則應該包含44100 * 8 = 352800個字節(jié)。所以如果我們開始從文件中提取樣本數據并加載352800字節(jié),就可以有效地播放一秒的音頻。同樣,從5秒開始回放則需要從44100 * 8 * 5 = 1764000字節(jié)處開始提取音頻樣本數據。

  為了減少文件大小(并縮減操縱文件開銷)我們在mono 樣本、以11025 hz頻率進行記錄。這就意味著每個示例中我們只占用4字節(jié)(因為沒有左/右跟蹤,針對單個、mono追蹤我們只占用4個字節(jié)為)而非8個。所以我們需要計算字節(jié)偏移量為:

  startByte= 11025 * 4 * timeInSeconds

  網址如下:http://www.nerdclub.co.uk/lipsync_demo.htm

  但任務還沒完成,例如我們仍需要從外部文件加載線索點(并非將其嵌入代碼中)。但無論怎樣我們已經大體上闡明了設計思想。一旦從外部文件完成線索點和實際mp3音頻的加載,我們就有足夠的理由說,我們這款屬于用戶可編輯類型的足球游戲有望實現(xiàn)!


上一頁 1 2 3 下一頁

評論


相關推薦

技術專區(qū)

關閉