AudRecordLib is a audio recording and capture library for Windows Vista and up. It takes audio samples from either an output device, like speakers, or an input device such as a microphone. These samples are passed them to the Windows Media runtime to convert them into either WMA files, network streams, or for applications to do as they wish with the data.

Also in the package is AudRecordCLI, a C++/CLI managed wrapper around everything exposed by the native dll and certain parts of the WMSDK that can be used with it.

This documentation set contains descriptions of every part of the source code for AudRecordLib and AudRecordCLI. To create documentation containing only client facing, public portions of the documentation, remove DEV from the ENABLED_SECTIONS part of the doxyfile


The simplest usage is to call GetWMACodecConfigs() for a list of installed Windows Media codecs and their CBR and VBR configurations. Use CreateAudRecordInterface() with the desired configuration to get an IAudRecord interface pointer and set a target file with IAudRecord::AddFileTarget(). Set the source of the audio by getting a list of endpoints from GetAudioEndpoints() and calling IAudRecord::Record() with the desired audio device.


You can download a package containing all the code and binaries from here


All the code is licensed under the MIT license. A copy of this is included in the download.


AudRecordLib comes with three example applications. AudRecordTest is a C++ application which uses the native dll directly, while AudRecordTestCLI is a C# application which consumes the C++/CLI wrapper. The last, AudRecordSimple is a console application which shows the bare minimum required to record audio output to a file.


To build AudRecordLib you need a Windows SDK capable of targeting Windows Vista, a compiler capable of understanding Visual Studio's SSE intrinsics and a version of Boost including boost::function and boost::bind (which is practically all of them)

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Defines