Ich erhalte die Fehlermeldung ..
Nicht erfasst (im Versprechen) DOMException: play () ist fehlgeschlagen, weil der Benutzer nicht zuerst mit dem Dokument interagiert hat.
..wenn Sie versuchen, Videos mit Chrome Version 66 auf dem Desktop abzuspielen.
Ich habe eine Anzeige gefunden, die automatisch auf einer Website abgespielt wurde, jedoch den folgenden HTML-Code verwendet:
<video
title="Advertisement"
webkit-playsinline="true"
playsinline="true"
style="background-color: rgb(0, 0, 0); position: absolute; width: 640px; height: 360px;"
src="http://ds.serving-sys.com/BurstingRes/Site-2500/Type-16/1ff26f6a-aa27-4b30-a264-df2173c79623.mp4"
autoplay=""></video>
So ist unter Umgehung Autoplay - Blocker Chrome v66 wirklich so einfach wie nur das Hinzufügen der webkit-playsinline="true"
, playsinline="true"
und autoplay=""
Attribute an das <video>
Element? Gibt es irgendwelche negativen Konsequenzen dafür?
Antworten:
Damit die automatische Wiedergabe von HTML 5-Elementen nach dem Chrome 66-Update funktioniert, müssen Sie nur die
muted
Eigenschaft zum Videoelement hinzufügen .Also dein aktuelles Video HTML
Benötigt nur
muted="muted"
Ich glaube, das Chrome 66-Update versucht, Tabs zu stoppen, die zufälliges Rauschen auf den Tabs des Benutzers verursachen. Aus diesem Grund funktioniert die automatische Wiedergabe aufgrund der stummgeschalteten Eigenschaft wieder.
quelle
mute
Attributs oder des Einstellungsattributsvolume
hilft nicht.src
ungültig war. Ich habe das Snippet aktualisiert,src
damit das Video automatisch abgespielt wird.muted="true"
stattdessen tunDie beste Lösung, die ich herausgefunden habe, ist das Stummschalten des Videos
HTML
quelle
chrome://settings/content/sound
quelle
--autoplay-policy=no-user-gesture-required
der programmatische Weg ist, um diese Einstellung zu erreichen.Beantwortung der vorliegenden Frage ...
Nein, es reicht nicht aus, über diese Attribute zu verfügen. Um ein Medium mit Audio automatisch abspielen zu können, muss eine Benutzergeste in Ihrem Dokument registriert sein.
Diese Einschränkung ist jedoch sehr schwach: Wenn Sie diese Benutzergeste für das übergeordnete Dokument erhalten haben und Ihr Video von einem Iframe geladen wurde, können Sie es abspielen ...
Nehmen wir zum Beispiel diese Geige , die nur ist
Beim ersten Laden und wenn Sie nirgendwo klicken, wird es nicht ausgeführt, da noch kein Ereignis registriert ist.
Sobald Sie jedoch auf die Schaltfläche "Ausführen" klicken , hat das übergeordnete Dokument (jsfiddle.net) eine Benutzergeste erhalten, und jetzt wird das Video abgespielt, obwohl es technisch in ein anderes Dokument geladen ist.
Das folgende Snippet wird jedoch automatisch wiedergegeben, da Sie tatsächlich auf die Schaltfläche Code-Snippet ausführen klicken müssen .
Dies bedeutet, dass Ihre Anzeige wahrscheinlich geschaltet werden konnte, weil Sie der Hauptseite eine Nutzergeste gegeben haben.
Beachten Sie nun, dass Safari und Mobile Chrome strengere Regeln haben und dass Sie die
play()
Methode mindestens einmal programmgesteuert für das Element<video>
oder<audio>
vom Benutzerereignishandler selbst auslösen müssen .Code-Snippet anzeigen
Wenn Sie das Audio nicht benötigen, hängen Sie es einfach nicht an Ihr Medium an. Ein Video mit nur einer Videospur kann ebenfalls automatisch wiedergegeben werden und verringert die Bandbreitennutzung Ihres Benutzers.
quelle
Für mich (im Angular-Projekt) hat dieser Code geholfen:
In HTML sollten Sie hinzufügen
autoplay muted
In JS / TS
quelle
@ViewChild()
müssen Sie die sttatic-Option auf true setzen:@ViewChild('videoPlayer', {static: true}) videoplayer: ElementRef;
video: HTMLVideoElement;
Und dann:this.video = this.videoplayer.nativeElement;
@ngOnInit()
Versuchen Sie, mousemove event lisentner zu verwenden
quelle
Erweitern Sie das DOM-Element, behandeln Sie den Fehler und verschlechtern Sie es ordnungsgemäß
Im Folgenden verwende ich die Prototypfunktion, um die native DOM-Wiedergabefunktion zu verpacken, ihr Versprechen zu erfüllen und mich dann zu einer Wiedergabetaste zu verschlechtern, wenn der Browser eine Ausnahme auslöst. Diese Erweiterung behebt das Manko des Browsers und ist Plug-n-Play auf jeder Seite mit Kenntnis der Zielelemente.
quelle
In meinem Fall musste ich das tun
quelle
Chrome benötigt eine Benutzerinteraktion, damit das Video automatisch abgespielt oder über js (video.play ()) abgespielt werden kann. Aber die Interaktion kann zu jedem Zeitpunkt von jeder Art sein. Wenn Sie auf der Seite nur zufällig klicken, wird das Video automatisch wiedergegeben. Ich habe mich dann entschlossen, eine Schaltfläche (nur bei Chrome-Browsern) hinzuzufügen, auf der "Video-Autoplay aktivieren" steht. Die Schaltfläche bewirkt nichts, aber nur darauf zu klicken, ist die erforderliche Benutzerinteraktion für jedes weitere Video.
quelle
Beim Versuch, eine Audiodatei abzuspielen, ist ein ähnlicher Fehler aufgetreten. Zuerst funktionierte es, dann funktionierte es nicht mehr, als ich die
markForCheck
Methode von ChangeDetector in derselben Funktion verwendete, um ein erneutes Rendern auszulösen, wenn ein Versprechen aufgelöst wurde (ich hatte ein Problem mit dem Rendern von Ansichten).Als ich das änderte
markForCheck
,detectChanges
fing es wieder an zu arbeiten. Ich kann wirklich nicht erklären, was passiert ist, ich habe nur daran gedacht, das hier fallen zu lassen, vielleicht würde es jemandem helfen.quelle
Sie sollten wie erwartet ein
muted
AttributvideoElement
für Ihre Code-Arbeit in Ihrem hinzugefügt haben . Schau unten ..Vergessen Sie nicht, einen gültigen Videolink als Quelle hinzuzufügen
quelle
Ich hatte einige Probleme beim Spielen auf Android Phone. Nach einigen Versuchen stellte ich fest, dass bei aktiviertem Data Saver keine automatische Wiedergabe erfolgt:
Es gibt keine automatische Wiedergabe, wenn der Datensparmodus aktiviert ist. Wenn der Datensparmodus aktiviert ist, ist die automatische Wiedergabe in den Medieneinstellungen deaktiviert.
Quelle
quelle
Geben Sie Chrome: // flags in die Adressleiste ein
Suche: Autoplay
Stellen Sie dies auf " Keine Benutzergeste erforderlich ".
Starten Sie Chrome neu und Sie müssen keinen Code ändern
quelle