[FIXED] Können Sie HTML5-Videos auf dem iPad automatisch abspielen?

Ausgabe

Das <video>Tags- autoplay="autoplay"Attribut funktioniert in Safari einwandfrei.

Beim Testen auf einem iPad muss das Video manuell aktiviert werden.

Ich dachte, es sei ein Ladeproblem, also habe ich eine Schleife ausgeführt, die den Status der Medien überprüft:

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();
    }
}

0Auf dem iPad bleibt der Zustand bestehen . Auf meiner Desktop-Safari geht es durch 0, 1und schließlich 4. Auf dem iPad reicht es nur, 4wenn ich manuell auf den „Play“-Pfeil tippe.

Darüber hinaus funktioniert auch das Aufrufen $("#periscopevideo").get(0).play()per Klick via .onClick

Gibt es irgendwelche Einschränkungen von Apple in Bezug auf Autoplay? (Ich verwende übrigens iOS 5+).

Lösung

iOS 10-Update

Das Autoplay-Verbot wurde ab iOS 10 aufgehoben – allerdings mit einigen Einschränkungen (z. B. kann A automatisch abgespielt 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 das automatische Abspielen von Videos auf dem iPad nicht mehr möglich.

Meine Vermutung, warum sie die Autoplay-Funktion deaktiviert haben?

Nun, da viele Gerätebesitzer Datennutzungs-/Bandbreitenbeschränkungen auf ihren Geräten haben, denke ich, dass Apple der Meinung ist, dass der Benutzer selbst entscheiden sollte, wann er die Bandbreitennutzung einleitet.


Nach ein wenig Recherche fand ich in der Apple-Dokumentation in Bezug auf die automatische Wiedergabe auf iOS-Geräten den folgenden Auszug, um meine Vermutung zu bestätigen:

„Apple hat die Entscheidung getroffen, die automatische Wiedergabe von Videos auf iOS-Geräten sowohl durch Skript- als auch durch Attributimplementierungen zu deaktivieren.

In Safari, auf iOS (für alle Geräte, einschließlich iPad), wo sich der Benutzer möglicherweise in einem Mobilfunknetz befindet und pro Dateneinheit abgerechnet wird, sind Vorladen und automatische Wiedergabe deaktiviert. Es werden keine Daten geladen, bis der Benutzer dies initiiert. ” – Apple-Dokumentation.

Hier ist eine separate Warnung auf der Safari HTML5-Referenzseite darüber, warum eingebettete Medien nicht in Safari auf iOS abgespielt werden können:

Warnung : Um unerwünschte Downloads über Mobilfunknetze auf Kosten des Benutzers zu verhindern, können eingebettete Medien in Safari unter iOS nicht automatisch wiedergegeben werden – der Benutzer initiiert immer die Wiedergabe. Ein Controller wird automatisch auf dem iPhone oder iPod touch bereitgestellt, sobald die Wiedergabe gestartet wird, aber für das iPad müssen Sie entweder das Attribut „controls“ festlegen oder einen Controller mithilfe von JavaScript bereitstellen.


Dies bedeutet (in Bezug auf den Code), dass Javascripts play()und load()-Methoden inaktiv sind, bis der Benutzer die Wiedergabe initiiert, es sei denn , die play()oder load()-Methode wird durch eine Benutzeraktion (z. B. ein Klickereignis) ausgelöst.

Grundsätzlich funktioniert eine vom Benutzer initiierte Wiedergabeschaltfläche, ein onLoad="play()"Ereignis jedoch nicht.

Zum Beispiel würde dies den Film abspielen:

<input type="button" value="Play" onclick="document.myMovie.play()">

Während Folgendes unter iOS nichts bewirken würde:

<body onload="document.myMovie.play()">


Beantwortet von –
dsgriffin


Antwort geprüft von –
Timothy Miller (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like

[FIXED] openURL: in iOS 10 veraltet

Ausgabe Apple mit iOS 10 ist veraltet openURL: for openURL:option:completionHandler Wenn ich: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.google.com"]]; Wie wird…