Chrome 47 has support for mediaDevices.enumerateDevices():
Modern browsers make it possible to select input and output devices including cameras, microphones and speakers.
For example: – On a phone, select the front or rear-facing camera. – On a laptop, choose the internal speakers or a speaker connected by Bluetooth. – For a video chat, choose internal or external microphone or camera.
This has been available in Firefox since version 39 and is part of the W3C “Media Capture and Streams” draft.
I can see this getting lots of play in the “native vs. web” arguments.