亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

[WebRTC架構分析]本地音頻數據錄制和播放

2024-11-20 09:15:19
15
0

WebRTC 對音頻設備部分封裝比較簡單,結構非常清晰,容易理解。

  • AudioDeviceModule 實現了 WebRTC 的模塊規范。實現類 AudioDeviceModuleImpl 是各個平臺的通用實現。
  • AudioDeviceGeneric 是音頻設備的一個抽象接口類,提供了一組虛函數,對音頻設備的錄制和播放做了一層抽象。
  • AudioDeviceWindowsCore 是 Windows 系統 Audio Core 的封裝。Windows 系統相關 API 調用都封裝在此類中,主要是音頻采集和播放相關 API 的調用。
  • AudioDeviceBuffer 用于保存采集到的音頻數據。AudioDeviceBuffer 的實例是由 AudioDeviceModuleImpl 持有,AudioDeviceWindowsCore 只是引用了一個指針。
  • AudioTransport 是 Audio Device 模塊對外提供數據輸出、輸入的接口。
  • AudioDeviceModule 暴露了 RegisterAudioCallback 函數,用于向AudioDeviceBuffer 注冊接收音頻數據的實例。
  • ADMWrapper 是對 AudioDeviceModule 的一個包裝,是為了使用的方便,對外通過 AudioDeviceDataObserver 來實現數據的輸入、輸出。
  • AudioDeviceDataObserver 類似 AudioTransport 的作用。

音頻設備既有錄音設備也有播放設備。比如,麥克風、耳機、音響等。音頻采集也叫錄音過程,或者是音頻數據捕獲(capture)過程。音頻播放,有時也叫音頻數據渲染(render)過程。采集與播放是兩個相反的過程,所以編程實現邏輯也略有差異,我們分兩部分來分析。

音頻數據采集過程

音頻數據的采集過程,是從音頻設備(比如麥克風)采集聲音,然后將數字化的音頻數據發送給應用程序。

  1. AudioDeviceModule 提供了一個工廠方法用于創建 AudioDeviceModule 實例。
  2. 調用 AudioDeviceModule::Init 方法初始化 AudioDevice,主要是根據不同平臺的類型,創建相應平臺的 AudioDevice。比如,在windows 上是創建 AudioDeviceWindowsCore。
  3. 調用 AudioDeviceModule::RegisterAudioCallback 注冊一個接收或者發送音頻數據的類的實例,此類需要實現 AudioTransport 接口。
  4. 調用 AudioDeviceModule::SetRecordingDevice 方法設置錄音設備,參數是錄音設備的索引。在 Windows 上可以傳入參數。 webrtc::AudioDeviceModule::WindowsDeviceType::kDefaultCommunicationDevice。
  5. 調用 AudioDeviceModule::InitRecording 方法初始化錄音邏輯。
  6. 通過 AudioDeviceModule::StartRecording 啟動錄音。
  7. 通過調用 AudioDeviceModule::StopRecording 方法停止錄音。
  8. 如果停止音頻設備,需要調用 AudioDeviceModule::Terminate 來釋放資源。

通過以上 1-6 步驟就可以采集到音頻的 PCM 數據。

音頻數據回放過程

音頻數據的回放過程是從應用程序獲取數字語音數據,然后送給喇叭或者是耳機播放出來。

  • AudioDeviceModule 提供了一個工廠方法用于創建 AudioDeviceModule 實例。
  • 調用 AudioDeviceModule::Init 方法初始化 AudioDevice,主要是根據不同平臺的類型,創建相應平臺的 AudioDevice。比如,在windows 上是創建 AudioDeviceWindowsCore。
  • 調用 AudioDeviceModule::RegisterAudioCallback 注冊一個接收或者發送音頻數據的類的實例,此類需要實現 AudioTransport 接口。
  • 調用 AudioDeviceModule::SetPlayoutDevice 方法設置播放設備,參數是播放設備的索引。在 Windows 上可以傳入參數。 webrtc::AudioDeviceModule::WindowsDeviceType::kDefaultCommunicationDevice。
  • 調用 AudioDeviceModule::InitPlayout 方法初始化聲音播放邏輯。
  • 通過 AudioDeviceModule::StartPlayout 方法啟動播放。
  • 通過調用 AudioDeviceModule::StopPlayout 方法停止播放。
  • 如果停止音頻設備,需要調用 AudioDeviceModule::Terminate 來釋放資源。
0條評論
0 / 1000
w****6
4文章數
0粉絲數
w****6
4 文章 | 0 粉絲
原創

