學做網頁Applet錄音機

2021-04-13 03:27:34 字數 1511 閱讀 4502

多**基本概念及常識

開發多**音訊軟體,必須了解一些多**基本概念,諸如取樣、量化、量化位、取樣頻率、單雙聲道、音訊編譯碼、音訊壓縮格式等概念。取樣是把時間上連續的模擬訊號變成時間上離散的、有限個樣值的訊號。量化是在幅度上把連續值的模擬訊號變為離散值的數碼訊號。在時間軸上已變為離散的樣值脈衝,在幅度軸上仍會在動態範圍內有連續值,可能出現任意幅值,即在幅度軸上仍是模擬訊號的性質,因此必須用有限個電平等級來代表實際量值。量化位是每個取樣點能夠表示的資料範圍,經常採用的有8、12和16位。取樣頻率是將模擬聲音波形轉換為數字時,每秒鐘所抽取聲波幅度樣本的次數,取樣頻率的計算單位是hz(赫茲)。根據取樣理論,為了保證聲音不失真,取樣頻率應為聲音頻率的兩倍左右。記錄聲音時,如果每次生成乙個聲波資料,稱為單聲道;每次生成二個聲波資料,成為立體聲(雙聲道)。量化位和取樣頻率越高,音質就越好。

網頁錄音機的製作過程

了解了以上常識,下面來看看錄音機的製作過程。

首先要碰到的是音訊採集。音訊採集有很多種,jdk 1.3中構建targetdataline類例項來實現聲音資料採集。在此例中,我採用visual j++的j/direct呼叫windows api函式來實現聲音的採集。

聲音俘獲主要由audiocapture、audiodataevent、audiodatalistener三個類組成。我們依次按照0.1秒時間取樣資料塊的大小(即1600位元組)作為所送出到系統的錄音資料緩衝區大小,這樣也就相當於每隔0.1秒音效卡提交給我們一次聲音資料。另外,使用windows api方式聲音採集有乙個好處,錄音過程不需要建立單獨的執行緒。這是因為有**函式的巨大作用,這樣節省了系統資源,提高了程式的穩定性。

第二步,資料的編碼壓縮儲存。由聲卡採集的資料是一連串16位脈衝編碼調製(pcm格式)的資料,資料量很大,如果不採取壓縮處理,不利於檔案的儲存和傳輸。所以要進行資料的壓縮編碼,這就是我們會碰到的聲音編碼資料格式。壓縮編碼方法有很多種,有g**、iam4、au格式編碼等,這些壓縮演算法比較簡單,可以在很多**上獲得壓縮和解壓縮的源**。筆者對這幾種壓縮格式進行了測試,其主要引數及品質對比見上表。

壓縮格式主要引數及品質對比

壓縮格式 g** ima4 au

壓縮比 10:1 4:1 2:1

檔案大小 很小 小 中

聲音質量 一般 好 好

編譯碼速度 慢 快 很快

資料量(byte/s) 165 400 800

一般來說,人說話時並不是非常連續的,哪怕是你有意發連續的聲音,其實有很多時間段是處在靜音狀態(沒有聲音或聲音很小,量化資料值很小),只要記錄它的乙個狀態就可以了。所以聲音資料區的資料格式就是(資料頭+資料體)的方式。對於靜音資料,資料頭為0,資料體為空。

//處理錄音資料到達事件

public void onaudiodataarrived(audiodataevent evt)

...

} 第三步,聲音採集編碼儲存結束後,就可以回放我們錄製的聲音。

最後,將上述各個模組拼接起來,並把gui做好就可以使用了。如果在gui上加入聲音顯示效果,你的錄音機就更酷了。

總結

網頁錄音,html5錄音

第乙個是在第二個的基礎上擴充套件出來的,使用flash模組實現錄音功能 第乙個已經實現了錄音並上傳到伺服器的功能,但是有個問題是錄音中雜音太大,鑑於自身技術水平不支援優化原始碼,所以基本是被嫌棄了 第三個是使用 html5 的 audio api 實現的,如果不考慮 ie 的話,是非常推薦的 以上是...

python實現網頁錄音效果

伺服器 tornado 語言 python,js,html 效果 將錄好的音放在指定位置 實現邏輯 部分實現 web 注意,class中最後一項 record start或record stop,後面js檔案中的方法呼叫和這個對應 js 其中用到aja需要用到jquery 3.4.1.min.js ...

用XAML做網頁!! 開篇

這幾日一直沒發表新文章,一來是因為事比較多,二來就是我在研究使用 xaml 挑戰傳統 html 我對這次挑戰的結果打7分 xaml 在頁面布局 圖形 動畫及可控性方面的表現堪稱完美,我甚至根本想不出來有什麼能與之平分秋色 相容性方面,xaml 通吃所有 windows 平台的各種瀏覽器,它實際上都是...