PHP serve MP4 - Chrome "Vorläufige Header werden angezeigt / Anfrage ist noch nicht fertig" Bug

9

Ich möchte das Abonnement der Nutzer überprüfen, bevor ich ihnen erlaube, das Video zu sehen. Aus diesem Grund verwende ich PHP, um mit Stripe zu interagieren für das Abonnement des Benutzers, und als verwendet PHP-Skript , um MP4 zum Browser zu dienen

Beim ersten Abspielen eines Videos in Google Chrome (mit HTML5-Player) funktioniert es einwandfrei ... Aber wenn ich das Video schließe und es wieder spiele, wird das Video nicht mehr abgespielt ... Ich kann die aktuelle Seite auch NICHT neu laden. Es ist wie Server funktioniert nicht mehr.

Wenn ich die erste Videoanfrage (diejenige, die abgespielt wurde) begutachte, sehe ich auf der Timing-Registerkarte: "ACHTUNG: Die Anfrage ist noch nicht beendet!" (Screenshot unten)

Wenn ich die zweite Videoanfrage (die nicht abgespielt wurde) anschaue, heißt es in der Kopfzeile "[caution sign] Vorläufige Kopfzeilen werden angezeigt" (Screenshot unten)

alles funktioniert wie erwartet in Safari oder Firefox

Hat jemand eine Idee, was hier vor sich geht? Die einzige Möglichkeit, das Video erneut abzuspielen, besteht darin, den aktuellen Tab zu schließen und die Seite erneut aufzurufen. Neuladen funktioniert nicht!

    
Keo Strife 22.09.2014, 13:58
quelle

3 Antworten

1

Ich schlage vor, dass Sie die folgende Funktion anstelle Ihres aktuellen "Streaming-Skripts" verwenden. Wenn Sie $ filename_output übergeben, wird es die Datei als Download bereitstellen, und es wird ansonsten streamen!

Es sollte in jedem Browser funktionieren.

serveFile ('/ wo / mein / vid.mp4');

%Vor%     
twicejr 20.04.2015 10:50
quelle
1

Nun, ich bin sicherlich ein faszinierendes Problem. Und es ist wirklich schwer, hier die Ursache zu finden. Aber wenn ich in deinem Fall wäre, würde ich nach zwei Dingen suchen.

  1. Zuerst würde ich sicherstellen, dass keep-alive ausgeschaltet ist KeepAlive Off auf Ihrer httpd.conf

  2. Testen Sie es anschließend mit dieser Konfiguration.

  3. Dann würde ich alle Browser-Caching deaktivieren:

    header ('Cache-Kontrolle: no-cache, no-store, muss-revalidate'); Kopfzeile ('Pragma: no-cache'); Kopfzeile ('Läuft ab: 0');

  4. Letzter Test danach.

Das Problem scheint entweder mit Keep-Alive oder Browser-Caching oder sogar mit beiden zu sein, aber ich kann nicht verstehen, warum es nur in Chrome erscheint. Stellen Sie als letztes Mittel sicher, dass Sie keine Erweiterungen verwenden, die Probleme wie Adblock verursachen könnten.

Ich hoffe, ich bringe Sie mit diesen Informationen:)

    
Jonid Bendo 21.04.2015 08:20
quelle
0

Ich hatte das gleiche Problem beim Streaming von Audiodateien. Am Ende habe ich mein Problem durch Zufall gelöst.

Ich habe irgendwann ein Skript erstellt, das die Bitrate der Dateien mit FFMPEG auf 128kbps reduziert (funktioniert auch für Videos, soweit ich weiß). Danach bemerkte ich bei der Inspektion in Chrom, dass alle meine Anfragen nach ein paar Sekunden abgeschlossen waren, im Gegensatz dazu, dass ich auf unbestimmte Zeit wie zuvor unvollständig blieb. Nicht sicher, ob dies für Sie nicht realisierbar ist, aber komprimierte die Dateien löste dieses Problem ebenso wie steigende Streaming-Geschwindigkeiten, daher empfehle ich dies sehr.

    
arian1123 15.08.2016 18:56
quelle