Added scanning barcodes with a camera

This commit is contained in:
2026-03-08 16:59:33 +00:00
parent b4f8489834
commit 5a37e5dd5f
404 changed files with 224181 additions and 0 deletions

View File

@@ -0,0 +1,109 @@
# Browser Support {#browser-support}
Quagga2 makes use of many modern Web APIs which are not implemented by all browsers yet. This page details browser compatibility and required APIs.
## Operating Modes {#operating-modes}
Quagga2 operates in two modes:
1. **Analyzing static images** - Process existing image files
2. **Using a camera** - Decode images from a live video stream
The latter requires the MediaDevices API for camera access.
## Browser Compatibility {#browser-compatibility}
You can track the compatibility of the used Web APIs for each mode:
- [Static Images](http://caniuse.com/#feat=canvas,typedarrays,bloburls,blobbuilder)
- [Live Stream](http://caniuse.com/#feat=canvas,typedarrays,bloburls,blobbuilder,stream)
### Static Image Mode {#static-image-mode}
The following APIs must be supported by your browser:
- [Canvas](http://caniuse.com/#feat=canvas)
- [Typed Arrays](http://caniuse.com/#feat=typedarrays)
- [Blob URLs](http://caniuse.com/#feat=bloburls)
- [Blob Builder](http://caniuse.com/#feat=blobbuilder)
### Live Stream Mode {#live-stream-mode}
In addition to the APIs required for static images:
- [MediaDevices API](http://caniuse.com/#feat=stream) - Required for camera access
## Secure Origins Required {#secure-origins}
**Important**: Accessing `getUserMedia` requires a secure origin in most browsers:
- `http://` can **only** be used on `localhost`
- All other hostnames **must** be served via `https://`
This is a browser security requirement. Read more in the [Chrome M47 WebRTC Release Notes](https://groups.google.com/forum/#!topic/discuss-webrtc/sq5CVmY69sc).
## Feature Detection {#feature-detection}
### Detecting getUserMedia Support {#detecting-getusermedia}
Every browser implements the `mediaDevices.getUserMedia` API differently. It's highly recommended to include [webrtc-adapter](https://github.com/webrtc/adapter) in your project for cross-browser compatibility.
**How to test browser capabilities:**
```javascript
if (navigator.mediaDevices && typeof navigator.mediaDevices.getUserMedia === 'function') {
// Safe to use getUserMedia
console.log('Camera access is supported');
} else {
// Camera access not available
console.log('Camera access is NOT supported');
}
```
### Browser Support Table {#browser-support-table}
The above condition evaluates as follows:
| Browser | Result | Notes |
|---------------|---------|-------|
| Chrome | `true` | Full support |
| Firefox | `true` | Full support |
| Edge | `true` | Full support |
| Safari iOS | `true` | Requires HTTPS |
| IE 11 | `false` | Not supported |
| Safari Desktop| `true` | macOS 11+ |
## Known Issues {#known-issues}
### iOS Torch/Flash {#ios-torch-flash}
Torch (flash) control via `CameraAccess.enableTorch()` and `CameraAccess.disableTorch()` does **not work** on iOS devices running version 16.4 and earlier. Support on later versions may vary.
### Safari Limitations {#safari-limitations}
- Older Safari versions may require user interaction before camera access
- Some older iOS versions have limited WebRTC support
### Internet Explorer {#internet-explorer}
Internet Explorer 11 and below do not support the MediaDevices API and cannot use live camera features. Static image decoding may work with polyfills, but this is not officially supported.
## Recommendations {#recommendations}
For best compatibility:
1. **Use HTTPS** - Required for camera access on all non-localhost domains
2. **Include webrtc-adapter** - Normalizes browser differences
3. **Feature detect** - Check for API support before attempting to use camera
4. **Provide fallbacks** - Offer file upload as alternative to camera access
5. **Test thoroughly** - Browser behavior varies, especially on mobile
## Related {#related}
- [Configuration Reference](configuration.md) - How to configure Quagga2
- [Camera Access API](camera-access.md) - Camera control methods
- [Getting Started](../getting-started.md) - Installation and setup
---
[← Back to Reference](index.md)