Có thể điều khiển ánh sáng camera trên điện thoại thông qua một trang web không? Nói qua Chrome hoặc Firefox. Tôi biết có thể sử dụng ứng dụng Android hoặc iOS, ứng dụng này có nhiều ứng dụng đèn pin. Và tôi biết một người có thể điều khiển máy ảnh thông qua họ các chức năng của getUserMedia. Nếu không, có ai biết khi nào nó sẽ có sẵn không?Có thể điều khiển ánh sáng camera trên điện thoại thông qua một trang web không?
5
A
Trả lời
6
Dưới đây là một chút "ngọn đuốc ứng dụng" cho một trang web:
Chỉnh sửa: Tôi cũng đã thực hiện một jsfiddle
//Test browser support
const SUPPORTS_MEDIA_DEVICES = 'mediaDevices' in navigator;
if (SUPPORTS_MEDIA_DEVICES) {
//Get the environment camera (usually the second one)
navigator.mediaDevices.enumerateDevices().then(devices => {
const cameras = devices.filter((device) => device.kind === 'videoinput');
if (cameras.length === 0) {
throw 'No camera found on this device.';
}
const camera = cameras[cameras.length - 1];
// Create stream and get video track
navigator.mediaDevices.getUserMedia({
video: {
deviceId: camera.deviceId,
facingMode: ['user', 'environment'],
height: {ideal: 1080},
width: {ideal: 1920}
}
}).then(stream => {
const track = stream.getVideoTracks()[0];
//Create image capture object and get camera capabilities
const imageCapture = new ImageCapture(track)
const photoCapabilities = imageCapture.getPhotoCapabilities().then(() => {
//todo: check if camera has a torch
//let there be light!
const btn = document.querySelector('.switch');
btn.addEventListener('click', function(){
track.applyConstraints({
advanced: [{torch: true}]
});
});
});
});
});
//The light will be on as long the track exists
}
<button class="switch">On/Off</button>
Mã này được lấy cảm hứng từ repository này, webseries này và điều này blog-post
3
Bạn có thể sử dụng MediaStream Image Capture API bằng cách tạo ra một ImageCapture từ một VideoStreamTrack và thiết lập các tùy chọn "fillLightMode"-"flash" hoặc "ngọn đuốc". Ví dụ:
<video autoplay="true"></video>
<img />
<button onclick="takePhoto()">Take Photo</button>
<script type="text/javascript">
var imageCapture = null;
var deviceConfig = {
video: {
width: 480,
height: 640,
facingMode: "environment", /* may not work, see https://bugs.chromium.org/p/chromium/issues/detail?id=290161 */
deviceId: null
}
};
var imageCaptureConfig = {
fillLightMode: "torch", /* or "flash" */
focusMode: "continuous"
};
// get the available video input devices and choose the one that represents the backside camera
navigator.mediaDevices.enumerateDevices()
/* replacement for not working "facingMode: 'environment'": use filter to get the backside camera with the flash light */
.then(mediaDeviceInfos => mediaDeviceInfos.filter(mediaDeviceInfo => ((mediaDeviceInfo.kind === 'videoinput')/* && mediaDeviceInfo.label.includes("back")*/)))
.then(mediaDeviceInfos => {
console.log("mediaDeviceInfos[0].label: " + mediaDeviceInfos[0].label);
// get the device ID of the backside camera and use it for media stream initialization
deviceConfig.video.deviceId = mediaDeviceInfos[0].deviceId;
navigator.mediaDevices.getUserMedia(deviceConfig)
.then(_gotMedia)
.catch(err => console.error('getUserMedia() failed: ', err));
});
function takePhoto() {
imageCapture.takePhoto()
.then(blob => {
console.log('Photo taken: ' + blob.type + ', ' + blob.size + 'B');
// get URL for blob data and use as source for the image element
const image = document.querySelector('img');
image.src = URL.createObjectURL(blob);
})
.catch(err => console.error('takePhoto() failed: ', err));
}
function _gotMedia (mediastream) {
// use the media stream as source for the video element
const video = document.querySelector('video');
video.srcObject = mediastream;
// create an ImageCapture from the first video track
const track = mediastream.getVideoTracks()[0];
imageCapture = new ImageCapture(track);
// set the image capture options (e.g. flash light, autofocus, ...)
imageCapture.setOptions(imageCaptureConfig)
.catch(err => console.error('setOptions(' + JSON.stringify(imageCaptureConfig) + ') failed: ', err));
}
</script>
Lưu ý:
- Trong bài viết này API vẫn đang được phát triển và có thể thay đổi trong tương lai.
- Đối với phép ImageCapture trong Chrome cờ "chrome: // flags/# enable-nghiệm-web-platform-tính năng" phải được thiết lập để "true"
- Đối với phép ImageCapture trong Firefox cờ "dom.imagecapture.enabled" trong "about: config" phải được đặt thành "true". Nhưng "setOptions" không được hỗ trợ theo văn bản này!
Xem thêm:
- Mediastream Image Capture trên GitHub
- NPM mô-đun ImageCapture polyfill
Các vấn đề liên quan
- 1. Tôi có thể ngăn điện thoại ngủ trên trang web
- 2. Điều khiển ánh sáng với Arduino
- 3. Cách tốt nhất để có được hiệu ứng ánh sáng cửa sổ điện thoại 7
- 4. Có thể kích hoạt menu chia sẻ trên điện thoại thông minh (thông qua HTML/JS) không?
- 5. Sự cố với trang web trên điện thoại di động
- 6. Chu kỳ thông qua số điện thoại
- 7. Cách kích hoạt cuộc gọi điện thoại khi nhấp vào liên kết trong trang web trên điện thoại di động
- 8. cảm biến ánh sáng iPhone vs camera để đo cường độ ánh sáng
- 9. Điện thoại thông minh Bookmark
- 10. cách xem thông báo nhật ký javascript của điện thoại trên bảng điều khiển xcode
- 11. Có thể nhận số điện thoại qua Google oAuth2 không?
- 12. Điều khiển camera cấp thấp iPhone iOS4?
- 13. Đo cường độ ánh sáng từ Camera Android
- 14. Tôi có thể nhận ID thiết bị Android thông qua trang web trên thiết bị di động không?
- 15. API dựa trên web có thể cho tôi biết liệu một số có phải là điện thoại cố định hoặc điện thoại di động không?
- 16. Trang web góc sẽ không mở trên điện thoại di động
- 17. Windows Mobile: sử dụng camera của điện thoại với C#
- 18. Tắt tất cả điều khiển biểu mẫu trên trang web
- 19. Chúng tôi có thể truy cập trình điều khiển Micrô của điện thoại Android của tôi
- 20. Phonegap có thể hiển thị trang web trên điện thoại di động của tôi trong trình duyệt được nhúng không?
- 21. Làm thế nào để có được số điện thoại của một điện thoại Android thông qua adb?
- 22. Chọn một tập tin từ onedrive trên điện thoại - trang web di động
- 23. Buộc tải xuống mp3 cho trang web trên điện thoại di động trên iPhone
- 24. Bạn có thể nhận được một dòng lệnh trên điện thoại G1 không?
- 25. Có thể mở bảng điều khiển công cụ dành cho nhà phát triển trong Chrome trên điện thoại Android không?
- 26. Fancybox: không thể di chuyển trên điện thoại Android
- 27. Gọi Nút Gọi Điện thoại trong Trang Web Android
- 28. Cách điều hướng một trang đến một trang khác trong điện thoại android?
- 29. Điều khiển camera iPhone tùy chỉnh (không sử dụng UIImagePickerController)
- 30. Cung cấp trang web địa phương qua bluetooth tới điện thoại di động mà không cần sử dụng Internet
Bạn đã bao giờ tìm hiểu xem bạn có thể làm điều này, và nếu như vậy như thế nào? –
nope: -/has – TinyTheBrontosaurus