1. 程式人生 > >Audio知識總結(Android)

Audio知識總結(Android)

  • 人的耳朵能夠聽到的範圍,是20Hz到20000Hz.就是指物體每秒中振動20-20000次。
  • PCM16LE雙聲道資料中左聲道和右聲道的取樣值是間隔儲存的。每個取樣值佔用2Byte空間。

  • 取樣率是指:聲音訊號在“模→數”轉換過程中單位時間內取樣的次數。取樣值是指每一次取樣週期內聲音模擬訊號的積分值。

  • 對於單聲道聲音檔案,取樣資料為八位的短整數(short int 00H-FFH),而對於雙聲道立體聲聲音檔案,每次取樣資料為一個16位的整數(int),高八位(左聲道)和低八位(右聲道)分別代表兩個聲道。

  • 音訊中的大小端:

  • 取樣精度(Bit Depth) 比如底下圖中的16bits,8位代表2的8次方–256,16 位則代表2的16次方–64K。簡單來理解就是每次取樣時候,某個點的值的取值範圍。就好像鋼琴上的半音比我的破葫蘆絲上的聲音精度要好一個道理。顯示卡上說的位寬也是一樣的,每一位能表示的顏色範圍。

  • 音訊混音的原理: 量化的語音訊號的疊加等價於空氣中聲波的疊加。

  • 音訊音量的調節,雷大牛的部落格裡直接除以2,音量衰減一半。

  • 時域取樣定理,H.奈奎斯特。

  • 一個frame就是1個取樣點的位元組數*聲道。為啥搞個frame出來?因為對於多聲道的話,用1個取樣點的位元組數表示不全,因為播放的時候肯定是多個聲道的資料都要播出來才行。所以為了方便,就說1秒鐘有多少個frame,這樣就能拋開聲道數,把意思表示全了。

  • 取樣率,比如192KHZ 就是說1s在1s的模擬訊號上(比如正弦波)取192K個點。每個點即每個取樣,就是一幀(frame)。

  • 如圖
    這裡寫圖片描述
    則每秒的資料量為192000×16×2(雙聲道) = 6144000 (bit/s)= 6144K Kbps(即圖中的Bit rate,中文即位元率)
    換算成位元組為6144000 / 8 = 768000 (byte/s)
    而檔案大小為:210.0 MB (210,036,298 bytes)
    那麼聲音長度 = 210,036,298/768000 ≈ 273.48s 約等於 4m 33.48s
    和圖中檔案資訊對應一致(這個地方計算沒去除wav 42位元組的檔案頭大小,媽蛋,也有說44的)。

附張圖,馬上就理解了
這裡寫圖片描述

13.夏農取樣定理,又稱奈奎斯特取樣定理,是資訊理論,特別是通訊與訊號處理學科中的一個重要基本結論。1924年奈奎斯特(Nyquist)就推匯出在理想低通訊道的最高大碼元傳輸速率的公式:理想低通訊道的最高大碼元傳輸速率=2W*log2N (其中W是理想低通訊道的頻寬,N是電平強度).
為了不失真地恢復模擬訊號,取樣頻率應該不小於模擬訊號頻譜中最高頻率的2倍。  f s≥2f max.

14.立體聲:聲音有方位感,空間感。

15.Gains.cpp裡頭計算音量的那個應該根據的是韋伯定律(林學森的書裡說的)。

16.

struct audio_patch {
  audio_patch_handle_t id
; /* patch unique ID */ unsigned int num_sources; /* number of sources in following array */ struct audio_port_config sources[AUDIO_PATCH_PORTS_MAX]; unsigned int num_sinks; /* number of sinks in following array */ struct audio_port_config sinks[AUDIO_PATCH_PORTS_MAX]; };

source和sink相對,一個出一個入。
整個audio_patch結構體,看上去包含多個source和多個sink.但是尷尬的是在AudioPolicyManager中的createAudioPatch中:

// only one source per audio patch supported for now
  if (patch->num_sources > 1) {
  return INVALID_OPERATION;
  }

目前,7.0為止,還只支援一個source。但是它沒說sink哦!也就是說,不支援多對多,但是支援一對一和一對多。

相關推薦

Audio知識總結(Android)

人的耳朵能夠聽到的範圍,是20Hz到20000Hz.就是指物體每秒中振動20-20000次。 PCM16LE雙聲道資料中左聲道和右聲道的取樣值是間隔儲存的。每個取樣值佔用2Byte空間。 取樣率是指:聲音訊號在“模→數”轉換過程中單位時間內取樣的次數。取樣值是

Android知識總結

Android部落格的牛人 自定義View基礎 - 最易懂的自定義View原理系列(1) 自定義View Measure過程 - 最易懂的自定義View原理系列(2) 自定義View Layout過程 - 最易懂的自定義View原理系列(3) 自定義View Draw過程- 最易懂的

每日知識總結計劃(java、android、react native、web框架、js、css、html、ajax)首頁

作為一名資訊系的學生,現在學的太多,忘得也快,但是實在不忍心辛苦理解的知識就這樣慢慢被自己忘記。 所有這篇帖子作為今天起(2018.10.16  17:32),記錄每天得知識總結首頁。 下面得帖子連結分為一個月為一個單位做記錄,每天的記錄就在當月的一個月的帖子上更新。 20

Android 動畫知識總結

動畫 概述 Android中的動畫可用分為 三 類: View 動畫、幀動畫、屬性動畫。 View動畫 包括平移、縮放、旋轉、透明度。支援自定義View滑動。 幀動畫 通過播放一系列影象從而產生動畫的效果。如果圖片過大,很容易發生 oom 。 屬性動畫 通過改變Vi

