Das Attribut <video>
tags autoplay="autoplay"
funktioniert in Safari einwandfrei.
Beim Testen auf einem iPad muss das Video manuell aktiviert werden.
Ich dachte, es sei ein Ladeproblem, und führte eine Schleife durch, in der der Status des Mediums überprüft wurde:
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();
}
}
Der Status bleibt 0
auf dem iPad. Auf meinem Desktop - Safari geht es durch 0
, 1
und schließlich 4
. Auf dem iPad erreicht es nur, 4
wenn ich manuell auf den "Wiedergabe" -Pfeil tippe.
Darüber hinaus funktioniert das Aufrufen $("#periscopevideo").get(0).play()
von einem Klick über onClick
auch.
Gibt es irgendwelche Einschränkungen von Apple in Bezug auf die automatische Wiedergabe? (Ich verwende übrigens iOS 5+).
Antworten:
iOS 10 Update
Das Verbot der automatischen Wiedergabe wurde ab iOS 10 aufgehoben - jedoch mit einigen Einschränkungen (z. B. kann A automatisch wiedergegeben werden, wenn keine Audiospur vorhanden ist).
Eine vollständige Liste dieser Einschränkungen finden Sie in den offiziellen Dokumenten: https://webkit.org/blog/6784/new-video-policies-for-ios/
iOS 9 und früher
Ab iOS 6.1 ist es nicht mehr möglich, Videos automatisch auf dem iPad abzuspielen.
Meine Vermutung, warum sie die Auto-Play-Funktion deaktiviert haben?
Da viele Gerätebesitzer auf ihren Geräten Datennutzungs- / Bandbreitenbeschränkungen haben, war Apple der Meinung, dass der Benutzer selbst entscheiden sollte, wann er die Bandbreitennutzung einleitet.
Nach einigen Recherchen habe ich in der Apple-Dokumentation den folgenden Auszug zum automatischen Abspielen auf iOS-Geräten gefunden, um meine Annahme zu bestätigen:
Auf der Safari HTML5-Referenzseite finden Sie eine separate Warnung, warum eingebettete Medien in Safari unter iOS nicht abgespielt werden können:
Dies bedeutet (in Bezug auf Code), dass Javascript
play()
undload()
Methoden inaktiv sind, bis der Benutzer die Wiedergabe startet, es sei denn, die Methodeplay()
oderload()
wird durch eine Benutzeraktion (z. B. ein Klickereignis) ausgelöst.Grundsätzlich funktioniert eine vom Benutzer initiierte Wiedergabetaste, ein
onLoad="play()"
Ereignis jedoch nicht.Zum Beispiel würde dies den Film abspielen:
Während das Folgende unter iOS nichts bewirken würde:
quelle
Ich möchte zunächst sagen, dass mir klar ist, dass diese Frage alt ist und bereits eine akzeptierte Antwort hat. Aber als unglücklicher Internetnutzer, der diese Frage als Mittel zum Zweck benutzte, um kurz danach (aber nicht bevor ich meinen Kunden ein wenig verärgerte) als falsch erwiesen zu werden, möchte ich meine Gedanken und Vorschläge hinzufügen.
Während @DSG und @Giona korrekt sind und an ihren Antworten nichts auszusetzen ist, gibt es einen kreativen Mechanismus, mit dem Sie diese Einschränkung sozusagen "umgehen" können. Das heißt nicht, dass ich die Umgehung dieser Funktion gutheiße, ganz im Gegenteil, sondern nur einige Mechanismen, damit sich ein Benutzer immer noch "fühlt", als würde eine Video- oder Audiodatei "automatisch abgespielt".
Die schnelle Lösung besteht darin, ein Video-Tag irgendwo auf der mobilen Seite auszublenden, da ich eine reaktionsfähige Site erstellt habe, mache ich dies nur für kleinere Bildschirme. Das Video-Tag (HTML- und jQuery-Beispiele):
HTML
jQuery
Wenn dies auf der Seite ausgeblendet ist, lade ich das ausgeblendete Video, wenn ein Benutzer "klickt", um einen Film anzusehen (immer noch Benutzerinteraktion, es gibt keine Möglichkeit, diese Anforderung zu umgehen), anstatt zu einer sekundären Beobachtungsseite zu navigieren. Dies funktioniert hauptsächlich, weil das Medien-Tag nicht wirklich verwendet wird, sondern zu einer Quicktime-Instanz hochgestuft wird, sodass ein sichtbares Videoelement überhaupt nicht erforderlich ist. Im Handler für "Klick" (oder "Touchend" auf dem Handy).
Und Bratsche. In UX klickt ein Benutzer auf ein Video, um es abzuspielen, und Quicktime öffnet die Wiedergabe des von ihm ausgewählten Videos. Dies bleibt innerhalb der Einschränkung, dass Videos nur über Benutzeraktionen abgespielt werden können, sodass ich niemandem Daten aufzwinge, der sich nicht dazu entschließt, ein Video mit diesem Dienst anzusehen. Ich habe dies entdeckt, als ich versucht habe herauszufinden, wie genau Youtube dies mit seinem Handy geschafft hat. Dies ist im Wesentlichen eine wirklich schöne Javascript-Seitenerstellung und ein ausgefallenes Element, das sich wie im Fall des Video-Tags versteckt.
tl; dr Hier ist eine etwas "Problemumgehung", um zu versuchen, eine "Autoplay" -UX-Funktion auf iOS-Geräten zu erstellen, ohne die Einschränkungen von Apple zu überschreiten und die Benutzer dennoch entscheiden zu lassen, ob sie ein Video (oder Audio, das mir am besten gefällt) ansehen möchten Ich habe mich nicht selbst getestet, ohne dass einer ohne ihre Erlaubnis geladen wurde.
Für die Person, die kommentiert hat, dass dies von sleep.fm stammt, wäre dies leider immer noch keine Lösung für Ihre Probleme gewesen, nämlich die zeitbasierte Audiowiedergabe.
Ich hoffe, jemand findet diese Informationen nützlich. Es hätte mir eine Woche schlechte Nachrichtenübermittlung an einen Kunden erspart, der fest davon überzeugt war, dass er über diese Funktion verfügt, und ich war froh, am Ende einen Weg zu finden, sie zu übermitteln.
BEARBEITEN
Weitere Ergebnisse zeigen, dass die oben beschriebene Problemumgehung nur für iPhone / iPod-Geräte gilt. Das iPad spielt Videos in Safari ab, bevor es im Vollbildmodus angezeigt wird. Daher benötigen Sie einen Mechanismus, um die Größe des Videos beim Klicken vor dem Abspielen zu ändern. Andernfalls erhalten Sie Audio und kein Video.
quelle
$dummyVideo.get(0)
anstelle von Klammern zu verwenden, damit jQuery ordnungsgemäß fehlschlagen kann, wenn Ihre Auswahl leer ist.Einfach einstellen
webView.mediaPlaybackRequiresUserAction = NO;
Das Autoplay funktioniert bei mir unter iOS.
quelle
Ab iOS 10, Videos jetzt können automatisch wiedergegeben , sondern nur sie entweder stumm geschaltet werden, oder keine Audiospur haben. Yay!
Zusamenfassend:
<video autoplay>
Elemente berücksichtigen jetzt das Autoplay-Attribut für Elemente, die die folgenden Bedingungen erfüllen:<video>
Elemente können ohne Benutzergeste automatisch wiedergegeben werden, wenn ihr Quellmedium keine Audiospuren enthält.<video muted>
Elemente können auch ohne Benutzergeste automatisch wiedergegeben werden.<video>
Element eine Audiospur erhält oder ohne Benutzergeste die Stummschaltung aufhebt, wird die Wiedergabe angehalten.<video autoplay>
Elemente werden erst abgespielt, wenn sie auf dem Bildschirm angezeigt werden, z. B. wenn sie in das Ansichtsfenster gescrollt, über CSS sichtbar gemacht und in das DOM eingefügt werden.<video autoplay>
Elemente werden angehalten, wenn sie nicht mehr sichtbar sind, z. B. indem sie aus dem Ansichtsfenster gescrollt werden.Weitere Informationen hier: https://webkit.org/blog/6784/new-video-policies-for-ios/
quelle
In dieser Safari HTML5-Referenz können Sie lesen
quelle
Lassen Sie das Video zuerst stummschalten, um die automatische Wiedergabe in ios sicherzustellen, und heben Sie dann die Stummschaltung auf, wenn Sie möchten.
quelle