CaptureSharedEventDriven
此範例應用程式會使用核心音訊 API,從使用者指定的輸入裝置擷取音訊數據,並將它寫入目前目錄中唯一命名的.wav檔案。 此範例示範事件驅動緩衝處理。
本主題包含下列各節。
描述
此範例示範下列功能。
- 多媒體裝置列舉和選取的MMDevice API 。
- 適用於串流管理作業的 WASAPI ,例如啟動和停止數據流,以及串流切換。
需求
Products | 版本 |
---|---|
Windows SDK | Windows 7 |
Visual Studio | 2008 |
下載範例
此範例可在下列位置取得。
Location | 路徑/URL |
---|---|
Windows SDK | \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedEventDriven\... |
建置範例
若要建置 CaptureSharedEventDriven 範例,請使用下列步驟:
- 開啟 Windows SDK 的 CMD 殼層,並變更為 CaptureSharedEventDriven 範例目錄。
- 在 CaptureSharedEventDriven 目錄中執行 命令
start WASAPICaptureSharedEventDriven.sln
,以在 Visual Studio 視窗中開啟 WASAPICaptureSharedEventDriven 專案。 - 從視窗中,選取 [ 偵錯 ] 或 [發行 方案組態],從功能表欄選取 [建 置] 功能表,然後選取 [ 建 置] 選項。 如果您未從 SDK 的 CMD 殼層開啟 Visual Studio,Visual Studio 將無法存取 SDK 建置環境。 在此情況下,除非您明確設定項目檔 WASAPICaptureSharedEventDriven.vcproj 中使用的環境變數 MSSdk,否則不會建置此範例。
執行範例
如果您成功建置示範應用程式,則會產生可執行檔WASAPICaptureSharedEventDriven.exe。 若要執行它,請在命令視窗中輸入 WASAPICaptureSharedEventDriven
,後面接著必要或選擇性自變數。 下列範例示範如何在預設多媒體裝置上指定擷取持續時間來執行範例。
WASAPICaptureSharedEventDriven.exe -d 20 -multimedia
下表顯示自變數。
Argument | 描述 |
---|---|
-? | 顯示說明。 |
-h | 顯示說明。 |
-l | 以毫秒為單位的音訊擷取延遲。 |
-D | 以秒為單位的音訊擷取持續時間。 |
-m | 停用 MMCSS 的使用。 |
-安慰 | 使用預設主控台裝置。 |
-通信 | 使用預設通訊裝置。 |
-多媒體 | 使用預設多媒體裝置。 |
-端點 | 使用參數值中指定的端點標識碼。 |
如果應用程式在沒有自變數的情況下執行,它會列舉可用的裝置,並提示用戶選取擷取會話的裝置。 默認主控台、通訊和多媒體裝置會列出,後面接著裝置和端點標識碼。 如果未指定持續時間,則會擷取來自指定裝置的音訊串流 10 秒。 應用程式會將擷取的數據寫入唯一命名.wav檔案。
CaptureSharedEventDriven 示範事件驅動緩衝處理。 針對此範例具現化的音訊用戶端會設定為以共用模式執行,而用戶端處理音訊緩衝區是由設定IAudioClient::Initialize 呼叫中的 AUDCLNT_STREAMFLAGS_EVENTCALLBACK 旗標所驅動。 此範例示範用戶端如何藉由呼叫 IAudioClient::SetEventHandle 方法,為系統提供事件句柄。 擷取會話開始並啟動數據流之後,音訊引擎會發出訊號,以在每次緩衝區準備好讓客戶端處理時通知用戶端。 音訊數據也可以在定時器驅動循環中處理。 此模式會在 CaptureSharedTimerDriven 範例中降級。
相關主題