DuckingCaptureSample
此範例應用程式示範開啟和關閉通訊數據流,並導致應用程式可以實作數據流衰減的躲避事件。 此應用程式會實作聊天用戶端,該用戶端會使用核心音訊 API 從通訊裝置讀取音訊數據,並在輸出裝置上播放。
本主題包含下列各節。
此範例示範下列功能。
- 多媒體裝置列舉和選取的MMDevice API 。
- WASAPI 用於存取通訊擷取和轉譯裝置、串流管理作業,以及處理躲避事件。
- 用來存取通訊裝置和擷取音訊輸入的WAVE API 。
Products | 版本 |
---|---|
Windows SDK | Windows 7 |
Visual Studio 2008 |
此範例可在下列位置取得。
Location | 路徑/URL |
---|---|
Windows SDK | \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\DuckingCaptureSample\... |
若要建置 DuckingCaptureSample 範例,請使用下列步驟:
- 在 Visual Studio 2008 中開啟DuckingCaptureSample.sln。
- 從視窗中,選取 [ 偵錯 ] 或 [發行 方案組態],從功能表欄選取 [建 置] 功能表,然後選取 [ 建 置] 選項。 如果您未從 SDK 的 CMD 殼層開啟 Visual Studio,Visual Studio 將無法存取 SDK 建置環境。 在此情況下,除非您明確設定項目檔 DuckingCaptureSample.vcproj 中使用的環境變數 MSSdk,否則不會建置此範例。
如果您成功建置應用程式,就會產生可執行檔DuckingCaptureSample.exe。 若要執行它,請從 [偵錯] 選單選取 [開始偵錯] 或 [啟動但不偵錯] ,或在命令視窗中輸入 DuckingCaptureSample
。
DuckingCaptureSample 為使用者提供兩個實作,從預設控制台裝置擷取音訊:WASAPI 和 Wave API。 若要啟動擷取工作階段,請選取模式,然後按兩下 應用程式的使用者介面上的 [啟動 ]。 若要結束會話,請按兩下 [ 停止]。 根據使用者指定的裝置(輸入或輸出),應用程式會使用MMDevice API來取得預設轉譯或擷取通訊裝置的參考。 使用者啟動聊天會話之後,應用程式會執行下列工作:
- 以事件驅動模式建立和初始化音訊用戶端。
- 將用戶端與事件句柄產生關聯,指出範例已準備好進行擷取或轉譯。
- 設定傳輸的擷取客戶端和轉譯用戶端。
- 建立聊天對話並啟動音訊引擎。
針對擷取音訊數據,使用每個處理階段,範例會使用擷取用戶端來取得緩衝區中可用的擷取數據總數、從預設輸入設備讀取數據,以及釋放封包,並讓緩衝區可供讀取下一組擷取的數據。
為了轉譯,應用程式會決定排入佇列以在擷取端點緩衝區中播放的數據量。 它會據此寫入緩衝區,並釋放緩衝區,以準備下一個處理階段,直到寫入所有數據為止。 若要轉譯,系統會預先註冊無訊息畫面格,以防止音訊引擎在啟動時發生問題。 DuckingCaptureSample 也會示範如何隱藏音量混音器中的轉譯數據流。
如需數據流衰減功能的詳細資訊,請參閱 使用通訊裝置。