The <video>
tag autoplay="autoplay"
atribut bekerja dengan baik di Safari.
Saat menguji di iPad, video harus diaktifkan secara manual.
Saya pikir itu adalah masalah pemuatan, jadi saya menjalankan loop untuk memeriksa status media:
videoPlay: function(){
var me = this;
console.log('STATE: ' + $("#periscopevideo").get(0).readyState);
if ($("#periscopevideo").get(0).readyState != 4){
setTimeout(function(){me.videoPlay();}, 300);
}
else {
$("#periscopevideo").get(0).play();
}
}
Status tetap di 0
iPad. Di safari desktop saya, ia berhasil 0
, 1
dan akhirnya 4
. Di iPad, ini hanya menjangkau 4
jika saya menge-tap panah "putar" secara manual.
Selain itu, menelepon $("#periscopevideo").get(0).play()
dari klik melalui onClick
juga berfungsi.
Apakah ada batasan oleh Apple terkait putar otomatis? (Omong-omong, saya menjalankan iOS 5+).
Jawaban:
Pembaruan iOS 10
Larangan putar otomatis telah dicabut mulai iOS 10 - tetapi dengan beberapa batasan (mis. A dapat diputar otomatis jika tidak ada trek audio).
Untuk melihat daftar lengkap dari batasan ini, lihat dokumen resmi: https://webkit.org/blog/6784/new-video-policies-for-ios/
iOS 9 dan sebelumnya
Mulai iOS 6.1, video tidak lagi dapat diputar otomatis di iPad.
Asumsi saya mengapa mereka menonaktifkan fitur putar otomatis?
Nah, karena banyak pemilik perangkat memiliki batas penggunaan data / bandwidth pada perangkat mereka, saya rasa Apple merasa bahwa pengguna sendiri yang harus memutuskan kapan mereka memulai penggunaan bandwidth.
Setelah sedikit riset, saya menemukan ekstrak berikut di dokumentasi Apple sehubungan dengan putar otomatis di perangkat iOS untuk mengonfirmasi asumsi saya:
Berikut adalah peringatan terpisah yang ditampilkan di halaman Referensi HTML5 Safari tentang mengapa media yang disematkan tidak dapat diputar di Safari di iOS:
Apa artinya ini (dalam hal code) adalah bahwa Javascript
play()
danload()
metode tidak aktif sampai inisiat pengguna pemutaran, kecuali yangplay()
atauload()
metode dipicu oleh tindakan pengguna (misalnya acara klik).Pada dasarnya, tombol putar yang dimulai oleh pengguna berfungsi, tetapi sebuah
onLoad="play()"
acara tidak.Misalnya, ini akan memutar film:
Sedangkan hal berikut tidak akan melakukan apa pun di iOS:
sumber
Saya ingin memulai dengan mengatakan dengan mengatakan bahwa saya menyadari pertanyaan ini sudah tua dan sudah memiliki jawaban yang dapat diterima; tetapi, sebagai pengguna internet yang malang yang menggunakan pertanyaan ini sebagai sarana untuk mengakhiri hanya untuk dibuktikan salah segera setelahnya (tetapi tidak sebelum saya mengecewakan klien saya sedikit) saya ingin menambahkan pemikiran dan saran saya.
Meskipun @DSG dan @Giona benar, dan tidak ada yang salah dengan jawaban mereka, ada mekanisme kreatif yang dapat Anda terapkan untuk "menyiasati", boleh dikatakan, batasan ini. Bukan berarti saya memaafkan pengelakan fitur ini, justru sebaliknya, tetapi hanya beberapa mekanisme sehingga pengguna masih "merasa" seolah-olah file video atau audio "diputar otomatis".
Solusi cepatnya adalah menyembunyikan tag video di suatu tempat di halaman seluler, karena saya membuat situs responsif, saya hanya melakukan ini untuk layar yang lebih kecil. Tag video (contoh HTML dan jQuery):
HTML
jQuery
Dengan menyembunyikan hal tersebut di halaman, saat pengguna "mengklik" untuk menonton film (masih interaksi pengguna, tidak ada cara untuk mengakali persyaratan tersebut) daripada membuka halaman tonton sekunder, saya memuat video tersembunyi. Ini terutama berfungsi karena tag media tidak benar-benar digunakan tetapi dipromosikan ke instance Quicktime sehingga memiliki elemen video yang terlihat tidak diperlukan sama sekali. Di penangan untuk "klik" (atau "sentuh" di seluler).
Dan biola. Sejauh UX berjalan, pengguna mengklik video untuk memutar dan Quicktime membuka pemutaran video yang mereka pilih. Ini tetap dalam batasan bahwa video hanya dapat diputar melalui tindakan pengguna jadi saya tidak memaksakan data pada siapa pun yang tidak memutuskan untuk menonton video dengan layanan ini. Saya menemukan ini ketika mencoba mencari tahu bagaimana tepatnya Youtube melakukan ini dengan ponsel mereka yang pada dasarnya adalah beberapa pembuatan halaman Javascript yang sangat bagus dan elemen mewah yang bersembunyi seperti dalam kasus tag video.
tl; dr Berikut ini adalah "solusi" untuk mencoba dan membuat fitur UX "putar otomatis" di perangkat iOS tanpa melampaui batasan Apple dan masih meminta pengguna memutuskan apakah mereka ingin menonton video (atau audio yang paling disukai, meskipun saya belum menguji) diri mereka sendiri tanpa memuatnya tanpa izin.
Juga, untuk orang yang berkomentar yaitu dari sleep.fm, sayangnya ini masih belum menjadi solusi untuk masalah Anda yaitu pemutaran audio berbasis waktu.
Saya berharap seseorang menemukan informasi ini berguna, ini akan menyelamatkan saya dari satu minggu pengiriman berita buruk ke klien yang bersikeras bahwa mereka memiliki fitur ini dan saya senang menemukan cara untuk menyampaikannya pada akhirnya.
EDIT
Temuan lebih lanjut menunjukkan bahwa solusi di atas hanya untuk perangkat iPhone / iPod. IPad memutar video di Safari sebelum layar penuh sehingga Anda memerlukan beberapa mekanisme untuk mengubah ukuran video saat diklik sebelum diputar atau Anda akan berakhir dengan audio dan tidak ada video.
sumber
$dummyVideo.get(0)
daripada tanda kurung, jadi jQuery bisa gagal dengan baik jika pilihan Anda kosong.Atur saja
webView.mediaPlaybackRequiresUserAction = NO;
Putar otomatis berfungsi untuk saya di iOS.
sumber
Mulai iOS 10, video sekarang dapat diputar otomatis, tetapi hanya video yang dibisukan, atau tidak memiliki trek audio. Yay!
Pendeknya:
<video autoplay>
elemen sekarang akan menghormati atribut putar otomatis, untuk elemen yang memenuhi ketentuan berikut:<video>
elemen akan diizinkan untuk memutar otomatis tanpa isyarat pengguna jika media sumber mereka tidak berisi trek audio.<video muted>
elemen juga akan diizinkan untuk memutar otomatis tanpa isyarat pengguna.<video>
elemen memperoleh trek audio atau menjadi tidak bersuara tanpa isyarat pengguna, pemutaran akan dijeda.<video autoplay>
elemen hanya akan mulai diputar saat terlihat di layar seperti saat di-scroll ke viewport, dibuat terlihat melalui CSS, dan dimasukkan ke DOM.<video autoplay>
elemen akan dijeda jika tidak terlihat, seperti dengan di-scroll keluar dari viewport.Info lebih lanjut di sini: https://webkit.org/blog/6784/new-video-policies-for-ios/
sumber
Dalam referensi HTML5 Safari ini , Anda dapat membaca
sumber
Biarkan video dibisukan terlebih dahulu untuk memastikan pemutaran otomatis di ios, lalu suarakan jika Anda mau.
sumber