Bagikan melalui


CaptureSharedEventDriven

Aplikasi sampel ini menggunakan API Audio Inti untuk mengambil data audio dari perangkat input yang ditentukan oleh pengguna dan menulisnya ke file .wav bernama unik di direktori saat ini. Sampel ini menunjukkan buffering berbasis peristiwa.

Topik ini berisi bagian berikut.

Deskripsi

Sampel ini menunjukkan fitur berikut.

  • MMDevice API untuk enumerasi dan pemilihan perangkat multimedia.
  • WASAPI untuk operasi manajemen aliran seperti memulai dan menghentikan streaming, dan pengalihan streaming.

Persyaratan

Hasil Versi
Windows SDK Windows 7
Visual Studio 2008

 

Mengunduh Sampel

Sampel ini tersedia di lokasi berikut.

Tempat Jalur/URL
Windows SDK \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\CaptureSharedEventDriven\...

 

Membangun Sampel

Untuk membuat sampel CaptureSharedEventDriven, gunakan langkah-langkah berikut:

  1. Buka shell CMD untuk Windows SDK dan ubah ke direktori sampel CaptureSharedEventDriven.
  2. Jalankan perintah start WASAPICaptureSharedEventDriven.sln di direktori CaptureSharedEventDriven untuk membuka proyek WASAPICaptureSharedEventDriven di jendela Visual Studio.
  3. Dari dalam jendela, pilih konfigurasi solusi Debug atau Rilis, pilih menu Build dari bilah menu, dan pilih opsi Build. Jika Anda tidak membuka Visual Studio dari shell CMD untuk SDK, Visual Studio tidak akan memiliki akses ke lingkungan build SDK. Dalam hal ini, sampel tidak akan dibuat kecuali Anda secara eksplisit mengatur variabel lingkungan MSSdk, yang digunakan dalam file proyek, WASAPICaptureSharedEventDriven.vcproj.

Menjalankan Sampel

Jika Anda berhasil membangun aplikasi demo, file yang dapat dieksekusi, WASAPICaptureSharedEventDriven.exe, dihasilkan. Untuk menjalankannya, ketik WASAPICaptureSharedEventDriven di jendela perintah diikuti oleh argumen yang diperlukan atau opsional. Contoh berikut menunjukkan cara menjalankan sampel dengan menentukan durasi pengambilan pada perangkat multimedia default.

WASAPICaptureSharedEventDriven.exe -d 20 -multimedia

Tabel berikut ini memperlihatkan argumen.

Argumen Deskripsi
-? Menampilkan bantuan.
-h Menampilkan bantuan.
-L Latensi pengambilan audio dalam milidetik.
-d Durasi pengambilan audio dalam hitung detik.
-m Menonaktifkan penggunaan MMCSS.
-Konsol Gunakan perangkat konsol default.
-Komunikasi Gunakan perangkat komunikasi default.
-Multimedia Gunakan perangkat multimedia default.
-Endpoint Gunakan pengidentifikasi titik akhir yang ditentukan dalam nilai pengalihan.

 

Jika aplikasi dijalankan tanpa argumen, aplikasi menghitung perangkat yang tersedia dan meminta pengguna untuk memilih perangkat untuk sesi pengambilan. Konsol default, komunikasi, dan perangkat multimedia dicantumkan diikuti oleh perangkat dan pengidentifikasi titik akhir. Jika tidak ada durasi yang ditentukan, aliran audio dari perangkat yang ditentukan diambil selama 10 detik. Aplikasi menulis data yang diambil ke file .wav bernama unik.

CaptureSharedEventDriven menunjukkan buffering berbasis peristiwa. Klien audio yang dibuat untuk sampel ini dikonfigurasi untuk berjalan dalam mode bersama dan pemrosesan buffer audio klien dibuat berdasarkan peristiwa dengan mengatur bendera AUDCLNT_STREAMFLAGS_EVENTCALLBACK dalam panggilan ke IAudioClient::Inisialisasi. Sampel menunjukkan bagaimana klien harus memberikan handel peristiwa ke sistem dengan memanggil metode IAudioClient::SetEventHandle. Setelah sesi pengambilan dimulai dan aliran dimulai, mesin audio memberi sinyal handel peristiwa yang disediakan untuk memberi tahu klien setiap kali buffer siap untuk diproses klien. Data audio juga dapat diproses dalam perulangan berbasis timer. Mode ini ditunjukkan dalam sampel CaptureSharedTimerDriven .

Sampel SDK yang Menggunakan API Audio Inti