Saya sedang membangunkan sistem pengawasan di mana kami perlu mengambil imej pengguna setiap x minit (dengan kebenaran mereka) dan menjadikan elemen HTML kamera web tidak kelihatan kepada pengguna.
Namun, kadangkala imej yang ditangkap menunjukkan imej lama dalam Safari. Saya telah mencipta aplikasi olok-olok menggunakan webcamjs dan saya boleh mengeluarkan semula aplikasi ini dalam safari hanya apabila nod webcam disembunyikan daripada port pandangan.
Untuk menyembunyikan elemen kamera web daripada port pandangan, saya menggunakan gaya berikut
#webcam{ position: fixed; top: -10000px; left: -10000px; }
Spesifikasi
Pelayar: Safari versi 16.0 Sistem pengendalian: MacOS 12.6 WebcamJS: 1.0.26
function loadWebcamJS(){ const webcam = document.getElementById("webcam"); Webcam.set({ width: 640, height: 480 }); Webcam.attach(webcam); Webcam.on('load', afterLoad); } const getTime = (d) => `${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}`; function snap(){ Webcam.snap((dataURI) => { const results = document.getElementById('results'); const date = new Date(); const time = getTime(date); results.innerHTML += ` <div class="image"> <img src=${dataURI} alt="Snapped Image"> <h4>${time}</h4> </div> ` }) } loadWebcamJS(); function afterLoad(){ setInterval(() => { snap(); }, 1000 * 10); //Snap images every 10 seconds }
Sila ambil perhatian bahawa saya tidak biasa dengan perpustakaan ini, jadi mungkin mereka mempunyai cara yang lebih bersih untuk menangani perkara ini.
Automain nampaknya gagal di Safari. Anda boleh menyelesaikan masalah ini dengan memanggil kaedah
<video>
的play()
anda sendiri, yang akan dilampirkan oleh perpustakaan pada elemen anda.Ambil perhatian bahawa jika anda tidak mahu elemen itu kelihatan pada halaman, anda tidak perlu memasukkannya dalam DOM sama sekali. Saya juga akan mengesyorkan agar tidak melakukan ini kerana pelayar memang menggunakan
IntersectionObserver
实例来暂停不可见的静音<video>
元素。但他们不会暂停分离的<video>
.Jadi anda boleh mengalih keluar
<div>
anda dan CSS yang berkaitan dan hanya melakukan sesuatu sepertiPen kod yang dikemas kini (gUM tidak membenarkan penggunaan StackSnippet). p>