[WebRTC架構分析]本地音頻數據錄制和播放

2024-11-20 09:15:19
15
0

WebRTC 對音頻設備部分封裝比較簡單,結構非常清晰,容易理解。

  • AudioDeviceModule 實現了 WebRTC 的模塊規范。實現類 AudioDeviceModuleImpl 是各個平臺的通用實現。
  • AudioDeviceGeneric 是音頻設備的一個抽象接口類,提供了一組虛函數,對音頻設備的錄制和播放做了一層抽象。
  • AudioDeviceWindowsCore 是 Windows 系統 Audio Core 的封裝。Windows 系統相關 API 調用都封裝在此類中,主要是音頻采集和播放相關 API 的調用。
  • AudioDeviceBuffer 用于保存采集到的音頻數據。AudioDeviceBuffer 的實例是由 AudioDeviceModuleImpl 持有,AudioDeviceWindowsCore 只是引用了一個指針。
  • AudioTransport 是 Audio Device 模塊對外提供數據輸出、輸入的接口。
  • AudioDeviceModule 暴露了 RegisterAudioCallback 函數,用于向AudioDeviceBuffer 注冊接收音頻數據的實例。
  • ADMWrapper 是對 AudioDeviceModule 的一個包裝,是為了使用的方便,對外通過 AudioDeviceDataObserver 來實現數據的輸入、輸出。
  • AudioDeviceDataObserver 類似 AudioTransport 的作用。

音頻設備既有錄音設備也有播放設備。比如,麥克風、耳機、音響等。音頻采集也叫錄音過程,或者是音頻數據捕獲(capture)過程。音頻播放,有時也叫音頻數據渲染(render)過程。采集與播放是兩個相反的過程,所以編程實現邏輯也略有差異,我們分兩部分來分析。

音頻數據采集過程

音頻數據的采集過程,是從音頻設備(比如麥克風)采集聲音,然后將數字化的音頻數據發送給應用程序。

  1. AudioDeviceModule 提供了一個工廠方法用于創建 AudioDeviceModule 實例。
  2. 調用 AudioDeviceModule::Init 方法初始化 AudioDevice,主要是根據不同平臺的類型,創建相應平臺的 AudioDevice。比如,在windows 上是創建 AudioDeviceWindowsCore。
  3. 調用 AudioDeviceModule::RegisterAudioCallback 注冊一個接收或者發送音頻數據的類的實例,此類需要實現 AudioTransport 接口。
  4. 調用 AudioDeviceModule::SetRecordingDevice 方法設置錄音設備,參數是錄音設備的索引。在 Windows 上可以傳入參數。 webrtc::AudioDeviceModule::WindowsDeviceType::kDefaultCommunicationDevice。
  5. 調用 AudioDeviceModule::InitRecording 方法初始化錄音邏輯。
  6. 通過 AudioDeviceModule::StartRecording 啟動錄音。
  7. 通過調用 AudioDeviceModule::StopRecording 方法停止錄音。
  8. 如果停止音頻設備,需要調用 AudioDeviceModule::Terminate 來釋放資源。

通過以上 1-6 步驟就可以采集到音頻的 PCM 數據。

音頻數據回放過程

音頻數據的回放過程是從應用程序獲取數字語音數據,然后送給喇叭或者是耳機播放出來。

  • AudioDeviceModule 提供了一個工廠方法用于創建 AudioDeviceModule 實例。
  • 調用 AudioDeviceModule::Init 方法初始化 AudioDevice,主要是根據不同平臺的類型,創建相應平臺的 AudioDevice。比如,在windows 上是創建 AudioDeviceWindowsCore。
  • 調用 AudioDeviceModule::RegisterAudioCallback 注冊一個接收或者發送音頻數據的類的實例,此類需要實現 AudioTransport 接口。
  • 調用 AudioDeviceModule::SetPlayoutDevice 方法設置播放設備,參數是播放設備的索引。在 Windows 上可以傳入參數。 webrtc::AudioDeviceModule::WindowsDeviceType::kDefaultCommunicationDevice。
  • 調用 AudioDeviceModule::InitPlayout 方法初始化聲音播放邏輯。
  • 通過 AudioDeviceModule::StartPlayout 方法啟動播放。
  • 通過調用 AudioDeviceModule::StopPlayout 方法停止播放。
  • 如果停止音頻設備,需要調用 AudioDeviceModule::Terminate 來釋放資源。
文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
0
0