Currently the only way to list devices is through the ffmpeg binary (as shown in one of your examples), which depends on ffmpeg being installed. libavdevice bundled with pyav already exposes avdevice_list_devices so it should be possible to add the relevant bindings to make this feature available.
@WyattBlue