navigator.mediaDevices.getUserMedia(constraints).then(success).catch(error);
getUserMedia的適配問題暫且不提,只關心如何更換前後置攝像頭問題。
其實官方已經給出了一個最簡單的方法,只需要配置facingMode參數即可,user爲前置,environment爲後置
navigator.mediaDevices.getUserMedia({video:{facingMode:'user/environment'}})
當然事情往往不會隨着心願發展,雖然該方法確實可以實現攝像頭的選擇,但是在兼容性方面確定差了很多,例如該參數即使在安卓上,Chrome for Android也得59版本以上,更別提IOS上的各種問題了。
當然如果系統不能選擇,我們是否可以自主選擇呢,當然可以,雖然也有限制
navigator.mediaDevices.enumerateDevices().then(gotDevices);
我們可以通過enumerateDevices來獲取攝像頭和麥克風,其中kind爲videoinput的,就是攝像頭的設備了,一般應該會有兩個,前置和後置,然後我們可以通過deviceId來設置使用的攝像頭
navigator.mediaDevices.getUserMedia({video:{deviceId:'實際id'}})
但實際情況下,你並不清楚的知道那個設備時前置,那個設備是後置,通常情況下,應該是最後一個deviceId是後置。