souvenir/src/services/camera.js
2020-10-11 20:11:07 +02:00

29 lines
906 B
JavaScript

export async function getCamera (shouldFaceUser) {
const facingModeList = shouldFaceUser
? ['user', 'environment']
: ['environment', 'user']
const [preferredFacingMode] = facingModeList
const constraintsList = [
...facingModeList.map(facingMode => ({ exact: facingMode })),
preferredFacingMode
].map(facingModeConstraint => ({ video: { facingMode: facingModeConstraint } }))
for (const constraints of constraintsList) {
try {
console.log(constraints)
return {
mediaStream: await navigator.mediaDevices.getUserMedia(constraints),
facingMode: constraints.video.facingMode.exact ? constraints.video.facingMode.exact : 'unknow'
}
} catch (error) {
console.log(error)
if (error.name !== 'OverconstrainedError' && error.constraint === 'facingMode') {
throw error
}
}
}
throw new Error('Overconstrained')
}