Saya punya masalah yang aneh. Saya mencoba membuat situs web dengan video latar belakang yang melingkar. Kodenya terlihat seperti ini:
<video src="video/bg.mp4" style="z-index: -1;object-fit: cover;" poster="video/bg.jpg" autobuffer autoplay loop muted></video>
Ini berfungsi dengan baik di sebagian besar browser (IE kesulitan dengan hal yang sesuai dengan objek ini tetapi saya tidak keberatan) tetapi di iPhone, video tidak dapat diputar otomatis tetapi di iPad melakukannya. Saya sudah membaca Kebijakan Baru untuk iOS dan saya rasa saya memenuhi persyaratan (jika tidak, iPad tidak akan diputar otomatis). Saya melakukan beberapa pengujian lain:
- Menghapus div overlay tidak akan memperbaikinya
- Menghapus z-index tidak akan memperbaikinya
- Wifi atau Seluler tidak membuat perbedaan
- Ukuran file video juga tidak membuat perbedaan
Apakah saya salah melakukannya atau apakah iPhone tidak mau memutar video secara otomatis dan selalu membutuhkan interaksi? Saya hanya peduli untuk iOS 10, saya tahu bahwa persyaratannya berbeda di iOS 9
Jawaban:
Apakah
playsinline
atribut membantu?Inilah yang saya miliki:
<video autoplay loop muted playsinline class="video-background "> <source src="videos/intro-video3.mp4" type="video/mp4"> </video>
Lihat komentarnya di
playsinline
sini: https://webkit.org/blog/6784/new-video-policies-for-ios/sumber
playsinline
bekerja untuk saya sehubungan denganmuted
mengingat kekhasan mode daya rendah pada iPhoneplaysinline
Menyelamatkan hari !!!! Terima kasih sobat. BTW, kebijakan browser baru menuntut bahwa jika Anda ingin memulai ulang video secara otomatis, mulai tanpa suara atau Anda tidak akan dapat melakukannya. Contoh +1 untuk @ken untuk chrome: [ developers.google.com/web/updates/2017/09/…playsinline
harus ditulis dalam CamelCase:playsInline
. Jika tidak, itu tidak akan berhasil.iOs 10+ memungkinkan video autoplay inline. tetapi Anda harus mematikan "Mode daya rendah" di iPhone.
sumber
Berikut ini sedikit retasan untuk mengatasi semua kesulitan yang Anda miliki untuk putar otomatis video di situs web:
Catatan: Beberapa browser tidak mengizinkan video diputar otomatis kecuali pengguna berinteraksi dengan perangkat.
Jadi skrip untuk memeriksa apakah video diputar adalah:
Object.defineProperty(HTMLMediaElement.prototype, 'playing', { get: function () { return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2); }});
Dan kemudian Anda dapat memutar video secara otomatis dengan melampirkan event listener ke body:
$('body').on('click touchstart', function () { const videoElement = document.getElementById('home_video'); if (videoElement.playing) { // video is already playing so do nothing } else { // video is not playing // so play video now videoElement.play(); } });
Catatan:
autoplay
atribut sangat dasar yang perlu ditambahkan ke tag video selain dari skrip ini.Anda dapat melihat contoh kerja dengan kode di sini di tautan ini:
Cara memutar video secara otomatis saat perangkat dalam mode daya rendah / mode hemat data / masalah browser safari
sumber
Saya memiliki masalah serupa dan saya mencoba beberapa solusi. Saya menyelesaikannya dengan menerapkan 2 pertimbangan.
dangerouslySetInnerHtml
untuk menyematkan<video>
kode. Sebagai contoh:<div dangerouslySetInnerHTML={{ __html: ` <video class="video-js" playsinline autoplay loop muted> <source src="../video_path.mp4" type="video/mp4"/> </video>`}} />
Juga, terima kasih kepada @boltcoder untuk panduannya: Putar otomatis video HTML5 tanpa suara menggunakan React di seluler (Safari / iOS 10+)
sumber