Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
Enable rear camera with HTML5
To enable the rear camera in HTML5, you need to access the device's camera sources and specify which camera to use. This is particularly useful on mobile devices that have both front and rear cameras.
Getting Available Camera Sources
First, use the MediaDevices.enumerateDevices() method to get all available media devices:
<!DOCTYPE html>
<html>
<head>
<title>Rear Camera Access</title>
</head>
<body>
<video id="video" width="320" height="240" autoplay></video>
<button onclick="startRearCamera()">Start Rear Camera</button>
<script>
async function getRearCamera() {
try {
const devices = await navigator.mediaDevices.enumerateDevices();
const videoDevices = devices.filter(device => device.kind === 'videoinput');
// Find rear camera (usually has 'back' or 'rear' in label)
const rearCamera = videoDevices.find(device =>
device.label.toLowerCase().includes('back') ||
device.label.toLowerCase().includes('rear')
);
return rearCamera ? rearCamera.deviceId : videoDevices[0]?.deviceId;
} catch (error) {
console.error('Error getting devices:', error);
return null;
}
}
async function startRearCamera() {
const rearCameraId = await getRearCamera();
if (rearCameraId) {
const constraints = {
video: {
deviceId: { exact: rearCameraId },
width: { ideal: 1280 },
height: { ideal: 720 }
}
};
try {
const stream = await navigator.mediaDevices.getUserMedia(constraints);
document.getElementById('video').srcObject = stream;
} catch (error) {
console.error('Error accessing rear camera:', error);
}
}
}
</script>
</body>
</html>
Alternative Method Using facingMode
On mobile devices, you can use the facingMode constraint to specify the rear camera:
<!DOCTYPE html>
<html>
<head>
<title>Rear Camera with facingMode</title>
</head>
<body>
<video id="video" width="320" height="240" autoplay></video>
<button onclick="startCamera()">Start Rear Camera</button>
<script>
async function startCamera() {
const constraints = {
video: {
facingMode: { exact: "environment" } // "environment" = rear camera
}
};
try {
const stream = await navigator.mediaDevices.getUserMedia(constraints);
document.getElementById('video').srcObject = stream;
} catch (error) {
console.error('Rear camera not available, trying default:', error);
// Fallback to any available camera
try {
const fallbackStream = await navigator.mediaDevices.getUserMedia({ video: true });
document.getElementById('video').srcObject = fallbackStream;
} catch (fallbackError) {
console.error('No camera available:', fallbackError);
}
}
}
</script>
</body>
</html>
Camera Facing Mode Options
| facingMode Value | Description | Typical Use |
|---|---|---|
"user" |
Front-facing camera | Selfies, video calls |
"environment" |
Rear-facing camera | Photos of surroundings |
{ exact: "environment" } |
Force rear camera only | When rear camera is required |
Error Handling
Always include proper error handling when accessing camera devices:
<script>
async function handleCameraAccess() {
try {
// Request permission first
const stream = await navigator.mediaDevices.getUserMedia({ video: true });
// Stop initial stream
stream.getTracks().forEach(track => track.stop());
// Now get rear camera
const rearConstraints = {
video: { facingMode: { exact: "environment" } }
};
const rearStream = await navigator.mediaDevices.getUserMedia(rearConstraints);
document.getElementById('video').srcObject = rearStream;
} catch (error) {
if (error.name === 'NotAllowedError') {
alert('Camera permission denied');
} else if (error.name === 'NotFoundError') {
alert('No rear camera found');
} else {
console.error('Camera error:', error);
}
}
}
</script>
Conclusion
Use facingMode: "environment" for mobile devices or enumerate devices to select specific cameras. Always include error handling for better user experience when accessing camera hardware.
Advertisements