Android自定義View基礎知識總結

自定義View關鍵點 1 自定義繪製的方式是重寫繪製方法,其中最常見的是onDraw()方法。 2 繪製的關鍵點是Canvas的使用 (1)Canvas的繪製類方法:drawXXX(xxx),關鍵引數是Paint。 (2)Canvas的輔助類方法:範圍裁切和幾何變換。

Android安全/安全技術--23--其他Android安全知識總結

6-1、基礎知識點 生成的AVD模擬器在:C:\Users\Innyue.android\avd目錄下 wireshark截獲資料包並對資料包解碼時,會產生大量系統開銷,所以wireshark截獲幾百兆或更多資料包時,經常會停止執行 MemSpcetor工具中提

Android基礎知識總結

一:多執行緒 1.1:多執行緒的安全問題        多個執行緒共享同一資料,當某一執行緒執行多條語句時,其他執行緒也執行進來,導致資料在某一語句上被多次修改,執行到下一語句時,導致錯誤資料的產生。 1.2:執行緒池的理解        1.2.1:降低資源消耗。通過重

Android入門基礎知識總結之常用控制元件篇

臨近考試,做一下簡單的總結,鞏固一下; 不能面面俱到,舉的都是一些常用的基礎例子; 上一篇:Android入門基礎知識總結之Layout佈局篇 二、常用控制元件篇 本文介紹了TextView,EditText,Button,RadioButton,CheckBo

Android入門基礎知識總結之Layout佈局篇

臨近考試,做一下簡單的總結,鞏固一下; 不能面面俱到,舉的都是一些常用的基礎例子; 下一篇:Android入門基礎知識總結之常用控制元件篇 一、Layout佈局篇 通用屬性還請自行體會,這裡只說了部分特有或常用屬性; 1) LinearLayout(線性佈局

2018年Android知識總結--適合中高階(上)

1、java中==和equals和hashCode的區別  基本資料型別的==比較的值相等.  類的==比較的記憶體的地址,即是否是同一個物件,在不覆蓋equals的情況下,同比較記憶體地址,原實現也為 == ,如String等重寫了equals方法. hashCode也是O

Android面試基礎知識總結(一)

狀態:未完成 Android面試基礎知識總結。 Activity 生命週期 啟動Activity:onCreate->onStart->onResume鎖屏或被其它Activity覆蓋:onPause->onStop解鎖或由被覆蓋狀態再回到前臺:onRes

美團秋招 Android三輪技術面+HR面(收到offer) 知識總結(2018年9月)

四大元件有哪幾個 Activity生命週期 Activity的onCreate方法能執行復雜耗時操作嗎 Activity的onCreate執行復雜耗時操作除了handler和asynctask還有其他方法嗎 Activity中啟動另一Activity生命週期是怎樣的,分別討論新Activity沒建立和建立過

Android開發中遇到的問題及小知識總結【一】

PhotoView+ViewPager 發生java.lang.IllegalArgumentException: pointerIndex out of range異常 **描述:**當PhotoView 和 ViewPager 組合時 ,用雙指進行放大時 是

Android開發常用知識總結

1、在Android應用程式中,選單中通過點選選單呼叫手機中另一個已經安裝的軟體,如視訊監控程式 Intent intent = new Intent(); ComponentName comp =

android動畫知識總結

Android中的動畫可以分為三種:View動畫、幀動畫、屬性動畫 View動畫通過對場景裡的物件不斷做影象變換(平移、縮放、旋轉、透明度)從而產生動畫效果,是一種漸進式動畫,並且View動畫支援自定義。 幀動畫通過順序播放一系列影象從而產生動畫效果,可以簡

android平臺camera基礎知識總結

1、camera型別     android平臺主要有UVC camera和非UVC camera(並口/MIPI介面) 2、ISP(Image Signal Processor)影視處理 無論數碼相機、攝像機或者攝像手機,其影像資料從前端感應後,皆須經過ASP(Anal

Android基礎知識總結(一)

1、記憶體溢位和記憶體洩露有什麼區別 記憶體溢位:應用的記憶體已經已經達到系統設定的最大值,進而導致崩潰 記憶體洩露:應用使用資源之後沒有及時釋放,導致應用記憶體中持有了不需要的資源,通常都是由於記憶體洩露導致記憶體溢位。 2、wait()和sleep()

Android知識總結:ListView 出現IndexOutOfBoundsException異常

背景 今天在整理友盟統計bug時,發現有幾個bug集中在首頁ListView的Adapter上,具體翻來,大概是說ListView中資料出現越界。具體錯誤日誌大概如下: java.lang.IndexOutOfBoundsException: Invali

h5調用底層接口知識總結

什麽 掃一掃 mas 基本 相關 blog 技術 ref 擴展 本文標簽: h5調用底層接口 h5 h5調用本地攝像頭 前端時間使用HTML5做了一個WEB端APP,其中用到了H5頁面調用手機攝像頭的功能,當時也是花了不少時間去研究。最終是采用了HTML5pl

前端基礎知識總結

pla 部分 一個 知識 法則 總結 情況 元素 保存 一、html中alt和title的區別 1.alt是圖片的屬性值,當圖片無法加載的時候,會用alt屬性的值來替換圖片。 2.而title是圖片的標題,當鼠標移動到圖片上時,會顯示圖片的名稱。 [email