How to List DirectShow Audio Devices Using FFmpeg

This guide explains how to identify and list all available DirectShow audio capture devices on Windows using FFmpeg. DirectShow is the standard multimedia framework used by FFmpeg on Windows to interface with hardware such as microphones, line-in connections, and virtual audio cables. By running a simple command-line query, you can retrieve the exact device names required for recording or streaming audio.

The Command to List Devices

To query your system for connected audio (and video) devices, open the Windows Command Prompt or PowerShell and execute the following command:

ffmpeg -list_devices true -f dshow -i dummy

Understanding the Parameters

  • -list_devices true: Instructs the DirectShow demuxer to enumerate all available input devices and print them to the console instead of capturing data.
  • -f dshow: Specifies DirectShow as the input format.
  • -i dummy: DirectShow requires an input target to initialize, but since the goal is only to list devices, a placeholder name like dummy is used.

Reading the Output

FFmpeg will return an error code (which is normal for device listing commands) alongside standard console output. Look for the section labeled DirectShow audio devices:

[dshow @ 000001bc3b8e7840] DirectShow video devices (some may be both video and audio devices)
[dshow @ 000001bc3b8e7840]  "Integrated Camera"
[dshow @ 000001bc3b8e7840] DirectShow audio devices
[dshow @ 000001bc3b8e7840]  "Microphone Array (Realtek(R) Audio)"
[dshow @ 000001bc3b8e7840]     Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{..."
[dshow @ 000001bc3b8e7840]  "Stereo Mix (Realtek(R) Audio)"

The names enclosed in quotation marks beneath the DirectShow audio devices heading represent the available hardware and virtual audio inputs on your system.

Using the Device Name in FFmpeg

Once you have identified your device, use the exact name inside quotes following the audio= prefix to capture or stream audio:

ffmpeg -f dshow -i audio="Microphone Array (Realtek(R) Audio)" output.wav

If the device name contains non-standard characters or changes between reboots, you can use the listed Alternative name instead:

ffmpeg -f dshow -i audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{...}" output.wav