ngx-webcam2
Version:
A simple Angular webcam component. Pure & minimal, no Flash-fallback. <a href="https://basst314.github.io/ngx-webcam/?" target="_blank">See the Demo!</a>
25 lines • 3.22 kB
JavaScript
import { __awaiter } from "tslib";
export class WebcamUtil {
static hasVideoInputs() {
const inputs = WebcamUtil.availableVideoInputs;
return !!inputs.find(input => !!input.deviceId);
}
/**
* Lists available videoInput devices
* @returns a list of media device info.
*/
static getAvailableVideoInputs() {
return __awaiter(this, void 0, void 0, function* () {
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
throw new Error('enumerateDevices() not supported.');
}
if (!this.hasVideoInputs()) {
const devices = yield navigator.mediaDevices.enumerateDevices();
WebcamUtil.availableVideoInputs = devices.filter((device) => device.kind === 'videoinput');
}
return WebcamUtil.availableVideoInputs;
});
}
}
WebcamUtil.availableVideoInputs = [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLnV0aWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtd2ViY2FtLyIsInNvdXJjZXMiOlsic3JjL2FwcC9tb2R1bGVzL3dlYmNhbS91dGlsL3dlYmNhbS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLE9BQU8sVUFBVTtJQUlyQixNQUFNLENBQUMsY0FBYztRQUNuQixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUM7UUFDL0MsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBTyx1QkFBdUI7O1lBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDdkUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2FBQ3REO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRTtnQkFDMUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2hFLFVBQVUsQ0FBQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBdUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQzthQUM3RztZQUVELE9BQU8sVUFBVSxDQUFDLG9CQUFvQixDQUFDO1FBQ3pDLENBQUM7S0FBQTs7QUF0QmMsK0JBQW9CLEdBQXNCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBXZWJjYW1VdGlsIHtcblxuICBwcml2YXRlIHN0YXRpYyBhdmFpbGFibGVWaWRlb0lucHV0czogTWVkaWFEZXZpY2VJbmZvW10gPSBbXTtcblxuICBzdGF0aWMgaGFzVmlkZW9JbnB1dHMoKSB7XG4gICAgY29uc3QgaW5wdXRzID0gV2ViY2FtVXRpbC5hdmFpbGFibGVWaWRlb0lucHV0cztcbiAgICByZXR1cm4gISFpbnB1dHMuZmluZChpbnB1dCA9PiAhIWlucHV0LmRldmljZUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0cyBhdmFpbGFibGUgdmlkZW9JbnB1dCBkZXZpY2VzXG4gICAqIEByZXR1cm5zIGEgbGlzdCBvZiBtZWRpYSBkZXZpY2UgaW5mby5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgZ2V0QXZhaWxhYmxlVmlkZW9JbnB1dHMoKTogUHJvbWlzZTxNZWRpYURldmljZUluZm9bXT4ge1xuICAgIGlmICghbmF2aWdhdG9yLm1lZGlhRGV2aWNlcyB8fCAhbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2VudW1lcmF0ZURldmljZXMoKSBub3Qgc3VwcG9ydGVkLicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5oYXNWaWRlb0lucHV0cygpKSB7XG4gICAgICBjb25zdCBkZXZpY2VzID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCk7XG4gICAgICBXZWJjYW1VdGlsLmF2YWlsYWJsZVZpZGVvSW5wdXRzID0gZGV2aWNlcy5maWx0ZXIoKGRldmljZTogTWVkaWFEZXZpY2VJbmZvKSA9PiBkZXZpY2Uua2luZCA9PT0gJ3ZpZGVvaW5wdXQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gV2ViY2FtVXRpbC5hdmFpbGFibGVWaWRlb0lucHV0cztcbiAgfVxufVxuIl19